Commit Graph

465 Commits

Author SHA1 Message Date
Joakim Erdfelt 395e8f1c8b Adding examples of managing the websocket extensions 2014-02-19 11:32:18 -07: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 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
Joakim Erdfelt cff7c9dbcb Cleaning up websocket connection open/close in favor of session open/close 2014-02-13 16:22:55 -07:00
Jesse McConnell eb0aea46ce set versions.txt file to new version and fix mistaken developmentVersion 2014-02-10 13:48:29 -06:00
Jesse McConnell f3d38dfb15 [maven-release-plugin] prepare for next development iteration 2014-02-10 11:17:14 -06:00
Jesse McConnell 8f6cbc9111 [maven-release-plugin] prepare release jetty-9.1.2.v20140210 2014-02-10 11:17:07 -06:00
Simone Bordet 51e8b83954 427699 - WebSocket upgrade response sends Sec-WebSocket-Protocol twice.
The problem was that UpgradeResponse was setting the subProtocol as a
header, and HandshakeRFC6455 was extracting it and *adding* it again.

Fixed by removing the code in HandshakeRFC6455.
2014-02-10 14:43:22 +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 5d9360e343 427254 - Cookies are not sent to the client.
Introduced ServletUpgradeResponse.complete(), called when the response
is about to be sent to the client, to transfer the headers stored in
the superclass (UpgradeResponse.headers) into the HttpServletResponse.
2014-02-03 15:31:51 +01:00
Jesse McConnell 91429ea123 Merge branch 'release-9' 2014-01-10 09:11:25 -06:00
Jesse McConnell b82ec6e668 [maven-release-plugin] prepare for next development iteration 2014-01-08 16:47:09 -06:00
Jesse McConnell b99623a21d [maven-release-plugin] prepare release jetty-9.1.1.v20140108 2014-01-08 16:47:01 -06:00
Joakim Erdfelt 29dec203ba Turning on some leak detection in websocket testing 2014-01-08 14:54:57 -07:00
Joakim Erdfelt 9df519c40f 423948 - Cleanup and consolidate testing utilities in WebSocket
+ Created websocket-common-tests.jar artifact
+ Consolidated duplicate code from other websocket-* modules
  into the websocket-common test artifact
2014-01-08 10:47:45 -07:00
Joakim Erdfelt a12fd9ea03 Happy New Year - 2014! 2014-01-02 14:50:14 -07:00
Joakim Erdfelt 5380430b75 Tweaking idle timeout 2013-12-20 13:22:01 -07:00
Joakim Erdfelt 46ef022cf4 421314 - Websocket / Connect attempt with Chrome 32+ fails with "Some extension already uses the compress bit"
+ 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.
2013-12-13 12:30:26 -07:00
Joakim Erdfelt 0a30b4934b 423915 - WebSocket / Active connection from IOS that goes into airplane mode not disconnected on server side
+ Adding testcase verifying Native WebSocket API behavior
2013-12-12 17:04:35 -07:00
Joakim Erdfelt 7af074bafb 423048 - Receiving a PING while sending a message kills the connection
+ Removed msgLock on control frames.
+ Moved sendPing() and sendPong() to async frame handling
+ Squelched a mess of stacktraces in the testing output
2013-12-12 16:08:53 -07:00
Joakim Erdfelt 5941e9db83 Fixing various warnings / imports 2013-12-12 14:46:40 -07:00
Joakim Erdfelt ecf3b8a68f 421189 - WebSocket / AbstractExtension's WebSocketPolicy is not Session-specific
+ Ensuring that the EventDriver managed policy is used by the
  ExtensionStack
2013-12-12 13:51:01 -07:00
Joakim Erdfelt 54c22d0aca 418622 - WebSocket / When rejecting old WebSocket protocols, log client details 2013-12-09 17:00:18 -07:00
Joakim Erdfelt 48fe92d939 423185 - Update permessage-deflate for finalized spec
+ Adding support for new permessage-deflate parameters
+ Tested against pywebsocket (rev 790)
+ Tested against Chrome Canary 32
2013-12-09 16:20:14 -07:00
Joakim Erdfelt 1eac013485 422192 - ClientContainer.getOpenSessions() always returns null
+ Adding SessionListener and using it judiciously
2013-12-04 12:24:48 -07:00
Greg Wilkins 0a52c64d16 421697 - IteratingCallback improvements
Use the iteratingcallback for websocket
use gather writes for websocket
always write entire websocket payload
2013-11-21 15:11:56 +11:00
Greg Wilkins 41f60bd152 421697 - IteratingCallback improvements
Cleanup WebSocket impl first

+ Logic for size on Generator was backwards.
+ Logic in Generator for RSV flags was incorrect.
+ Generalizing flagsInUse for Parser too
2013-11-21 12:40:32 +11:00
Joakim Erdfelt 9172d6115b [maven-release-plugin] prepare for next development iteration 2013-11-15 16:58:44 -07:00
Joakim Erdfelt 6feeab6ec3 [maven-release-plugin] prepare release jetty-9.1.0.v20131115 2013-11-15 16:58:36 -07:00
Joakim Erdfelt 7bbc0ff4df [maven-release-plugin] rollback the release of jetty-9.1.0.v20131115 2013-11-15 16:33:52 -07:00
Joakim Erdfelt 1126e68971 [maven-release-plugin] prepare for next development iteration 2013-11-15 16:03:28 -07:00
Joakim Erdfelt d6418c73d4 [maven-release-plugin] prepare release jetty-9.1.0.v20131115 2013-11-15 16:03:20 -07:00
Joakim Erdfelt 6c372b9440 Reverting <version> to 9.1.0-SNAPSHOT 2013-11-15 15:36:26 -07:00
Jesse McConnell b5345caed1 [maven-release-plugin] prepare for next development iteration 2013-11-14 15:27:52 -06:00
Jesse McConnell 1582aa196d [maven-release-plugin] prepare release jetty-9.1.0.v20131114 2013-11-14 15:27:37 -06:00
Jesse McConnell 63f20d4518 [maven-release-plugin] prepare for next development iteration 2013-11-07 10:42:54 -06:00
Jesse McConnell dc2fd1b9ce [maven-release-plugin] prepare release jetty-9.1.0.RC2 2013-11-07 10:42:41 -06:00
Joakim Erdfelt aba3a41a34 More fixes for Windows build 2013-11-04 16:50:18 -07:00
Greg Wilkins f567bddad9 global clean up imports 2013-11-04 13:48:03 +11:00
Greg Wilkins eb3bb660b5 Merge remote-tracking branch 'origin/master' into jetty-9.1
Conflicts:
	jetty-client/src/main/java/org/eclipse/jetty/client/util/DigestAuthentication.java
	jetty-client/src/test/java/org/eclipse/jetty/client/HttpReceiverTest.java
	jetty-client/src/test/java/org/eclipse/jetty/client/HttpSenderTest.java
	jetty-http/src/main/java/org/eclipse/jetty/http/HttpField.java
	jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java
	jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java
	jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/generator/HeadersBlockGenerator.java
	jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/parser/HeadersBlockParser.java
	jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java
	jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketFrame.java
	jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java
	jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/DeflateCompressionMethodTest.java
	jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtensionTest.java
2013-11-03 18:22:09 +11:00
Mikhail Mazursky 6b0269a16d [Bug 420930] Use Charset to specify character encoding
Signed-off-by: Mikhail Mazursky <mikhail.mazursky@gmail.com>
2013-11-02 14:44:36 +06:00
Joakim Erdfelt 6f1eb712e9 Cleaning up imports 2013-11-01 10:03:40 -07:00
Joakim Erdfelt dbc4f5357a Merge fixes
+ @Ignore on PathMapTest
2013-10-18 16:12:19 -07:00
Joakim Erdfelt d6d54e048b Merge branch 'master' into jetty-9.1
Conflicts:
	jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
	jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ErrorPageErrorHandler.java
	jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/UpgradeConnection.java
	jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/WebSocketClientTest.java
	jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/AnnotatedMaxMessageSizeTest.java
2013-10-18 16:12:00 -07:00
Joakim Erdfelt 15e32cc9b0 419814 - Annotation properties maxMessageSize and inputBufferSize don't work
+ Adding extra testcase for maxMessageSize
2013-10-18 09:39:48 -07:00
Jesse McConnell 856a24b65a [maven-release-plugin] prepare for next development iteration 2013-09-30 14:46:09 -05:00
Jesse McConnell f466f03c6a [maven-release-plugin] prepare release jetty-9.0.6.v20130930 2013-09-30 14:46:00 -05:00
Jesse McConnell 0b3f431d27 set version back to 9.0.6-SNAPSHOT 2013-09-30 12:33:06 -05:00
Jesse McConnell 0525498ad3 [maven-release-plugin] prepare for next development iteration 2013-09-19 15:06:31 -05:00
Jesse McConnell c05a725db6 [maven-release-plugin] prepare release jetty-9.0.6.v20130919 2013-09-19 15:06:17 -05:00
Joakim Erdfelt 7f85842666 417134 - WebSocket / Jsr ServerEndpointConfig.Configurator.getNegotiatedExtensions() is never used
+ Extensions pre-negotiated via
  ServerEndpointConfig.Configurator.getNegotiatedExtensions are not
  properly handled.
+ Added JsrBrowserDebugTool (Jsr version of BrowserDebugTool)
2013-09-12 15:25:02 -07:00
Joakim Erdfelt 5445c42ffe 417133 - WebSocket / deflate-frame should accumulate decompress byte buffers properly
+ Adding ByteAccumulator to make job easier and more sane (with a
  minimum of byte buffer copying.
2013-09-12 13:59:15 -07:00
Joakim Erdfelt 4b3541b7d1 WebSocket / making sure that filter always sees the correct target path, regardless of servlets 2013-09-11 08:56:19 -07:00
Joakim Erdfelt dc59080fca WebSocket / Fixing pathmap matching when query parameters are provided 2013-09-11 07:24:25 -07:00
Joakim Erdfelt be2385276f WebSocket / Fixing support for permessage-deflate extension 2013-08-28 11:49:54 -07:00
Joakim Erdfelt 20fbd95bf1 395444 - Websockets not working with Chrome (deflate problem)
+ 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)
2013-08-27 14:20:07 -07:00
Greg Wilkins e4235ea070 415744 - Reduce Future usage in websocket 2013-08-23 19:58:46 +10:00
Joakim Erdfelt 4d9cb44536 WebSocket - Calling setPayload() outside of ContinuationFrame 2013-08-20 16:51:11 -07:00
Joakim Erdfelt e56fddfc4a WebSocket - Calling setPayload() outside of TextFrame and BinaryFrame 2013-08-20 16:45:26 -07:00
Joakim Erdfelt a089780701 WebSocket - Calling setPayload() outside of PingFrame and PongFrame 2013-08-20 16:39:26 -07:00
Joakim Erdfelt 975d9870d2 WebSocket - more code cleanup 2013-08-20 16:28:51 -07:00
Joakim Erdfelt c548cba71c WebSocket - fixing windowed parse issue with masked frames 2013-08-20 12:56:32 -07:00
Joakim Erdfelt 34f03cb0e8 WebSocket / releasing (header) buffer acquired during generation 2013-08-20 09:57:57 -07:00
Joakim Erdfelt 3dbcc04b73 Breaking apart WebSocketFrame into sub-frame types
+ Performance improvements?
+ Less copying of data
2013-08-19 15:26:07 -07:00
Joakim Erdfelt 4016ba571c JSR-356 working javax.websocket demo in the distribution. 2013-08-15 12:20:06 -07:00
Jan Bartel c80100b4a9 [maven-release-plugin] prepare for next development iteration 2013-08-15 19:13:27 +10:00
Jan Bartel e7e7e45500 [maven-release-plugin] prepare release jetty-9.0.5.v20130815 2013-08-15 19:13:13 +10:00
Jan Bartel 716430bb03 [maven-release-plugin] rollback the release of jetty-9.0.5.v20130815 2013-08-15 18:03:49 +10:00
Jan Bartel 3d13c15d35 [maven-release-plugin] prepare release jetty-9.0.5.v20130815 2013-08-15 17:22:03 +10:00
Jan Bartel 7947b35134 Reset version for rerun of 9.0.5 2013-08-15 16:47:03 +10:00
Joakim Erdfelt e39b48c90d Fixing up javadoc issues in WebSocket classes 2013-08-14 10:54:07 -07:00
Jesse McConnell 4383c9042d [maven-release-plugin] prepare for next development iteration 2013-08-13 14:20:56 -05:00
Jesse McConnell 160d34ec23 [maven-release-plugin] prepare release jetty-9.0.5.v20130813 2013-08-13 14:20:47 -05:00
Joakim Erdfelt 980effaede WebSocket - reducing memory footprint of WebSocketFrame by not using boolean fields 2013-08-13 12:09:43 -07:00
Joakim Erdfelt 1e39b7d476 WebSocket / Performance - cleaning up tests from fallout on bug 414913
+ 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
2013-08-12 16:29:25 -07:00
Joakim Erdfelt 46b3dc10c8 414913 - WebSocket / Performance - reduce ByteBuffer allocation/copying during generation/writing
+ 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
2013-08-12 16:29:25 -07:00
Joakim Erdfelt dfd3d5af29 WebSocket - refactoring bits and pieces to make testing easier. 2013-08-02 09:33:15 -07:00
Simone Bordet ed95ffbfea Fixed lifecycle management. 2013-08-02 15:05:50 +02:00
Joakim Erdfelt 07041f6439 JSR-356 making HTTP Header map use TreeMap(String.CASE_INSENSITIVE_ORDER) 2013-08-01 10:50:01 -07:00
Joakim Erdfelt 441c98544a JSR-356 if mapping not found, allow default behavior 2013-08-01 07:47:02 -07:00
Joakim Erdfelt e2f02a7a8a JSR-356 fixing ServerContainer.setDefault*() method behavior 2013-07-31 14:25:54 -07:00
Joakim Erdfelt 0444b87961 414167 - WebSocket handshake upgrade from FireFox fails due to keep-alive
+ Making .isUpgradeRequest() multi-value aware, per spec
2013-07-31 13:00:16 -07:00
Joakim Erdfelt 0fd0ecc887 JSR-356 - making ClientContainer a use jetty LifeCycle properly 2013-07-31 10:34:31 -07:00
Joakim Erdfelt 8a2ccdf8ae JSR-356 - fixing Session.setMax(Text|Binary)MessageBufferSize 2013-07-31 09:52:51 -07:00
Joakim Erdfelt 9ebf890d51 WebSocket - supporting WriteCallback in jetty RemoteEndpoint
+ new RemoteEndpoint.sendBytes(ByteBuffer, WriteCallback)
+ new RemoteEndpoint.sendString(String, WriteCallback)
2013-07-30 15:25:41 -07:00
Joakim Erdfelt 28b3ee8b13 WebSocket - breaking out unfinished MUX extension into its own module 2013-07-30 15:09:40 -07:00
Joakim Erdfelt 6fc7e23dc0 Testing for non-null 2013-07-30 14:41:28 -07:00
Joakim Erdfelt b363400c84 JSR-356 - making SessionFactory additive to allow multiple impls at the same time. 2013-07-29 09:30:42 -07:00
Joakim Erdfelt b549410932 JSR-356 - Making WebSocketUpgradeFilter an attribute in the ServletContext 2013-07-25 09:43:47 -07:00
Joakim Erdfelt d7d4e415ea JSR-356 - making use of ServiceLoader technique for finding Extensions 2013-07-24 14:46:59 -07:00
Joakim Erdfelt e69b41e9cd JSR-356 Adding suppport for @PathParam 2013-07-16 16:56:03 -07:00
Greg Wilkins 987aa846cc 398467 Servlet 3.1 Non Blocking IO
ensure that EOF is checked after all calls to nextContent
2013-07-15 14:28:22 +10:00
Greg Wilkins 981102fda5 398467 Servlet 3.1 Non Blocking IO
Asynchronous reads working.
2013-07-05 18:11:09 +10:00
Greg Wilkins e4716e05e1 Merge remote-tracking branch 'origin/master' into jetty-9.1
Conflicts:
	aggregates/jetty-all/pom.xml
	examples/async-rest/async-rest-jar/pom.xml
	examples/async-rest/async-rest-webapp/pom.xml
	examples/async-rest/pom.xml
	examples/embedded/pom.xml
	examples/pom.xml
	jetty-annotations/pom.xml
	jetty-ant/pom.xml
	jetty-client/pom.xml
	jetty-continuation/pom.xml
	jetty-deploy/pom.xml
	jetty-distribution/pom.xml
	jetty-http/pom.xml
	jetty-io/pom.xml
	jetty-jaas/pom.xml
	jetty-jaspi/pom.xml
	jetty-jmx/pom.xml
	jetty-jndi/pom.xml
	jetty-jsp/pom.xml
	jetty-jspc-maven-plugin/pom.xml
	jetty-maven-plugin/pom.xml
	jetty-monitor/pom.xml
	jetty-nosql/pom.xml
	jetty-osgi/jetty-osgi-boot-jsp/pom.xml
	jetty-osgi/jetty-osgi-boot-warurl/pom.xml
	jetty-osgi/jetty-osgi-boot/pom.xml
	jetty-osgi/jetty-osgi-httpservice/pom.xml
	jetty-osgi/jetty-osgi-npn/pom.xml
	jetty-osgi/pom.xml
	jetty-osgi/test-jetty-osgi-context/pom.xml
	jetty-osgi/test-jetty-osgi-webapp/pom.xml
	jetty-plus/pom.xml
	jetty-proxy/pom.xml
	jetty-rewrite/pom.xml
	jetty-runner/pom.xml
	jetty-security/pom.xml
	jetty-server/pom.xml
	jetty-servlet/pom.xml
	jetty-servlets/pom.xml
	jetty-spdy/pom.xml
	jetty-spdy/spdy-client/pom.xml
	jetty-spdy/spdy-core/pom.xml
	jetty-spdy/spdy-example-webapp/pom.xml
	jetty-spdy/spdy-http-server/pom.xml
	jetty-spdy/spdy-server/pom.xml
	jetty-spring/pom.xml
	jetty-start/pom.xml
	jetty-util-ajax/pom.xml
	jetty-util/pom.xml
	jetty-webapp/pom.xml
	jetty-websocket/pom.xml
	jetty-websocket/websocket-api/pom.xml
	jetty-websocket/websocket-client/pom.xml
	jetty-websocket/websocket-common/pom.xml
	jetty-websocket/websocket-server/pom.xml
	jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/Fuzzer.java
	jetty-websocket/websocket-servlet/pom.xml
	jetty-xml/pom.xml
	pom.xml
	tests/pom.xml
	tests/test-continuation/pom.xml
	tests/test-loginservice/pom.xml
	tests/test-sessions/pom.xml
	tests/test-sessions/test-hash-sessions/pom.xml
	tests/test-sessions/test-jdbc-sessions/pom.xml
	tests/test-sessions/test-sessions-common/pom.xml
	tests/test-webapps/pom.xml
	tests/test-webapps/test-jaas-webapp/pom.xml
	tests/test-webapps/test-jetty-webapp/pom.xml
	tests/test-webapps/test-jndi-webapp/pom.xml
	tests/test-webapps/test-mock-resources/pom.xml
	tests/test-webapps/test-proxy-webapp/pom.xml
	tests/test-webapps/test-servlet-spec/pom.xml
	tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
	tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
	tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
	tests/test-webapps/test-webapp-rfc2616/pom.xml
2013-06-27 09:12:28 +10:00
Joakim Erdfelt 78b5f7df1f [maven-release-plugin] prepare for next development iteration 2013-06-25 08:29:26 -07:00
Joakim Erdfelt 5f2c937fcb [maven-release-plugin] prepare release jetty-9.0.4.v20130625 2013-06-25 08:29:18 -07:00
Joakim Erdfelt 1a190a176e Making testcase more consistent 2013-06-25 07:38:26 -07:00
Jesse McConnell 8927c18840 reset versions for release 2013-06-21 15:28:26 -05:00
Jesse McConnell 018a51a04e Merge branch 'master' into release-9 2013-06-21 15:18:46 -05:00
Joakim Erdfelt ebe98022ab Making autobahn server disconnect happy 2013-06-21 12:46:10 -07:00