399689 - Websocket RFC6455 extension handshake fails if server doesn't have extension
+ Fixing the fix that fixed the negotation to fix a bad fixation of the negotiated extensions
This commit is contained in:
parent
552ec4ae36
commit
89d8972e74
|
@ -33,7 +33,7 @@ import org.eclipse.jetty.websocket.common.extensions.AbstractExtension;
|
|||
*/
|
||||
public class FrameCompressionExtension extends AbstractExtension
|
||||
{
|
||||
private DeflateCompressionMethod method;
|
||||
private CompressionMethod method = new DeflateCompressionMethod();
|
||||
|
||||
@Override
|
||||
public void incomingFrame(Frame frame)
|
||||
|
@ -121,8 +121,6 @@ public class FrameCompressionExtension extends AbstractExtension
|
|||
public void setConfig(ExtensionConfig config)
|
||||
{
|
||||
super.setConfig(config);
|
||||
|
||||
method = new DeflateCompressionMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -55,7 +55,6 @@ public class HandshakeRFC6455 implements WebSocketHandshake
|
|||
|
||||
if (response.getExtensions() != null)
|
||||
{
|
||||
response.setExtensions(response.getExtensions());
|
||||
for (ExtensionConfig ext : response.getExtensions())
|
||||
{
|
||||
response.addHeader("Sec-WebSocket-Extensions",ext.getParameterizedName());
|
||||
|
|
|
@ -72,8 +72,8 @@ public abstract class WebSocketHandler extends HandlerWrapper
|
|||
@Override
|
||||
protected void doStart() throws Exception
|
||||
{
|
||||
super.doStart();
|
||||
configure(webSocketFactory);
|
||||
super.doStart();
|
||||
}
|
||||
|
||||
public WebSocketServletFactory getWebSocketFactory()
|
||||
|
|
|
@ -25,6 +25,8 @@ import org.eclipse.jetty.util.log.Log;
|
|||
import org.eclipse.jetty.util.log.Logger;
|
||||
import org.eclipse.jetty.websocket.api.UpgradeRequest;
|
||||
import org.eclipse.jetty.websocket.api.UpgradeResponse;
|
||||
import org.eclipse.jetty.websocket.common.extensions.compress.FrameCompressionExtension;
|
||||
import org.eclipse.jetty.websocket.common.extensions.compress.MessageCompressionExtension;
|
||||
import org.eclipse.jetty.websocket.server.WebSocketHandler;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
|
||||
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
|
||||
|
@ -109,8 +111,8 @@ public class BrowserDebugTool implements WebSocketCreator
|
|||
LOG.debug("Configuring WebSocketServerFactory ...");
|
||||
|
||||
// Setup some extensions we want to test against
|
||||
// factory.getExtensionFactory().register("x-webkit-deflate-frame",FrameCompressionExtension.class);
|
||||
// factory.getExtensionFactory().register("permessage-compress",MessageCompressionExtension.class);
|
||||
factory.getExtensionFactory().register("x-webkit-deflate-frame",FrameCompressionExtension.class);
|
||||
factory.getExtensionFactory().register("permessage-compress",MessageCompressionExtension.class);
|
||||
|
||||
// Setup the desired Socket to use for all incoming upgrade requests
|
||||
factory.setCreator(BrowserDebugTool.this);
|
||||
|
|
|
@ -56,7 +56,7 @@ public class BrowserSocket
|
|||
char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-|{}[]():".toCharArray();
|
||||
int lettersLen = letters.length;
|
||||
char randomText[] = new char[size];
|
||||
Random rand = new Random();
|
||||
Random rand = new Random(42);
|
||||
String msg;
|
||||
|
||||
for (int n = 0; n < count; n++)
|
||||
|
@ -66,7 +66,7 @@ public class BrowserSocket
|
|||
{
|
||||
randomText[i] = letters[rand.nextInt(lettersLen)];
|
||||
}
|
||||
msg = String.format("Many [%s]",String.valueOf(randomText));
|
||||
msg = String.format("ManyThreads [%s]",String.valueOf(randomText));
|
||||
remote.sendStringByFuture(msg);
|
||||
}
|
||||
}
|
||||
|
@ -88,6 +88,7 @@ public class BrowserSocket
|
|||
@OnWebSocketConnect
|
||||
public void onConnect(Session session)
|
||||
{
|
||||
LOG.info("Connect [{}]",session);
|
||||
this.session = session;
|
||||
this.remote = session.getRemote();
|
||||
}
|
||||
|
@ -190,7 +191,7 @@ public class BrowserSocket
|
|||
char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-|{}[]():".toCharArray();
|
||||
int lettersLen = letters.length;
|
||||
char randomText[] = new char[size];
|
||||
Random rand = new Random();
|
||||
Random rand = new Random(42);
|
||||
|
||||
for (int n = 0; n < count; n++)
|
||||
{
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
$("close").onclick = function(event) {wstool.close(); return false; }
|
||||
$("info").onclick = function(event) {wstool.write("info:"); return false; }
|
||||
$("time").onclick = function(event) {wstool.write("time:"); return false; }
|
||||
$("many").onclick = function(event) {wstool.write("many:15,30"); return false; }
|
||||
$("many").onclick = function(event) {wstool.write("many:15,300"); return false; }
|
||||
$("manythreads").onclick = function(event) {wstool.write("manythreads:20,25,60"); return false; }
|
||||
$("hello").onclick = function(event) {wstool.write("Hello"); return false; }
|
||||
$("there").onclick = function(event) {wstool.write("There"); return false; }
|
||||
|
|
|
@ -26,6 +26,8 @@ var wstool = {
|
|||
|
||||
wstool.info("Document URI: " + document.location);
|
||||
wstool.info("WS URI: " + location);
|
||||
|
||||
this._scount = 0;
|
||||
|
||||
try {
|
||||
this._ws = new WebSocket(location, "tool");
|
||||
|
@ -61,7 +63,8 @@ var wstool = {
|
|||
},
|
||||
|
||||
infos : function(message) {
|
||||
wstool._out("server", "[s] " + message);
|
||||
this._scount++;
|
||||
wstool._out("server", "[s" + this._scount + "] " + message);
|
||||
},
|
||||
|
||||
setState : function(enabled) {
|
||||
|
|
Loading…
Reference in New Issue