1631 Commits

Author SHA1 Message Date
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
Joakim Erdfelt
395e8f1c8b Adding examples of managing the websocket extensions 2014-02-19 11:32:18 -07:00
Joakim Erdfelt
6b1f17b503 Demonstration of BFINAL 2014-02-19 11:32:18 -07:00
Joakim Erdfelt
c1f547e2b3 Adding javadoc 2014-02-19 11:32:18 -07:00
Simone Bordet
b8df85ec48 Session open and close are now logged at debug level. 2014-02-18 18:51:05 +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
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
b37c68db3b 427690 - Remove Mux Extension and related support. 2014-02-10 13:10:58 +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
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
Simone Bordet
cfe248c67b 427128 - Cookies are not sent to the server.
Implemented/fixed handling of cookies sent by client to server.
2014-02-03 12:49:58 +01:00
Simone Bordet
5e3c8821bb If ClientContainer is being stopped, then we can unregister it from
the ShutdownThread.

This happens when ClientContainer is added as a managed bean to a
ContainerLifeCycle and the container is stopped.
2014-02-03 12:09:27 +01:00
Joakim Erdfelt
1ff01f36eb Fixing SessionTest failures on windows due to file locking 2014-01-14 15:09:57 -07: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
fb8d55e46e 424735 - WebSocket / Make ServletUpgradeRequest expose its HttpServletRequest
+ Added ServletUpgradeRequest.getHttpServletRequest() to access the
  underlying HttpServletRequest.
+ Wrapping underlying post-upgraded HttpServletRequest object with
  many disabled methods that are no longer relevant at this
  post-upgraded state of the connection.
2014-01-07 14:50:59 -07:00
Joakim Erdfelt
259c624558 425038 - WebSocketClient leaks file handles when exceptions are thrown from open()
+ Close connection on open() exception
2014-01-07 13:19:01 -07:00
Joakim Erdfelt
44a7d23516 423646 - WebSocket / JSR / WebSocketContainer (Client) should have its LifeCycle stop on standalone use
+ Set Daemon on Executor and Scheduler threads to allow them to shutdown
  with the JVM
2014-01-07 13:08:10 -07:00
Joakim Erdfelt
f0eeb27921 424847 - Deadlock in deflate-frame (webkit binary)
+ Moving notification flows to outside of the synchronization blocks
2014-01-07 11:47:19 -07:00
Joakim Erdfelt
b59057c184 424863 - IllegalStateException "Unable to find decoder for type <javax.websocket.PongMessage>"
+ Expanding testing of PongMessage
+ Ensuring that .addMessage(MessageHandler.Whole<PongMessage>) works
+ Ensuring that ping or pong messages all goto assigned message
  handler for PongMessage, for both extends Endpoint and
  annotated @OnMessage
2014-01-06 17:54:57 -07:00
Joakim Erdfelt
8016065823 424706 - The setMaxIdleTimeout of javax.websocket.Session does not take any affect
+ Making sure that JsrSession updates Connection on use of
  setMaxIdleTimeout after a connection has been opened.
2014-01-06 15:07:02 -07:00
Joakim Erdfelt
a12fd9ea03 Happy New Year - 2014! 2014-01-02 14:50:14 -07:00
Joakim Erdfelt
118fc97fe1 424734 - WebSocket / Expose Locale information from ServletUpgradeRequest 2013-12-29 17:05:41 -07:00
Joakim Erdfelt
5380430b75 Tweaking idle timeout 2013-12-20 13:22:01 -07:00