+ CompressExtension implementations are now part of the Jetty LifeCycle
+ Deflater and Inflater implementations are only instantiated when
needed.
+ CompressExtension.doStop() LifeCycle will call .end() on instantiated
Deflater and Inflater implementations
+ Removing SessionListener
+ Work in CDI layer for WebSocketContainerScope is reused for
session tracking on the parent scope of the WebSocketSession only.
no more multi-listener behavior
+ Reworked JsrSession ID behavior to not be based on AtomicLong
+ AbstractWebSocketConnection now has .hashCode and .equals
+ Reworked PerMessageDeflateExtensionTest to test with different
modes (http/ws vs https/wss), different messages sizes, and
input buffer sizes (these various configurations do trigger
the reported bug)
+ Made CompressExtension loop over the input buffer if the buffer
happens to not be entirely consumed.
+ WebSocket Connection objects no longer need to
hold a reference to the WebSocketSession object
eliminating another reference to the WebSocketSession
that could hold GC efforts to clean it up
+ Reducing looping references Session -> otherObj -> Session
+ Using Container LifeCycle bean management more consistently
+ All sessions are now child beans
+ A stopped session that hasn't been closed, will auto-close now
+ Using SessionListener more consistently
+ Client ConnectionManager no longer tracks Sessions
+ EventDriver stop cleans up its Session references
+ Moving all DummyConnection test classes to websocket-common:tests
+ Calling onSessionOpen() before App.onOpen()
This helps, as there is a race for the onSessionOpen()
in the original behavior with short lived sockets.
The short lived socket could handle onSessionClosed()
before onSessionOpen() had a chance, making the close
fail to remove the session from openSessions, and then
the slower add occurs later, adding it into the openSession
+ Minor cleanup in IOState
+ Fixed CloseStatus.trimMaxReasonLength() to perform trim correctly
+ Deprecated CloseStatus.trimMaxReasonLength() because it creates
to many objects
+ Removed use of CloseStatus.trimMaxReasonLength() in implementation
code
+ Improved CloseInfo ...
+ tracks reason via utf8 byte array (not String object)
+ trims utf8 byte array as-needed
+ All non-jsr implementations use CloseInfo logic