Commit Graph

431 Commits

Author SHA1 Message Date
olivier lamy 1a49a6fb7e more javadoc fixes #2056
Signed-off-by: olivier lamy <olamy@webtide.com>
2018-01-08 12:28:12 +11:00
Greg Wilkins 41050cd8a4
Issue #2081 No idle timeout exception when dispatch is delayed (#2083)
Issue #2081 No idle timeout exception when dispatch is delayed
* Delegate the readtimeout handling to HttpChannel so that a delayed dispatch can be ended.
* Added unit test for delayed dispatch idle
* Now using HttpInput.onIdleTimeout() to fail the HttpInput, and then dispatching the request in case it has not been dispatched yet. This ensure consistent behavior independently of the value of HttpConfiguration.delayDispatchUntilContent.
* Fixed for both HTTP/1.1 and HTTP/2.
* Added tests for non-blocking reads.

Signed-off-by: Greg Wilkins <gregw@webtide.com>
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2018-01-04 13:26:31 +01:00
Greg Wilkins 729dd41493 Added partial string support to Utf8Appendable 2017-10-19 20:43:46 +11:00
Joakim Erdfelt d34f04c559 Issue #1881 - eliminate NPE in id generation against UnixSocketChannel 2017-10-10 12:09:52 -07:00
Joakim Erdfelt ce039eb4cb Merge branch 'issue-272-ws-blockingwrite' into jetty-9.4.x 2017-10-10 11:23:03 -07:00
Simone Bordet c93360ad9c Issue #1851 - Improve insufficient thread warnings/errors.
Added ExecutorSizedThreadPool, a wrapper around JDK's ThreadPoolExecutor
that implements SizedThreadPool (and therefore returns a ThreadPoolBudget).

Deprecated ExecutorThreadPool, an older version of ExecutorSizedThreadPool.
2017-10-06 16:36:46 +02:00
Simone Bordet 4389da9196 Issue #272 - WebSocket hangs in blockingWrite.
Rewritten FrameFlusher.
2017-10-05 22:20:22 +02:00
Joakim Erdfelt 6faaf3346c Issue #272 - Read/Parse exceptions should flow out, so Session can handle it via new Session.close() 2017-10-03 15:30:32 -07:00
Joakim Erdfelt c0dfa1dd50 Issue #272 - Attempting to centralize close logic in Session.close() 2017-10-03 15:29:27 -07:00
Joakim Erdfelt bb5195192a Issue #272 - Addressing some concerns with multithreading in FrameFlusher 2017-10-03 15:20:16 -07:00
Joakim Erdfelt 45a4b87a33 Fixes #1662 - Removing harmless NPE on websocket compress with null frame payload 2017-09-06 10:57:28 -07:00
Joakim Erdfelt acc7c97969 Removing @Rule LeakTrackingBufferPoolRule - bad threading behavior / false positives 2017-09-06 10:16:32 -07:00
Joakim Erdfelt b0fd444a1b File EOL issue, post-hard reset 2017-08-09 14:31:06 -07:00
Joakim Erdfelt 796da084b4 Issue #1625 - Support new IANA declared websocket close status codes 2017-08-08 08:49:58 -07:00
Joakim Erdfelt af4962f842 Issue #1605 - common executor and bufferpool for jsr356 client 2017-08-08 08:49:57 -07:00
Joakim Erdfelt 296050dfc4 Issue #1568 - Fixing improper query encoding in WebSocket ServletUpgradeRequest 2017-05-23 10:32:22 -07:00
Joakim Erdfelt c75e3c19d9 Issue #1516 - making WebSocket started thread pools have identifying names 2017-05-11 09:52:02 -07:00
Joakim Erdfelt 753ed9e603 Issue #1516 - Delay starting of WebSocketClient 2017-05-09 12:58:22 -07:00
Greg Wilkins 0a2da4822d Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x 2017-03-06 14:20:23 +11:00
Joakim Erdfelt 261f83f8cd Issue #329 - Removing unused WS classes 2017-03-01 10:40:45 -07:00
Simone Bordet 0c8273f2ca Happy New Year 2017. 2017-01-19 19:26:41 +01:00
Simone Bordet 07838b057f Happy New Year 2017. 2017-01-19 18:54:03 +01:00
Simone Bordet 347c48d657 Revert "resolve merge and update license headers"
This reverts commit 53b31b03dd, reversing
changes made to 4565c186d7.
2017-01-19 18:26:43 +01:00
Jesse McConnell 53b31b03dd resolve merge and update license headers 2017-01-19 09:33:16 -06:00
Jesse McConnell ce3e6dafec update license headers to 2017 2017-01-19 09:30:00 -06:00
Joakim Erdfelt 7e3d3604ac Merge pull request #1219 from violetagg/ws-suspend-resume
Issue #1218 - When resuming a suspended connection do not register a …
2017-01-10 17:24:12 -04:00
Joakim Erdfelt 487748cd8f Issue #1207 - Making EventDriver use WebSocketContainerScope instead 2017-01-10 16:27:49 +01:00
Violeta Georgieva eaa51be083 Issue #1218 - When resuming a suspended connection do not register a read interest if currently in filling mode.
Signed-off-by: Violeta Georgieva <vgeorgieva@pivotal.io>
2017-01-05 14:58:06 +02:00
Greg Wilkins d7aa079365 Issue #117 fixed javadoc errors 2016-12-02 15:33:30 +11:00
Joakim Erdfelt b70101b93f Fixes #117 - working build of WebSocketClient with HttpClient
+ Proxy support exists now
2016-12-01 15:00:41 -07:00
Joakim Erdfelt 709938e02b Merge branch 'issue-117' into jetty-9.4.x 2016-12-01 13:06:08 -07:00
Joakim Erdfelt 47fd7e1bd2 Merge branch 'jetty-9.3.x' into jetty-9.4.x 2016-11-30 14:41:43 -07:00
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
Greg Wilkins e607acfa4e Merge remote-tracking branch 'origin/jetty-9.3.x' into jetty-9.4.x 2016-06-15 18:06:32 +10:00
Greg Wilkins 0e5de87d49 Issue #663 Cleanup
Increased websocket tests timeouts
2016-06-15 18:04:33 +10: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 64d5718e9e Removing System.out 2015-10-02 10:43:47 -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 8946badbed Extracting IBlockheadServerConnection for refactoring prep 2015-09-30 12:47:31 -07:00
Joakim Erdfelt b865b50cb6 Extracting IBlockheadClient for refactoring prep 2015-09-30 12:47:31 -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 a1bd9f7f50 Updating tests for draft 21 spec of permessage-deflate 2015-05-14 07:45:25 -07:00