{"push_id":733594245,"size":44,"distinct_size":44,"ref":"refs/heads/4.1","head":"209784e0445fb6993c4920dc9628d109e1a959e7","before":"7f8caeb8a23403c59e9abd578053ea7bcba7b0ec","commits":[{"sha":"e1e8a59ad9f01dbe52f5cd2768f2c43225e95c11","author":{"email":"9bfbe6b1d405b98724f07d6351fbf3df58d108f6@expedia.com","name":"a-mkarjalainen"},"message":"Fix broken constructor chaining for FixedChannelPool class.\n\nMotivation:\n\nOnly one of the three FixedChannelPool constructors checks for the constructor\narguments. Therfore it was possible to create a pool with zero maxConnections.\n\nThis change chains all constructors together, so that the last one\nin the chain always checks the validity of the arguments, regardless of the\nconstructor used.\n\nResult:\n\nIt is no longer possible to create a FixedChannelPool instance with invalid\nmaxConnections or maxPendingAcquires parameters.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/e1e8a59ad9f01dbe52f5cd2768f2c43225e95c11"},{"sha":"1ecc37fbb23eb1ee1d323f95198527cc4f8cbaa7","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Better error when first HTTP/2 frame is not SETTINGS\n\nMotivation:\n\nBootstrap of the HTTP/2 can take a lot of paths and a lot of things can go wrong in the initial handshakes leading up to establishment of HTTP/2 between client and server. There have been many times where handshakes have failed silently, leading to very cryptic errors that are hard to debug.\n\nModifications:\n\nChanged the HTTP/2 handler and decoder to ensure that the very first data on the wire (WRT HTTP/2) is SETTINGS/preface+SETTINGS. When this is not the case, a connection error is thrown with the bytes that were found instead.\n\nResult:\n\nFixes #3880","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/1ecc37fbb23eb1ee1d323f95198527cc4f8cbaa7"},{"sha":"05ce33f5ca8f5e71e9e26351151c4e4f6d5da96d","author":{"email":"a7633af3c87391d70cbf6224f8db6fa997c866eb@google.com","name":"Louis Ryan"},"message":"Make the flow-controllers write fewer, fatter frames to improve throughput.\n\nMotivation:\n\nCoalescing many small writes into a larger DATA frame reduces framing overheads on the wire and reduces the number of calls to Http2FrameListeners on the remote side.\nDelaying the write of WINDOW_UPDATE until flush allows for more consumed bytes to be returned as the aggregate of consumed bytes is returned and not the amount consumed when the threshold was crossed.\n\nModifications:\n- Remote flow controller no longer immediately writes bytes when a flow-controlled payload is enqueued. Sequential data payloads are now merged into a single CompositeByteBuf which are written when 'writePendingBytes' is called.\n- Listener added to remote flow-controller which observes written bytes per stream.\n- Local flow-controller no longer immediately writes WINDOW_UPDATE when the ratio threshold is crossed. Now an explicit call to 'writeWindowUpdates' triggers the WINDOW_UPDATE for all streams who's ratio is exceeded at that time. This results in\n  fewer window updates being sent and more bytes being returned.\n- Http2ConnectionHandler.flush triggers 'writeWindowUpdates' on the local flow-controller followed by 'writePendingBytes' on the remote flow-controller so WINDOW_UPDATES preceed DATA frames on the wire.\n\nResult:\n- Better throughput for writing many small DATA chunks followed by a flush, saving 9-bytes per coalesced frame.\n- Fewer WINDOW_UPDATES being written and more flow-control bytes returned to remote side more quickly, thereby improving throughput.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/05ce33f5ca8f5e71e9e26351151c4e4f6d5da96d"},{"sha":"391df0547b83099a7f89bbee9d986a98ae387e8a","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Fixing broken build in the 4.1 branch.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/391df0547b83099a7f89bbee9d986a98ae387e8a"},{"sha":"bad8e0d6aba52470046f463cb2069e16a1ad9bb0","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Correctly handle errors when using OpenSSL\n\nMotivation:\n\nWe used ERR_get_error() to detect errors and missed to handle different errors. Also we missed to clear the error queue for a thread before invoke SSL operations,\nthis could lead to detecting errors on different OpenSslEngines then the one in which the error actual happened.\n\nModifications:\n\nExplicit handle errors via SSL.get_error and clear the error code before SSL operations.\n\nResult:\n\nCorrectly handle errors and no false-positives in different OpenSslEngines then the one which detected an error.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/bad8e0d6aba52470046f463cb2069e16a1ad9bb0"},{"sha":"c53dbb748e392914b4cebb43258f4500e2079925","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Add ProtocolDetectionResult and use it in HAProxyMessageDecoder for allow detect HAProxy protocol.\n\nMotivation:\n\nSometimes it is useful to detect if a ByteBuf contains a HAProxy header, for example if you want to write something like the PortUnification example.\n\nModifications:\n\n- Add ProtocolDetectionResult which can be used as a return type for detecting different protocol.\n- Add new method which allows to detect HA Proxy messages.\n\nResult:\n\nEasier to detect protocol.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/c53dbb748e392914b4cebb43258f4500e2079925"},{"sha":"b39223e295e1d56ac3e1054655ab0baffd0101eb","author":{"email":"d18be4bb8acd85bed49c989e8f4b08b1455d65d1@google.com","name":"nmittler"},"message":"Fixing exception in StreamBufferingEncoderTest.\n\nMotivation:\n\nNPE doesn't cause the tests to fail but should get fixed.\n\nModifications:\n\nModified the StreamBufferingEncoderTest to mock the ctx to return a promise.\n\nResult:\n\nFixes #3905","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/b39223e295e1d56ac3e1054655ab0baffd0101eb"},{"sha":"ba6319eb6cfb41a67951f63d7791da4132daa823","author":{"email":"a7633af3c87391d70cbf6224f8db6fa997c866eb@google.com","name":"Louis Ryan"},"message":"Fix FixedCompositeByteBuf handling when copying to direct buffers and streams\n\nMotivation:\n\nFixedCompositeByteBuf does not properly implement a number of methods for\ncopying its content to direct buffers and output streams\n\nModifications:\n\nReplace improper use of capacity() with readableBytes() when computing offesets during writes\n\nResult:\n\nCopying works correctly","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/ba6319eb6cfb41a67951f63d7791da4132daa823"},{"sha":"8c90d602d7f02ae36f1e93714006c1af0bcfbb87","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3899] Fix javadoc to use netty 4 API.\n\nMotivation:\n\nThe javadoc of ByteBuf contained some out-dated code.\n\nModifications:\n\nUpdate code example in javadoc to use netty 4+ API\n\nResult:\n\nCorrect javadocs","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/8c90d602d7f02ae36f1e93714006c1af0bcfbb87"},{"sha":"ae163d687da1819cc56292c6714860a439dfd54b","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3896] Unpooled.copiedBuffer(ByteBuffer) and copiedBuffer(ByteBuffer...) is not thread-safe.\n\nMotivation:\n\nAs we modify the position of the passed in ByteBuffer's this methods are not thread-safe.\n\nModifications:\n\nDuplicate the input ByteBuffers before copy the content to  byte[].\n\nResult:\n\nUnpooled.copiedBuffer(ByteBuffer) and copiedBuffer(ByteBuffer...) is now thread-safe.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/ae163d687da1819cc56292c6714860a439dfd54b"},{"sha":"dd6ac55fa02ca3127df8df195cf21a649bd55bde","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"ServerBootstrap.handler(...) will add handler before Channel is registered.\n\nMotivation:\n\nIf you set a ChannelHandler via ServerBootstrap.handler(...) it is added to the ChannelPipeline before the Channel is registered. This will lead to and IllegalStateException if a user tries to access the EventLoop in the ChannelHandler.handlerAdded(...) method.\n\nModifications:\n\nDelay the adding of the ChannelHandler until the Channel was registered.\n\nResult:\n\nNo more IllegalStateException.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/dd6ac55fa02ca3127df8df195cf21a649bd55bde"},{"sha":"11f9e9084b2da5e7a0e48c6a5c86be0f41a584de","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3921] EmbeddedChannel should add ChannelHandlers once registered\n\nMotivation:\n\nCurrently in EmbeddedChannel we add the ChannelHandlers before the Channel is registered which leads to have the handlerAdded(...) callback\nbe called from outside the EventLoop and also prevent the user to obtain a reference to the EventLoop in the callback itself.\n\nModifications:\n\nDelay adding ChannelHandlers until EmbeddedChannel is registered.\n\nResult:\n\nCorrectly call handlerAdded(...) after EmbeddedChannel is registered.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/11f9e9084b2da5e7a0e48c6a5c86be0f41a584de"},{"sha":"0f6559d188f46be591902091f8150ad36c655c4f","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3780] Handle ChannelInitializer exception in exceptionCaught()\n\nMotivation:\n\nAt the moment we directly closed the Channel when an exception accoured durring initChannel(...) without giving the user any way to do extra or special handling.\n\nModifications:\n\nHandle the exception in exceptionCaught(...) of the ChannelInitializer which will by default log and close the Channel. This way the user can override this.\n\nResult:\n\nMore felixible handling of exceptions.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/0f6559d188f46be591902091f8150ad36c655c4f"},{"sha":"0f95b85ec2770ce81dafb75329cb4b03d94315dc","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Ensure OpenSslSession informations can be retrieved even after shutdown\n\nMotivation:\n\nIf a user tries to access various informations on the OpenSslSession after the SSLEngine was closed it will not work if these were not accessed before as we lazy init most of them.\n\nModifications:\n\nDirectly populate the whole OpenSslSession once the handshake is complete and before the user is notified about it.\n\nResult:\n\nOpenSslSession informations are avaible until it is GC'ed.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/0f95b85ec2770ce81dafb75329cb4b03d94315dc"},{"sha":"ba84a596e2d2976449d86b4c28a2b9f5937c1c84","author":{"email":"10c4313a80ab1a30b00f603dae661f9ea4ae4a14@gmail.com","name":"Ryo Okubo"},"message":"Allow servers to specify ENABLE_PUSH to 0 explicitly\n\nMotivation:\n\nIf server sends SETTINGS with ENABLE_PUSH, its handled as\nPROTOCOL_ERROR in spite of the value. But the value specified to\n0 may be allowed in RFC7540.\n\nModifications:\n\nCheck whether ENABLE_PUSH sent from a server is 0 or not.\n\nResult:\n\nWhen server specifies ENABLE_PUSH to 0 explicitly, client doesn't\nhandle it as PROTOCOL_ERROR.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/ba84a596e2d2976449d86b4c28a2b9f5937c1c84"},{"sha":"ecacd11b06f91a2713db8353104e5370f1e50066","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 limit header accumulated size\n\nMotivation:\nThe Http2FrameListener requires that the Http2FrameReader accumulate ByteBuf objects. There is currently no way to limit the amount of bytes that is accumulated.\n\nMotiviation:\n- DefaultHttp2FrameReader supports maxHeaderSize which will fail fast as soon as the maximum size is exceeded.\n- DefaultHttp2HeadersDecoder will respect the return value of endHeaderBlock() and fail if the max size is exceeded.\n\nResult:\nFrames which carry header data now respect a maximum number of bytes that can be accumulated.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/ecacd11b06f91a2713db8353104e5370f1e50066"},{"sha":"a7f83aa23ebe14669119aadb2bbd3012f94fdf64","author":{"email":"a8c456a6b54fc41d6e961143bac21b6e0910a8a8@apple.com","name":"Scott Mitchell"},"message":"HTTP/2 Example Needs FullHttpRequest\n\nMotivation:\nThe HTTP/2 hello world example server should be expecting a FullHttpRequest when falling back to HTTP/1.x mode.\n\nModifications:\n- HelloWorldHttp1Handler should process FullHttpRequestObjects\n- Http2ServerInitializer should insert an HttpObjectAggregator into the pipeline if no upgrade was attempted\n\nResult:\nResponses from the HelloWorldHttp1Handler should only come after full HTTP requests are received.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/a7f83aa23ebe14669119aadb2bbd3012f94fdf64"},{"sha":"61b9da470a777e979a269b56d19d233b333baa44","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"[#3945] Http2ConnectionHandler breaks channelReadComplete pipeline notification\n\nMotivation:\n\nHttp2ConnectionHandler missed to forward channelReadComplete(...) events.\n\nModifications:\n\nEnsure we notify the next handler in the pipeline via ctx.fireChannelReadComplete().\n\nResult:\n\nCorrectly forwarding of event.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/61b9da470a777e979a269b56d19d233b333baa44"},{"sha":"a9d2b5cef00914c80c158759a5892e1d71423bce","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Skip empty buffers and not pass these to BIO_write\n\nMotivation:\n\nWhen BIO_write is called with an empty buffer it will return 0 for which we call ERR_clear_error(). This is not neccessary as we should just skip these buffers. This eliminates a lot of overhead.\n\nModifications:\n\nSkip empty src buffers when call unwrap(...).\n\nResult:\n\nLess overhead for unwrap(...) when called with empty buffers.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/a9d2b5cef00914c80c158759a5892e1d71423bce"},{"sha":"18356911ab86a3e4fa5e5fcc2e9a21a641a71b47","author":{"email":"330e4303411e1fbd4ff825c4416851d277ea7a5f@apple.com","name":"Norman Maurer"},"message":"Stop calling BIO_write once internal buffer is full.\n\nMotivation:\n\nPrevious we called BIO_write until either everything was written into it or it returned an error, which meant that the buffer is full. This then needed a ERR_clear_error() call which is expensive.\n\nModifications:\n\nBreak out of writing loop once we detect that not everything was written and so the buffer is full.\n\nResult:\n\nLess overhead when writing more data then the internal buffer can take.","distinct":true,"url":"https://api.github.com/repos/mikkokar/netty/commits/18356911ab86a3e4fa5e5fcc2e9a21a641a71b47"}]}