Semver Minor
- Improved
HTTPServerProtocolErrorHandlerandHTTPServerPipelineHandlerto interact better together.HTTPServerPipelineHandlernow also buffers protocol errors, preventing theChannelPipelinefrom seeing those errors until the correct sequence point.HTTPServerProtocolErrorHandlernow avoids emitting 400 errors if a partial response is already in flight. (#314) - Enhanced
WebSocketUpgraderto allow overriding the default maximum websocket frame size. (#315) - Made
IdleStateHandler.IdleStateEventpublic: it had accidentally been made internal. (#319) - Enhanced the
ChannelCoreprotocol withunwrapData, allowing externalChannelCoreimplementers to unwrapNIOAnywrappers. (#321) - Enhanced
BlockingIOThreadPoolwith arunWithActivemethod that automatically fails submitted tasks if the pool has been shut down. (#256) - Enhanced
NonBlockingFileIOstruct with a non-blockingopenFilemethod, allowing users to avoid making blockingopensyscalls. (#256) - Made
HTTPResponseHeadandHTTPRequestHeadmutable. (#324) - Enhanced all NIO core channels with support for registering already-active sockets (that is, sockets that have had
connect,listen, orbindcalled on them already) with NIO event loops, preventing the need to double-call some of these syscalls, an operation that is not always safe. (#285) - Enhanced the
ServerBootstrapandDatagramBootstrapwith awithBoundSocket(descriptor:)method that can take an already-bound socket and use it as the basis for a channel. (#285) - Enhanced the
ClientBootstrapwith awithConnectedSocket(descriptor:)method that can take an already-connected socket and use it as the basis for a channel. (#285)
Semver Patch
- Fixed issues in HTTP/1 framing where some requests and methods that never have bodies would not parse correctly if they were missing transport headers. (#298)
- Fixed issues in HTTP/1 framing where EOF was not being passed to the parser to help it decode request/response bodies that are terminated by EOF. (#298)
- Improved the performance of writing the HTTP/1 request-line and response-line in most cases. (#300)
- Reduced the number of heap allocations required to manage the state of pending stream writes. (#308)
- Started processing EOF and socket reset eagerly, rather than attempting to buffer it. This resolved a number of issues with hot-looping on
epoll_wait. (#286, #325) - Vastly reduced the number of allocations required to write/read integers to/from
ByteBuffers. (#316) - Improved error handling when
connectfails synchronously, preventing the FD from being registered with the selector. (#329) - Started failing pending connect promises before notifying the pipeline of change
channelInactive, instead of after. (#330) - Many fixes and improvements to the tests. (#311, #318, #326, #332, #331, #334)
- Miscellaneous code improvements (#312)