Commit Graph

416 Commits

Author SHA1 Message Date
Joakim Erdfelt 70247d74d9 Issue #1124 - Fixing up merge issues
+ Making WebSocketServletFactory always load a new
  WebSocketServerFactory
+ Making WebSocketServerFactory need a ServletContext
  to construct it, if appropriate (the WebSocketHandler
  approach doesn't use a ServletContext)
+ NativeWebSocketConfiguration is now a bean of
  ServerContainer
+ Removed WebSocketServletFactory.init(ServletContext) method
+ Renamed WebSocketServletFactory.init() to .start()
+ Renamed WebSocketServletFactory.cleanup() to .stop()
+ CDI & Websocket now works
+ Using a ServletContextListener now works
+ DecoderFactory and EncoderFactory now work
2016-11-29 15:46:03 -07:00
Joakim Erdfelt e329e386f0 Issue #117 - Carrying over the work from features/wsclient-httpclient 2016-11-28 15:45:38 -07:00
Greg Wilkins 2ef23a6725 Issue #572
Improved to the toString and dump output of connections, endpoints and channel to assist with debugging
made the SSL callbacks and runnables Invocable to avoid thread starvation.
2016-11-23 16:58:35 +11:00
Joakim Erdfelt 1003969468 Merge branch 'jetty-9.3.x' into jetty-9.4.x 2016-11-17 11:04:40 -07:00
Joakim Erdfelt 7930a3dac8 Fixing merge 9.2.x -> 9.3.x 2016-11-16 18:31:33 -07:00
Joakim Erdfelt bc1f53a692 Merge branch 'jetty-9.3.x' into jetty-9.4.x 2016-11-04 10:25:25 -07:00
Joakim Erdfelt bc67969135 Fixes #1054 - NPE in Jetty WebSocketListener on PING frame with empty payload 2016-11-04 10:24:06 -07:00
Simone Bordet 7e376fd9da Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2016-09-28 11:53:54 +02:00
Simone Bordet 0f97c3df5d Fixes #966 - Remove usages of ConcurrentArrayQueue. 2016-09-28 11:40:39 +02:00
Simone Bordet efe339e246 Code cleanup. 2016-09-28 11:40:39 +02:00
Simone Bordet 823ba4add6 Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2016-07-21 18:15:38 +02:00
Simone Bordet 6a15bbfb2b Issue #751 - Remove usages of ArrayQueue. 2016-07-21 17:55:48 +02:00
Simone Bordet ab45979a13 Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2016-06-23 13:02:53 +02:00
Simone Bordet 9d9df416af Fixes #643 - NPE in passing websocket client test. 2016-06-23 13:00:04 +02:00
Simone Bordet 3dca610f7b Merged branch 'jetty-9.3.x' into 'jetty-9.4.x'. 2016-06-13 23:39:23 +02:00
Simone Bordet ebee9f12f9 Fixed SessionTrackingTest.
Introduced WebSocketSession.Listener that can be used to be notified
of session opening and close, so that tests can be written more reliably.
2016-06-13 23:23:15 +02:00
Simone Bordet e578c79b41 Code cleanups. 2016-06-13 23:23:14 +02:00
Jesse McConnell 20c1301203 Merge branch 'jetty-9.3.x' into jetty-9.4.x 2016-06-07 11:56:27 -05:00
Joakim Erdfelt dd8afc34b9 Merge branch 'jetty-9.3.x' into bugs/388 2016-06-06 08:37:36 -07:00
Joakim Erdfelt 8758cbb607 Fixes #388 - Provide pluggable RemoteEndpoint service 2016-06-06 07:44:46 -07:00
Greg Wilkins 98c328fb23 Jetty 9.4.x 572 (#614)
* Issue #572 Scheduling Strategy Deadlocks

Implemented dual strategy idea from #572 discussion

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* fixed http2 strategy choice

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* code cleanups

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* clean up seelctor actions/products

Signed-off-by: Greg Wilkins <gregw@webtide.com>

* cleanups
2016-06-03 09:07:00 +10:00
Simone Bordet 89232a6207 Fixes #605 - Guard concurrent calls to WebSocketSession.close().
Introduced an AtomicBoolean to guard AbstractWebSocketConnection.close().
Made IOState code more robust with respect to synchronization.
2016-05-31 18:28:12 +02:00
Simone Bordet 2e21234328 Code cleanups. 2016-05-31 18:23:51 +02:00
Joakim Erdfelt d6bbe9ab12 Issue #388 - Provide pluggable RemoteEndpoint service 2016-03-03 09:28:05 -07:00
Joakim Erdfelt 06fa8370fb removing debugging output 2016-02-04 11:25:18 -07:00
Joakim Erdfelt cfe823a7d6 487197 - Deflater/Inflater memory leak with WebSocket permessage-deflate extension
+ 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
2016-02-04 11:03:45 -07:00
Joakim Erdfelt 2902a13463 485469 - permessage-deflate extension causes protocol error in Firefox/Chrome
+ Ensure that CONTINUATION frames are marked without RSV1 bit set
  during all code paths for permessage-deflate
2016-01-29 12:46:58 -07:00
Joakim Erdfelt 6808953561 485469 - permessage-deflate extension causes protocol error in Firefox/Chrome
+ Correcting behavior for RFC7692: Section 7.2.3.6 (permessage-deflate
  empty fin)
2016-01-15 16:26:02 -07:00
Joakim Erdfelt 30308f2316 Javadoc updates 2016-01-13 07:25:15 -07:00
Joakim Erdfelt a7b3a9f481 485663 - NullPointerException in WebSocketSession during upgrade with DEBUG logging
+ Defaulting session policy to container policy on session creation
2016-01-12 16:21:43 -07:00
Joakim Erdfelt 57224ec3ca 481986 - Dead JSR 356 Server Session still being tracked after Session/Connection closure
+ 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
2016-01-12 16:15:51 -07:00
Joakim Erdfelt cd39fd84fe Happy New Year 2016 2016-01-04 14:31:22 -07:00
Joakim Erdfelt b5db18378d Happy New Year 2016 2016-01-04 14:21:26 -07:00
Joakim Erdfelt 88945478f7 Merge branch 'jetty-9.2.x' into jetty-9.3.x 2015-12-17 16:15:49 -07:00
Joakim Erdfelt 1543601968 484612 - Restore WebSocket Session.close() sending 1000/Normal status code 2015-12-17 16:15:06 -07:00
Joakim Erdfelt b9c1535552 481567 - permessage-deflate causing data-dependent ju.zip.DataFormatException: invalid stored block lengths
+ 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.
2015-12-07 13:15:29 -07:00
Joakim Erdfelt 6aae1265bd Removing redudant close reason trim (handled elsewhere now) 2015-10-02 10:47:10 -07:00
Joakim Erdfelt cd17ff932a 478829 - WebsocketSession not cleaned up / memory leak
+ 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
2015-10-02 10:33:32 -07:00
Joakim Erdfelt 1e8d0db743 478829 - WebsocketSession not cleaned up / memory leak
+ 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
2015-10-01 18:18:20 -07:00
Joakim Erdfelt f22fcde971 474936 - WebSocketSessions are not always cleaned out from openSessions
+ 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
2015-09-25 09:49:29 -07:00
Joakim Erdfelt 1bca608b48 Breaking out close logging into child logger of AbstractWebSocketConnection 2015-09-25 09:49:29 -07:00
Joakim Erdfelt 5312f2c0d7 Merge branch 'jetty-9.2.x'
Conflicts:
	jetty-util/src/main/java/org/eclipse/jetty/util/BufferUtil.java
	jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java
2015-08-27 15:34:45 -07:00
Joakim Erdfelt 25cfffbe1e 428474 - Expose batch mode in the Jetty WebSocket API 2015-08-27 14:53:21 -07:00
Joakim Erdfelt 11b5d320f8 472082 - isOpen returns true on CLOSING Connection
+ Minor tweak to test for isOutputAvailable() instead of connection
  state.
2015-08-27 12:52:52 -07:00
Joakim Erdfelt ef067b2624 476023 - Incorrect trimming of WebSocket close reason
+ 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
2015-08-27 11:12:51 -07:00
Joakim Erdfelt 54e3d0a2e8 476049 - When using WebSocket Session.close() there should be no status code or reason sent 2015-08-27 09:33:44 -07:00
Joakim Erdfelt 9c855bee76 474936 - WebSocketSessions are not always cleaned out from openSessions
+ Adding testcase
+ Enabling Connection.onClose() -> ioState.onDisconnected()

Conflicts:
	jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketCloseTest.java
2015-08-27 09:33:28 -07:00
Joakim Erdfelt cb0852c53c 476049 - When using WebSocket Session.close() there should be no status code or reason sent 2015-08-27 09:27:28 -07:00
Joakim Erdfelt c07f11a1fd 474936 - WebSocketSessions are not always cleaned out from openSessions
+ Adding testcase
+ Enabling Connection.onClose() -> ioState.onDisconnected()
2015-08-26 17:08:14 -07:00
Joakim Erdfelt 2f4f4a2247 Minor improvements in WebSocketConnection.toString() 2015-08-14 14:48:51 -07:00
Joakim Erdfelt 25b692046f Merge branch 'jetty-9.2.x' 2015-08-07 09:40:11 -07:00
Joakim Erdfelt 55862e229e 471055 - Restore legacy/experimental WebSocket extensions (deflate-frame) 2015-08-07 09:39:12 -07:00
Joakim Erdfelt a71c543a7e Revert "Removing old websocket extensions x-webkit-deflate-frame and deflate-frame"
This reverts commit ec9504aab8.
2015-08-07 07:37:06 -07:00
Joakim Erdfelt c424b58153 474453 - Tiny buffers (under 7 bytes) fail to compress in permessage-deflate
+ Ensure compress() is sanely using Deflater.deflate()
+ Ensure output buffer in .deflate() is always a minimum
  of 256 bytes
2015-08-06 15:16:32 -07:00
Joakim Erdfelt ffcedde60a 474068 - Update WebSocket Extension for permessage-deflate draft-22
+ Copying inflated byte buffers
+ Simplifying Accumulator of buffer/chunks
+ Removing references to frame compression extensions
2015-08-06 15:16:32 -07:00
Joakim Erdfelt aac9568a30 Work on permessage-deflate continues
Conflicts:
	jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/FrameCompressionExtensionTest.java
2015-08-06 15:16:30 -07:00
Joakim Erdfelt 39f9f3ad44 Removing old websocket extensions x-webkit-deflate-frame and deflate-frame
Conflicts:
	jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/DeflateFrameExtensionTest.java
2015-08-06 15:16:11 -07:00
Joakim Erdfelt 2a1e0659d1 474453 - Tiny buffers (under 7 bytes) fail to compress in permessage-deflate
+ Ensure compress() is sanely using Deflater.deflate()
+ Ensure output buffer in .deflate() is always a minimum
  of 256 bytes
2015-08-06 15:10:55 -07:00
Joakim Erdfelt bf81ac9d50 474068 - Update WebSocket Extension for permessage-deflate draft-22
+ Copying inflated byte buffers
+ Simplifying Accumulator of buffer/chunks
+ Removing references to frame compression extensions
2015-07-31 14:05:50 -07:00
Greg Wilkins 607239028c 470727 - Thread Starvation of selector wakeups.
Changed the CallBack.NonBlocking to a default Callback.isNonBlocking, so that wrapping callbacks can determine if they are NonBlocking or not.
2015-07-22 17:31:54 +10:00
Joakim Erdfelt f4f5157ab6 Work on permessage-deflate continues 2015-05-14 07:45:25 -07:00
Joakim Erdfelt eb638777d0 Adding IO.close(Closeable) and using it. 2015-05-14 07:45:25 -07:00
Joakim Erdfelt ec9504aab8 Removing old websocket extensions x-webkit-deflate-frame and deflate-frame 2015-05-14 07:45:25 -07:00
Joakim Erdfelt 1f7f4dfa82 Reworking FrameCaptureExtension for timestamped in/out files of frames 2015-05-14 07:45:25 -07:00
Joakim Erdfelt b6afd2db4a Renaming FrameDebugExtension to FrameCaptureExtension to better reflect usage 2015-05-14 07:45:25 -07:00
Joakim Erdfelt 72593955c9 467043 - WebSocketClient close codes on protocol violation reported as policy violation
+ Correcting onOpen and onMessage handling of throwables
  to account for information from CloseException conditions.
2015-05-11 13:49:17 -07:00
Joakim Erdfelt 9261274699 Cleanup of toString() output 2015-05-11 13:29:54 -07:00
Joakim Erdfelt d0251349c5 467036 - WebSocketClient fails to process immediate frames from server
+ Using Connection.UpgradeFrom and Connection.UpgradeTo with
  client connections and endpoints too.
2015-05-11 13:28:58 -07:00
Joakim Erdfelt 77e42fb05a Updating WebSocket JettyListenerEventDriver for new Listeners
+ Basing implementation on instances of WebSocketConnectionListener
+ Adding support for:
  * WebSocketListener
  * WebSocketPartialListener
  * WebSocketPingPongListener
  * WebSocketFrameListener
2015-05-06 15:49:25 -07:00
Joakim Erdfelt 744b9e4c62 466619 - Add WebSocketFrameListener for receiving WebSocket Frame information
+ Adding WebSocketFrameListener and example use case
2015-05-06 15:49:25 -07:00
Joakim Erdfelt e801cf3374 466618 - Partial WebSocket Text delivery does not like incomplete UTF8 sequences
+ Adding alternative to Utf8StringBuilder that doesn't throw exception
  on incomplete UTF8 sequences, specifically for partial message
  handling
2015-05-06 15:49:25 -07:00
Joakim Erdfelt ed22d7e0de 464727 - Update Javadoc for Java 8 DocLint 2015-04-22 16:11:01 -07:00
Joakim Erdfelt 09b5f680b7 464727 - Update Javadoc for Java 8 DocLint
Eliminate empty tag warnings
+ Changed <p/> to <p>
+ Changed <br/> to <br>
2015-04-15 14:38:35 -07:00
Greg Wilkins 1cb0449be3 Organised imports 2015-03-26 12:32:15 +11:00
Joakim Erdfelt 1e3fe991e3 Increasing logging level for when websocket fails to open due to exception 2015-03-17 10:22:05 -07:00
Joakim Erdfelt b75f8dcda4 Cleaning up cdi-websocket in prep for merge 2015-03-12 10:09:53 -07:00
Joakim Erdfelt 0301de099d Delaying decoration of websocket endpoints 2015-03-12 10:09:52 -07:00
Joakim Erdfelt dc81cda742 Using Jetty component listeners for CDI 2015-03-12 10:09:52 -07:00
Joakim Erdfelt 31ee46d482 453834 - CDI Support for WebSocket
+ Breaking down jetty-cdi into 3 modules
  * cdi-core
  * cdi-servlet
  * cdi-websocket
+ Creating WebSocketScope for cdi-websocket
+ Creating @Produces for jetty websocket api session
  and javax.websocket.Session
+ Unit tests for new functionality
2015-03-12 10:09:52 -07:00
Joakim Erdfelt 8b6a2629f8 453834 - CDI Support for WebSocket 2015-03-12 10:09:30 -07:00
Joakim Erdfelt 5b5c2369d5 Stragglers to the new year. tsk. tsk. 2015-03-12 10:09:30 -07:00
Joakim Erdfelt 4435ba3c2b cleaning up build warnings 2015-03-12 10:09:30 -07:00
Joakim Erdfelt 1f3097ff16 453834 - CDI Support for WebSocket
+ Adding scopes to websocket to help with CDI integration
2015-03-12 10:09:30 -07:00
Joakim Erdfelt 0c930c8640 Rename EnhancedInstantiator to DecoratedObjectFactory 2015-03-12 10:06:03 -07:00
Joakim Erdfelt 5c3e30d136 453834 - CDI Support for WebSocket
+ Changing util.Decorators to util.EnhancedInstantiator to reflect true
  usage
+ Adding EnhancedInstantiator to JSR-356
2015-03-12 10:04:50 -07:00
Joakim Erdfelt 130afb9535 Merge branch 'jetty-9.2.x'
Conflicts:
	jetty-client/src/main/java/org/eclipse/jetty/client/LeakTrackingConnectionPool.java
	jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientLoadTest.java
	jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientUploadDuringServerShutdown.java
	jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java
	jetty-spdy/spdy-server/src/test/java/org/eclipse/jetty/spdy/server/SynDataReplyDataLoadTest.java
	jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/TooFastClientTest.java
2015-03-06 15:57:52 -07:00
Joakim Erdfelt 74ee154bb1 Cleaning up LeakTrackingByteBufferPool / LeakDetector
+ 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
2015-03-06 14:27:58 -07:00
Joakim Erdfelt c52f100ec3 Making WebSocket use new Upgrade mechanism
+ Also fixes websocket server prefill bytes issue
+ Adjusting client side to also use/benefit from new Upgrade mechanism
2015-02-13 15:16:48 -07:00
Greg Wilkins 0f7ee8d607 Merge remote-tracking branch 'origin/jetty-9.2.x'
Conflicts:
	jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
	jetty-http/src/main/java/org/eclipse/jetty/http/HttpVersion.java
	jetty-io/src/main/java/org/eclipse/jetty/io/EndPoint.java
	jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
2015-02-13 11:45:56 +11:00
Greg Wilkins 2b2a70a93a 459845 Support upgrade
Added the concept of UpgradeFrom and UpgradeTo connections that support
transferring a buffer with content before opening new connection.
Aded EndPoint.update method as utility
2015-02-13 11:41:18 +11:00
Joakim Erdfelt 30dda86b20 Merge branch 'jetty-9.2.x' 2015-02-12 09:59:52 -07:00
Joakim Erdfelt 23e9246115 Adding TooFastClientTest for websocket server
+ 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.
2015-02-12 09:30:31 -07:00
Simone Bordet 8a27385bc3 Merged branch 'jetty-9.2.x' into 'master'. 2015-01-09 12:51:13 +01:00
Joakim Erdfelt f7b382064f 457017 - Reflective call to websocket methods that fail have ambiguous
exceptions 

+ Making JSR onOpen close and use onError properly, as well we
unwrapping the InvocationTargetException cause as to WHY the call to
onOpen failed.
2015-01-08 12:06:53 -07:00
Greg Wilkins e1cc5fb487 Merge remote-tracking branch 'origin/master' into jetty-9.3-ewyk
Conflicts:
	jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
	jetty-server/src/main/java/org/eclipse/jetty/server/QueuedHttpInput.java
	jetty-util/src/main/java/org/eclipse/jetty/util/thread/NonBlockingThread.java
2015-01-08 15:21:01 +01:00
Joakim Erdfelt a3201a3c81 Happy New Year 2015 2015-01-07 17:06:59 -07:00
Joakim Erdfelt 6a0668b7a1 Happy New Year 2015 2015-01-07 17:03:30 -07:00
Greg Wilkins 3af9b145a3 Deprecated the AbstractConnection dispatchIO mechanism 2015-01-01 16:18:13 +01:00
Joakim Erdfelt a79b154d1b 456209 - Bad ContextClassLoader in WebSocket onMessage
+ Sets the class loader on an incoming frame to the
  class loader that loaded the web socket session

Also-by: Michael MacFadden <michael@macfadden.org>
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
2014-12-29 12:10:55 -07:00
Simone Bordet 8d2efaf7eb 445167 - Allow configuration of dispatch after select.
Introduced parameter "dispatchIO" in the relevant factories so that
they can be configured by users and connections will be created
taking into account this parameter.

For less configurable connection factories, this parameter is
currently hardcoded to either true or false depending on the case.
For example, ALPN and NPN connections have it to false, since they
don't do any blocking operation in onFillable().
2014-09-26 10:13:16 +02:00
Simone Bordet a8b461fe91 Cosmetics: removed unused imports, cleaned up source code, improved javadocs. 2014-09-26 10:13:16 +02:00
Joakim Erdfelt 0bf68a07ae 442495 - Bad Context ClassLoader in JSR356 WebSocket onOpen
+ Fixing onOpen context classloader to be that of the context
  that started the WebSocketUpgradeFilter (which will be the
  same as the WebAppContext in most cases)
2014-09-23 11:33:44 +02:00
Joakim Erdfelt 0dca1b0794 442495 - Bad Context ClassLoader in JSR356 WebSocket onOpen
+ Fixing onOpen context classloader to be that of the context
  that started the WebSocketUpgradeFilter (which will be the
  same as the WebAppContext in most cases)
2014-09-22 14:37:00 -07:00
Greg Wilkins eee2ba206e 435322 Added a idleTimeout to the SharedBlockerCallback 2014-08-29 11:55:06 +10:00
Simone Bordet 745f757552 Guarded calls to LOG.debug() with if (LOG.isDebugEnabled()) to reduce allocation of varargs Object[]. 2014-07-15 18:49:14 +02:00
Greg Wilkins 55ca09a00e 438190 findbug improvements 2014-07-10 14:41:32 +10:00
Simone Bordet f2f19ee3ba Improved changes introduced by a746d78. 2014-06-26 10:08:13 +02:00
Greg Wilkins a746d78951 438079 435322 Fixed Iterating Callback fail handling and removed per send instance 2014-06-25 19:20:03 +02:00
Joakim Erdfelt 5b009dbe15 Adding FrameDebugExtension ability 2014-05-16 08:32:30 -07:00
Joakim Erdfelt e0e00b0aed 430418 - Jetty 9.1.3 and Chrome 33 permessage-deflate do not work together
+ Updating Compress/PerMessageDeflate extensions for latest spec
  document, http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-18
  Intra-frame tail 0000FFFF is now being preserved for
  permessage-deflate
2014-05-14 13:02:12 -07:00
Simone Bordet a2b6c69525 Fixed field initialization problem. 2014-05-14 21:25:04 +02:00
Joakim Erdfelt 832332aaad 434685 - WebSocket read/parse does not discard remaining network buffer after unrecoverable error case
+ Make all future onFillable events after a fundamental read/parse
  exception discard the network buffer.
2014-05-12 16:36:47 -07:00
Joakim Erdfelt 8ff1cec570 433262 - WebSocket / Advanced close use cases
+ AWSC.Flusher.onFailure() now uses IOState properly.
+ IOState now tracks the final CLOSED CloseInfo atomically
+ Renamed IOState.onReadEOF() to .onReadFailure(Throwable)
+ Added IOState.onWriteFailure(Throwable)
2014-05-07 13:12:09 -07:00
Joakim Erdfelt fa5a5f3507 Adding javadoc 2014-05-07 13:12:09 -07:00
Joakim Erdfelt 8e957b5a23 Reducing the noise on websocket testing 2014-05-05 12:09:58 -07:00
Greg Wilkins 2e261b75d6 433692 improved buffer resizing 2014-04-29 20:36:13 +02:00
Joakim Erdfelt 1fb578165f 433262 - WebSocket / Advanced close use cases
+ 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.
2014-04-25 07:33:29 -07:00
Joakim Erdfelt 900dea3719 433262 - WebSocket / Advanced close use cases
+ ClientCloseTest implementation of various outlined use cases.
2014-04-22 16:07:45 -07:00
Joakim Erdfelt db2c6c20b9 Test failure fix 2014-04-15 10:16:52 -07:00
Joakim Erdfelt cad7d3f5ed Attempt to work out websocket close notification issue that simone raised 2014-04-15 10:14:03 -07:00
Greg Wilkins 710ea48244 430654 430242 - Closeable SharedBlockingCallback 2014-03-22 09:36:09 +11:00
Greg Wilkins 5d83a43cce 430242 - added SharedBlockingCallback to support threadsafe blocking 2014-03-22 08:42:03 +11:00
Greg Wilkins 138dfba560 Revert "430242 - added SharedBlockingCallback to support threadsafe blocking"
This reverts commit 9c30e7a303.
2014-03-21 17:55:48 +11:00
Greg Wilkins 9c30e7a303 430242 - added SharedBlockingCallback to support threadsafe blocking 2014-03-13 21:12:55 +11:00
Greg Wilkins 4de73d508b 430242 - added SharedBlockingCallback to support threadsafe blocking 2014-03-13 14:46:00 +11:00
Joakim Erdfelt f282ffe897 429779 - masked zero length websocket frame gives NullPointerException during streaming read
+ Corrected payload buffer copying to ignore null and empty payloads
2014-03-06 11:29:42 -07:00
Joakim Erdfelt b3bfe2783f Fixing WebSocketSession.suspend() 2014-02-24 08:08:11 -07:00
Simone Bordet f465a13d6d 428435 - Large streaming message fails in MessageWriter.
Fixed buffering, synchronization and callback notification in the
websocket stream implementation classes.
2014-02-24 14:28:10 +01:00
Simone Bordet 7db67ff58f Removed @SuppressWarnings("ForLoopReplaceableByForEach") because
it is a non standard warning not treated by the compiler but only
by IDEs. Relevant lines have comments in any case.
2014-02-21 14:50:45 +01:00
Simone Bordet 7d6c1548b1 428232 - Rework batch mode / buffering in websocket.
Fixed missing notification of the FLUSH_FRAME.
2014-02-20 22:17:16 +01:00
Simone Bordet c3c4d059a6 Removed unnecessary synchronization. 2014-02-20 15:44:22 +01:00
Greg Wilkins 15952aeee4 428232 - Rework batch mode / buffering in websocket. 2014-02-21 00:54:32 +11:00
Simone Bordet 75cc42a647 Improved dump() output. 2014-02-19 23:18:14 +01:00
Simone Bordet 1ac6b82912 428232 - Rework batch mode / buffering in websocket.
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.
2014-02-18 18:31:49 +01:00
Simone Bordet 3240e7383b 428232 - Rework batch mode / buffering in websocket.
Improved logging by wrapping LOG.debug() calls in a
if (LOG.isDebugEnabled()) statement to avoid boxing of primitive
values.
2014-02-18 18:31:49 +01:00
Simone Bordet 0786da6cd0 428232 - Rework batch mode / buffering in websocket.
Avoid to create a new ByteBuffer just to create the mask integer,
saves allocation cost.
2014-02-18 18:31:49 +01:00
Simone Bordet 61b4b0f029 428232 - Rework batch mode / buffering in websocket.
Better default size for SimpleTextMessage Utf8StringBuilder,
to avoid multiple expansions and data copy of the underlying array.
2014-02-18 18:31:48 +01:00
Simone Bordet 996cc8bd92 428232 - Rework batch mode / buffering in websocket.
Optimized FrameFlusher to not create iterators when iterating over a
list, saving allocation costs.
2014-02-18 18:31:48 +01:00
Simone Bordet 4bdca367dd 428232 - Rework batch mode / buffering in websocket.
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.
2014-02-18 18:31:48 +01:00
Simone Bordet 8e5c06b95c 428232 - Rework batch mode / buffering in websocket.
Refactored OutgoingFrames.outgoingFrame() to take an additional
parameter, FlushMode. This is in preparation for handling this new
parameter in FrameFlusher.
2014-02-18 18:31:48 +01:00
Simone Bordet d2f1954fa0 427700 - Outgoing extensions that create multiple frames should flush
them in order and atomically.

Optimized CompressExtension to reduce data copying at minimum on the
write path.
2014-02-15 17:53:37 +01:00
Simone Bordet a8e4caca90 427700 - Outgoing extensions that create multiple frames should flush
them in order and atomically.

Removed unused code.
2014-02-15 17:53:23 +01:00
Simone Bordet a2a90c5c87 427700 - Outgoing extensions that create multiple frames should flush
them in order and atomically.

Modified FragmentExtension to use a Queue and IteratingCallback to
make sure that frames are iteratively fragmented.
The creation of the next fragment only happens when there is a callback
from the next outgoing layer.
2014-02-14 22:21:59 +01:00
Simone Bordet ad15b27a01 427700 - Outgoing extensions that create multiple frames should flush
them in order and atomically.

Refactored PerMessageDeflateExtension and DeflateFrameExtension
introducing superclass CompressExtension that factors in common
functionalities.
2014-02-14 22:21:59 +01:00
Simone Bordet 81b8990dec 427700 - Outgoing extensions that create multiple frames should flush
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.
2014-02-14 22:21:59 +01:00
Simone Bordet 53b1ee9e47 427700 - Outgoing extensions that create multiple frames should flush
them in order and atomically.

Modified ExtensionStack to use a Queue and IteratingCallback to make
sure that messages are processed sequentially.
2014-02-14 22:21:59 +01:00
Simone Bordet 66a19bd646 Avoided to copy the frame payload if we happen to have it all
available.
2014-02-10 12:56:54 +01:00
Simone Bordet 18d2180cdc 427588 - WebSocket Parser leaks ByteBuffers.
Fixed by having the Parser release the payload ByteBuffer.
Also reworked WebSocketFrame.reset() method, and made sure
that outgoing frames also don't leak ByteBuffers.
2014-02-10 12:21:50 +01:00
Simone Bordet 21d938f12d 427587 - MessageInputStream must copy the payload.
Forgot to flip the buffer.
2014-02-06 22:39:02 +01:00
Simone Bordet cf37533d87 427587 - MessageInputStream must copy the payload. 2014-02-06 21:18:21 +01:00