Slip in DefaultOioSocketChannelConfig (setAllowHalfClosure used to ignore argument)
[#1851] EmptyByteBuf.isWritable(..) and isReadable(...) should not throw IndexOutOfBoundsException
HttpRequestEncoder should append '/' to absolute path requests only when needed
[#1855] Try to calculate the correct amount of written bytes to update the ChannelProgressiveFuture
Introduce a new ChannelOption called DATAGRAM_CHANNEL_ACTIVE_ON_REGISTRATION. Related to [#1830]

This ChannelOption allows to tell the DatagramChannel implementation to be active as soon as they are registrated to their EventLoop. This can be used to make it possible to write to a not bound DatagramChannel.
The ChannelOption is marked as @deprecated as I'm looking for a better solution in master which breaks default behaviour with 4.0 branch.
Correctly handle automatically suspend/resume in ChunkedWriteHandler. Related to [#1861]

The old implementation was broken and could lead to pending message never be picked up again until the user either explicit called flush or
resumeTransfer().
Propagate channelWritabilityChanged() through the pipeline after flushing. Related to [#1861]
[#1865] Only use internalNioBuffer when one of the read* or write* methods are used. This is neccessary to prevent races as those can happen when a slice or duplicate is shared between different Channels
that are not assigned to the same EventLoop. In general get* operations should always be safe to be used from different Threads.

This aslo include unit tests that show the issue
CompositeByteBuf.isDirect() should return true if its only backed by direct buffers
Allow to flatten a CompositeByteBuf
Cache underlying ByteBuffer in ChannelOutboundBuffer to reduce object creation and so GC pressure