as the QueuedThreadPool was being stopped, jobs could be taken out of
the QueuedThreadPool job queue but then not run
also cleaned up QueuedThreadPool _runnable code to simplify it
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
Nulling out values in WebSocketAdapter causes race conditions when
trying to access session and endpoint externally
Race condition in WebSocketChannel.Flusher.onCompleteFailure(),
processConnectionError should be called first to ensure that the
correct close reason is processed, super.onCompleteFailure() was closing
the connection causing a read failure.
race condition between the server detecting a read failure and sending
a response and the client detecting the write failure, now blocking
on the server so it is not reading and will not detect the failure
Signed-off-by: lachan-roberts <lachlan@webtide.com>
WebSocketServlet could only be used with the jetty-websocket-api
make this generic and add implementation in websocket-server
this prevents jetty-websocket-server from needing to use core classes
can cause class cast exceptions from a webapp due conflicts between the
clients version of core classes and those provided by the container
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
ExtensionStack.negotiate now differentiates between incorrect
extension config offered or incorrect config from negotiation
adding more BadMessageException cases
Signed-off-by: lachan-roberts <lachlan@webtide.com>
that is causing problems from within OSGi.
+ Renamed TestableJettyServer to XmlBasedJettyServer to avoid
it being picked up as a Test class (due it starting with the
name "Test")
+ Renamed .addConfiguration() to .addXmlConfiguration() to
reflect true nature, and also to avoid naming confusion
with new Configuration infrastructure in Jetty.
Signed-off-by: Joakim Erdfelt <joakim.erdfelt@gmail.com>
Introduced SslContextFactory subclasses Client and Server.
Replaced all usages of SslContextFactory with either Client or Server
as required.
Refactored configuration checking so that warnings are not emitted
when non necessary.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
default behaviour of Negotiation no longer includes all of the
offered extensions as the negotiated extensions but it now takes
only the first extension if there are multiple of the same name,
this is now done when the negotiation is created and can be overwritten
by the negotiator
Throw exception on websocket errors so the proper status code can
be reported back to the client
fix to checking for multiple negotiated extensions of the same name
added tests for core and jetty websockets for the negotiation
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>