Trustin Lee
a0714d1da3
Revert "+= won't let compile optimize String concats"
...
This reverts commit 4dc78c10ee
.
2014-01-19 14:39:29 +09:00
Norman Maurer
1f049367a4
Make use of ByteBufProcessor for extract initial line and headers
...
This gives some nice performance boost as readByte() is quite expensive because of the index / replay checks.
2014-01-16 20:14:28 +01:00
Stephane Landelle
4dc78c10ee
+= won't let compile optimize String concats
2014-01-16 20:09:11 +01:00
Michael Nitschinger
75cb91ed0c
Rename HttpDataFactory.*datas to *data. Fixes #2094
2014-01-16 09:52:25 +01:00
Daniel Bevenius
6a954d5b47
Adding a Cross Origin Resource Sharing (CORS) handler.
2014-01-16 07:58:32 +01:00
Norman Maurer
29484a44d5
Fix inspector warnings
2014-01-15 17:02:04 +01:00
Veebs
4c0be9b57c
Add HttpChunkedInput for easier streaming of chunked content
2014-01-15 15:33:29 +09:00
Trustin Lee
2f9ad15d3f
Use the source frame's allocator instead of the unpooled allocator
2014-01-14 14:22:06 +09:00
Trustin Lee
ae6aea794c
Fix checkstyle
2014-01-13 23:35:52 +09:00
Trustin Lee
1a54ff843c
Port the changes in SpdyHeaderBlockRawDecoder to master & 4.0
...
Somehow it slipped away.
2014-01-13 23:07:51 +09:00
Trustin Lee
ad70e69e47
Port the changes in SpdyHeaderBlockZlibEncoder to master & 4.0
...
Somehow it slipped away.
2014-01-13 23:01:07 +09:00
Trustin Lee
e1ab46f56a
Fix a bug where SpdyHeaderBlockZlibDecoder fails to decompress
...
- Forward-port 4c35b593c1
, originally written by @wgallagher
- Fixes #2077
2014-01-13 22:40:34 +09:00
Veebs
a389d69ba8
Replaced deprecated 'sendUnsupportedWebSocketVersionResponse()' with 'sendUnsupportedVersionResponse()'
2014-01-13 06:33:25 +01:00
Norman Maurer
4ee81d9235
Cleanup and remove get prefix of method to be more inline with our API
2014-01-11 14:19:43 +01:00
Leonardo Freitas Gomes
7324ce6fde
Improves SelectedProtocol enum to avoid boilerplate on subclasses
...
NPN server providers return a String version of the negotiated protocol
and the getProtocolByName method allows to easily get an instance of
the SelectedProtocol enum and avoid the need for a switch statement in
each subclass to match the String against the enum value.
2014-01-11 13:54:46 +01:00
Trustin Lee
0244e35fa6
Fix a bug where HttpObjectDecoder produces LastHttpContent after entering BAD_MESSAGE state
...
- Fixes #2103
- Added LastHttpContent.EMPTY_LAST_CONTENT.toString() for athestic reasons.
2014-01-10 16:16:02 +09:00
Norman Maurer
2670bb4aae
[ #2090 ] Correctly format DefaultHttpRequest#toString()
2014-01-06 17:34:19 +01:00
Norman Maurer
906ac233a2
[ #2088 ] Introduce sendUnsupportedVersionResponse(...) methods which allows to use the ChannelFuture/ChannelPromise to get notified once the response was send.
...
Also mark the old method as deprecated.
2014-01-03 11:13:05 +01:00
Trustin Lee
ddacf784c1
Use LinkedHashSet for HttpHeaders.names() and add Javadoc about the performance of names() and entries()
2013-12-22 19:18:27 +09:00
Trustin Lee
906e2d2b37
Fix a leak in HttpResponseDecoderTest
2013-12-19 01:13:02 +09:00
Norman Maurer
ca1c82642a
Limit the access of the HttpHeaders for performance reasons
2013-12-18 23:08:39 +09:00
Trustin Lee
d35c2010c4
Stop decoding after protocol upgrade / Do not use singleDecode option
2013-12-18 23:08:32 +09:00
Trustin Lee
fa336db891
Remove unnecessary code from HttpObjectDecoder and re-enable all HTTP tests
...
- Since Netty 4, HTTP decoder does not generate a full message at all. Therefore, there's no need to keep separate states for the content smaller than maxChunkSize.
- maxChunkSize must be greater than 0. Setting it to 0 should not disable chunked encoding. We have a dedicated flag for that.
- Uncommented the tests that were commented out for an unknown reason, with some fixes.
- Added more tests for HTTP decoder.
- Removed the Ignore annotation on some tests.
2013-12-18 23:08:26 +09:00
Trustin Lee
94d6e44bba
Change the return type of EmbeddedChannel.read*() from Object to an ad-hoc type parameter
...
.. so that there's no need to explicitly down-cast.
Fixes #2067
2013-12-16 22:22:47 +09:00
Trustin Lee
61ed9476ae
Improve the unit test for #1742
2013-12-16 21:55:14 +09:00
Trustin Lee
af07cc95fa
Fix a bug where HttpObjectAggregator fails to send a '100 Continue' response
...
- Fixes #1742
2013-12-16 21:45:10 +09:00
Frederic Bregier
d7faf042a1
Add support for 'charset' property for multipart boundaries
...
- Fixes #2004
2013-12-16 14:30:10 +09:00
Jeff Pinner
f41e2f830d
Merge pull request #2064 from jpinner/spdy_minor_version
...
SPDY: add SETTINGS_MINOR_VERSION
2013-12-15 21:10:10 -08:00
Jeff Pinner
78f3ee3396
SPDY: add SETTINGS_MINOR_VERSION
2013-12-14 10:27:14 -08:00
Norman Maurer
48b416f112
Optimize encoding of websocket frames by merge if possible
2013-12-13 11:39:39 +01:00
Trustin Lee
b6ac202c15
Fix buffer leak in AbstractMemoryHttpData
2013-12-07 11:13:50 +09:00
Norman Maurer
643ce2f8c0
Fix all leaks reported during tests
...
- One notable leak is from WebSocketFrameAggregator
- All other leaks are from tests
2013-12-07 00:47:30 +09:00
Trustin Lee
f2bb5f1b4c
Allow specifying a custom charset for a multipart Attribute
...
- Fixed #2025
- Adapted from @BabyDuncan's pull request: #2031
- Overall ugliness clean-up
2013-12-05 11:23:23 +09:00
Norman Maurer
ec8967f9ff
Replace usage of StringBuilder by AppendableCharSequence for performance reasons
2013-12-03 14:47:11 +01:00
Norman Maurer
5106382b44
Port the HTTP / RTSP encoder and decoder from 4.0 branch as those are just faster.
2013-12-02 20:53:39 +01:00
Norman Maurer
4a680a3b49
Remove the use of ThreadLocal for performance reasons
2013-11-29 19:18:27 +01:00
Norman Maurer
4ea39aa9df
Fix test
2013-11-28 13:50:08 +01:00
Norman Maurer
dab954dfb5
Merge buffers for performance reasons if possible when encode http requests/responses.
2013-11-28 13:48:34 +01:00
Trustin Lee
387f6917af
Add test case for HttpHeaders.equalsIgnoreCase(...)
2013-11-28 18:24:03 +09:00
Trustin Lee
d4fd7ff458
Fix NPE raised by HttpHeaders.equalsIgnoreCases() when one of its arguments is null
2013-11-28 15:51:13 +09:00
Norman Maurer
b067566a7c
Optimize the decoding and encoding of HTTP for better performance
...
* No need to calculate the hash of known header names multiple times
* Optimize header encoding
* Also optimize the encoding of known header values
* Optimize encoding of HTTP method, version and status
2013-11-27 12:35:58 +01:00
Trustin Lee
110745b0eb
Remove the distinction of inbound handlers and outbound handlers
...
- Fixes #1808
- Move all methods in ChannelInboundHandler and ChannelOutboundHandler up to ChannelHandler
- Remove ChannelInboundHandler and ChannelOutboundHandler
- Deprecate ChannelInboundHandlerAdapter, ChannelOutboundHandlerAdapter, and ChannelDuplexHandler
- Replace CombinedChannelDuplexHandler with ChannelHandlerAppender
because it's not possible to combine two handlers into one easily now
- Introduce 'Skip' annotation to pass events through efficiently
- Remove all references to the deprecated types and update Javadoc
2013-11-27 17:31:28 +09:00
Norman Maurer
10e3651bf8
[ #2006 ] Correctly handle HttpMessage / HttpContent implementations
2013-11-26 10:57:50 +01:00
Norman Maurer
98845cb392
[ #2005 ] Allow to use HttpContentDecompressor in strict mode
2013-11-26 08:20:56 +01:00
Norman Maurer
daeaaf25a9
Respect validateHeaders when duplicate/copy the response/request
2013-11-26 08:12:58 +01:00
Norman Maurer
279e2e3cd2
Optimize DefaultHttpHeaders.contains(...)
2013-11-24 14:42:33 +01:00
Norman Maurer
8eb88b7889
Optimize check for equals header name and value
2013-11-24 14:32:55 +01:00
Norman Maurer
a01f246091
Fix compile errors caused by last commit
2013-11-24 10:32:05 +01:00
Norman Maurer
f84a50d3cb
Use the same HttpHeaders optimisations in master as in 4.0
2013-11-24 10:19:15 +01:00
Norman Maurer
0fa6dcefc5
[ #1682 ] HttpVersion.valueOf(...) should not convert to uppercase
2013-11-23 20:35:47 +01:00
Trustin Lee
132af3a485
Introduce ChannelHandlerInvoker, dedeciated for invoking event handler methods, and move most handler invocation code in ChannelHandlerContext to the default ChannelHandlerInvoker implementation
...
- Fixes #1912
- Add ChannelHandlerInvoker and its default implementation
- Add pipeline manipulation methods that accept ChannelHandlerInvoker
- Rename Channel(Inbound|Outbound)Invoker to
Channel(Inbound|Outbound)Ops to avoid confusion
- Remove the Javadoc references to the package-private interfaces
2013-11-21 14:14:23 +09:00
Daniel Bevenius
624573971f
Support for empty HTTP request header values.
2013-11-17 15:49:14 +01:00
Norman Maurer
6306b83e2d
[ #1982 ] Limit the usage of ThreadLocal.get() for performance reasons
2013-11-14 09:48:33 +01:00
Norman Maurer
41ccbfd388
Also allow to disable header validation via HttpServerCodec and HttpClientCodec. Related to [ #1981 ]
2013-11-14 09:37:57 +01:00
Daniel Bevenius
7cc2507076
Adding check for zero readable bytes in WebSocket08FrameDecoder decode.
2013-11-13 07:11:05 +01:00
Trustin Lee
1f0a73c238
Fix checkstyle
2013-11-04 19:52:10 +09:00
Trustin Lee
26415b8f4c
Use StringUtil.simpleClassName(..) instead of Class.getSimpleName() where necessary
...
- Class.getSimpleName() doesn't render anonymous classes very well
- + some minor cleanup
2013-11-04 19:42:33 +09:00
Trustin Lee
e01a444578
Fix some inspector warnings
2013-11-04 18:03:32 +09:00
fredericBregier
cf1970c31b
Split HttpPostRequestDecoder into HttpPostStandardRequestDecoder and HttpPostMultipartRequestDecoder / Add HttpData.maxSize
...
- Related issues: #1937 #1938 and #1946
- Add InterfaceHttpPostRequestDecoder and Make HttpPostRequestDecoder implement it
- HttpPostRequestDecoder actually delegates itself to HttpPostStandardRequestDecoder or HttpPostMultipartRequestDecoder
- Remove IncompatibleDataDecoderException because it's not thrown anywhere now
2013-11-04 17:57:13 +09:00
Trustin Lee
81243c1524
Instead of complicated capacity estimation, just use thread local buffers.
...
Fixes #1951
2013-11-02 19:22:08 +09:00
Trustin Lee
e987ff63b1
Create StringBuilder with saner initial capacity when encoding a Cookie
...
Fixes #1951
2013-11-02 19:16:23 +09:00
Trustin Lee
0dda7df344
Add a shortcut method for collision-free naming
2013-10-25 20:01:31 +09:00
Trustin Lee
dc009b2c2c
Replace UniqueName with Constant and ConstantPool
...
- Proposed fix for #1824
UniqueName and its subtypes do not allow getting the previously registered instance. For example, let's assume that a user is running his/her application in an OSGi container with Netty bundles and his server bundle. Whenever the server bundle is reloaded, the server will try to create a new AttributeKey instance with the same name. However, Netty bundles were not reloaded at all, so AttributeKey will complain that the name is taken already (by the previously loaded bundle.)
To fix this problem:
- Replaced UniqueName with Constant, AbstractConstant, and ConstantPool. Better name and better design.
- Sctp/Udt/RxtxChannelOption is not a ChannelOption anymore. They are just constant providers and ChannelOption is final now. It's because caching anything that's from outside of netty-transport will lead to ClassCastException on reload, because ChannelOption's constant pool will keep all option objects for reuse.
- Signal implements Constant because we can't ensure its uniqueness anymore by relying on the exception raised by UniqueName's constructor.
2013-10-25 19:21:53 +09:00
Trustin Lee
9b779e50ba
Make all mutable fields in WebSocketClientHandshaker volatile
...
- Fixes #1945
2013-10-24 17:37:39 +09:00
Norman Maurer
afa5df6bf0
[ #1933 ] Correctly add the wsencoder before the httpencoder as the httpencoder also handle ByteBuf
2013-10-19 20:53:57 +02:00
Norman Maurer
3367e51882
More robust pipeline manipulation while upgrading to WebSocket
...
- This commit allows a user to write its first web socket frame right after calling WebSocketServerHandshaker.handshake() rather than adding a listener to the future it returns.
- Should fix #1933
2013-10-18 18:23:36 +02:00
Jeff Pinner
e2e00689d9
SPDY: code cleanup
2013-10-17 08:21:35 -07:00
Trustin Lee
762e40f357
Make sure HttpVersion checks if the version string is not empty
...
.. which was the behavior in 3.x.
2013-10-17 20:27:41 +09:00
Jeff Pinner
949a6968ee
SPDY: remove SPDY/2 support
2013-10-14 07:27:50 -07:00
Norman Maurer
1f1a627a22
No need to slice before copy. Part of #1848
2013-10-12 20:06:17 +02:00
Michael Grove
036f0859bd
copy all sliced buffers, fixes #1848
2013-10-12 20:06:04 +02:00
Norman Maurer
79ff26d221
Fix compile error
2013-10-11 22:06:40 +02:00
Bill Gallagher
be959dc4b7
Merge pull request #1918 from wgallagher/entries
...
bring back entries()
2013-10-11 13:04:04 -07:00
Bill Gallagher
65f5b15a42
bring back entries()
2013-10-11 15:49:33 -04:00
Norman Maurer
beb6d37603
Add HttpHeaders.contains(name, value, ...) to save creation of LinkedList for simple checks
2013-10-11 21:46:05 +02:00
Bill Gallagher
b72761e99c
minor gc optimization: better DefaultSpdyHeaders.iterator()
2013-10-11 20:36:14 +02:00
Bill Gallagher
951a65e57e
minor gc optimization: better DefaultHttpHeaders.iterator()
2013-10-11 20:34:27 +02:00
Norman Maurer
2366c2846d
[ #1881 ] Use correct field name in NullPointerException
2013-10-04 09:54:21 +02:00
Norman Maurer
4bca1c3fe3
[ #1876 ] Make use of proper state machine in WebSocket08FrameDecoder for performance reasons
2013-10-01 10:20:01 +02:00
Norman Maurer
1ecd1e01a5
[ #1880 ] Use ByteBufAllocator when read bytes into new chunks
2013-10-01 09:27:02 +02:00
Norman Maurer
5a59cb9fb7
[ #1879 ] Correctly validate close frame
2013-10-01 07:32:07 +02:00
Norman Maurer
aaafdf909d
[ #1878 ] Fix leak of ByteBuf when masked payload is used
2013-10-01 07:18:16 +02:00
Norman Maurer
328f67fdfe
[ #1874 ] WebSocket08FrameDecoder may leak memory if channel is closed before the full frame was received
2013-09-30 20:43:30 +02:00
Jeff Pinner
321990a115
SPDY: add SPDY/3.1 support
...
- with Michael Schore <mschore@twitter.com>
2013-09-28 12:58:44 +02:00
Arron Norwell
5a0d7fe19a
HttpRequestEncoder should append '/' to absolute path requests only when needed
2013-09-22 13:57:10 +02:00
Norman Maurer
c0b9ef9386
[ #1833 ] Add testcase for fix
2013-09-14 11:53:30 +02:00
Phillip Schichtel
d885394b8a
[ #1833 ] Replace ; with & only in the QueryString and not the whole URI
2013-09-14 11:52:39 +02:00
Norman Maurer
12f325767c
[ #1819 ] Remove HTTP compressor and decompressor from the pipeline after websockets handshake completes
2013-09-09 11:55:25 +02:00
Norman Maurer
c89f1b0a03
[ #1818 ] Pass through message as they are when no compression is needed
2013-09-09 11:43:45 +02:00
Norman Maurer
198dde33b3
Optimize the http-codec to be much faster then before.
...
This includes the following changes:
* Rewrite HttpObjectDecoder to use ByteToMessageDecoder
* Optimize parsing of the header
* Allow to disable the header validation for performance reason
* Not need to validate kwown header names and values
* Minimize access of ThreadLocals
* Optimize parsing of initial line
2013-09-05 20:21:04 +02:00
Norman Maurer
e46ba9e8de
Move encode of chunked content to an extra method, this allows for inline. Related to #1812
...
encode of chunked content is not the most common pattern so moving it to an extra method makes it possible to inline the rest as it is a smaller method now.
2013-09-05 10:15:51 +02:00
Norman Maurer
81258e9a4e
[ #1710 ] Add missing duplicate() overrides in interfaces
2013-09-02 10:02:12 +02:00
Derek Troy-West
b669237bac
HTTP Chunk, wrong delimiter written
2013-08-27 18:11:08 +09:00
Mike Schore
005d33a761
SPDY: allow MAX_CONCURRENT_STREAMS to be set to 0
2013-08-24 16:55:14 +02:00
Jeff Pinner
d1f592575a
SPDY: ensure channel close happens after outbound message is written
2013-08-15 20:31:35 +02:00
Norman Maurer
cc12e40065
[ #1730 ] Correctly release resources in MixedFileUpload after switching from Memory to Disk
2013-08-12 07:23:00 +02:00
Norman Maurer
b9e279064d
Minimize buffer allocation as it is expensive if no pooled buffers are used
2013-08-11 21:55:24 +02:00
Norman Maurer
60b889375c
Allow to also write FileRegion and ChunkInput when using HTTP chunked. Fixes [ #1693 ]
2013-08-07 09:37:23 +02:00
Norman Maurer
3b94154893
[ #1690 ] Correctly return first header value on DefaultHttpHeaders.get(..)
2013-08-06 07:12:45 +02:00
Norman Maurer
20a010a2ea
Small optimization in DefaultHttpHeaders.clear()
2013-08-05 21:41:07 +02:00