+ Making use of LeakTrackingByteBufferPool more consistent
+ Using MappedByteBufferPool.Tagged where appropriate in test cases
+ Adding leak count tracking to LeakDetector
+ Adding leak count tracking to LeakTrackingByteBufferPool
+ Renaming websocket LeakTrackingBufferPool to
LeakTrackingBufferPoolRule to reflect junit @Rule usage
+ Making websocket LeakTrackingBufferPoolRule always use
MappedByteBufferPool.Tagged
+ Fixed various grammar concerns
+ test performs a client upgrade + 2 websocket frames all at once.
not waiting for the upgrade response before sending those frames.
+ currently set to @Ignore until we can address how to copy this extra
buffer information from the Http side to the WebSocket side.
+ Exposing 2 new automatically added userProperties
* "javax.websocket.endpoint.localAddress"
* "javax.websocket.endpoint.remoteAddress"
these are both java.net.InetSocketAddress objects
+ Fixed competing cookie setters between WebSocketClient's use of
CookieStore and UpgradeRequest.setCookies()
+ Added some utility methods to LazyList (for lack of existence of
ListUtil or CollectionUtil in jetty-util)
+ Improved test case handling of frame reading (to prevent future
false failures)
+ Improved AbstractWebSocketConnection handling of close -> disconnect
to only trigger on successful write (or failure) of close frame flush
attempt.
+ Flusher close on all forms of disconnect, even half-closed.
+ Fixing bad assumptions in unit tests where the client would send a few
frames to test the protocol behavior followed by the close frame.
But the test expected the server to initiate the close, but this setup
of the tests would mean that the client initiated the close.
Introduced the automatic batch mode, akin to Jetty 8's WebSocket
implementation.
Now, if there are no more frames to process, and the previous frames
have been aggregated, FrameFlusher auto-flushes the aggregated frames.
This simplifies applications because they don't need to call flush()
explicitly.
Refactored FrameFlusher to handle aggregation of frames to support
JSR 356's batch mode.
Now FrameFlusher can aggregate frames as long as the FlushMode they
were sent is AUTO. When a frame that has FlushMode SEND arrives,
it will trigger the flush of the aggregate buffer (and eventually
also other queued frames).
A special BINARY frame is used to implement explicit flush()
invocations.
Refactored OutgoingFrames.outgoingFrame() to take an additional
parameter, FlushMode. This is in preparation for handling this new
parameter in FrameFlusher.
them in order and atomically.
Refactored PerMessageDeflateExtension and DeflateFrameExtension
introducing superclass CompressExtension that factors in common
functionalities.
them in order and atomically.
Modified DeflateFrameExtension to use a Queue and IteratingCallback to
make sure that frames are iteratively compressed in chunks.
The compression of the next chunk only happen when there is a callback
from the next outgoing layer.
+ Reworked extension negotiation to be more consistent with the changes
to the spec that Chrome 32 are introducing. Namely that first
extension to claim RSV bit wins, all other conflicting extensions are
ignored.
Cleanup WebSocket impl first
+ Logic for size on Generator was backwards.
+ Logic in Generator for RSV flags was incorrect.
+ Generalizing flagsInUse for Parser too
+ Hopefully final fix to deflate-frame
+ Splitting out extension named 'deflate-frame' (last spec'd standard) from
'x-webkit-deflate-frame' (standard in use by chrome + safari)
+ Copying payload in test cases for comparison reasons, as the reuse of
payloads by the implementation now means that the payload might be
masked by a random client side mask.
+ Cleaning up Abnormal Close handling for idle timeout cases
+ Fixing logging a tag
+ Fixing intermittent test failure in jsr EchoTest
+ Splitting Header bytes from payload bytes.
+ returning List<ByteBuffer> from WriteBytesProvider now
+ returning possibly more than 1 frame per
WriteBytesProvider.getByteBuffers() for submission to
Endpoint.write()'s gathered write of multiple bytebuffers
+ Renabling test
+ Using EventQueue from jetty-test-helper instead
+ Standarizing HttpResponseHeaderParser into websocket-common so that
remaining bytebuffer logic is maintained in one place.
+ Making BlockingClient also use HttpResponseHeaderParser
+ Refactored websocket-commons Session creation to be factory based
+ Introduced new org.eclipse.jetty.websocket.common.SessionFactory
+ Made websocket-client and websocket-server use new SessionFactory
+ Introduced JsrSessionFactory to allow for consistent Session creation
even in the Jsr (no more duplciate Session creation)
+ Using JsrSessionFactory in javax-websocket-client-impl
+ Introducing PathMappings to hopefully replace jetty-util's PathMap
+ Using standard ClientEndpointConfig when appropriate.
+ Introducing JettyClientEndpointConfig for annotation based
configurations
+ Renaming EchoSocket used in javax.websocket client testing to
JettyEchoSocket to better indicate that its the Jetty server side
implementation and not the javax.websocket client side socket.
+ Changed IncomingFrames.incomingError() parameter from
WebSocketException to Throwable to match behavior on the JSR
+ Removing deprecated methods from Session
+ Fixing client side UpgradeConnection to handle extension via new
ExtensionStack object
+ Making ExtensionStack.getNegotiatedExtensions() return
List<ExtensionConfig> instead of List<String>
+ Fixing tests that relied on changes
* Using new IOState object in AbstractWebSocketConnection to better
manage close handshake state and replies.
* Cleaning up many bad BufferPool.release() calls against ByteBuffers
that didn't arrive from BufferPool.acquire()
* Removing many ByteBuffer.wrap() calls.
* Fixing FrameCompression / MessageCompression extension handling
of ByteBuffers
+ Using ForkInvoker from util
+ Using FrameBytes logic from SPDY
+ Fixing bad flush logic
+ Fixing lazy BufferPool.release() logic
+ Fixing Buffer reuse issue
+ Fixing BlockheadServer to use ExtensionStack
+ Moving WriteResultFuture helper classes out of tests into main
+ Introducing common IOState handling for common close handshake use