diff options
author | Greg Wilkins | 2011-12-20 01:00:48 +0000 |
---|---|---|
committer | Greg Wilkins | 2011-12-20 01:00:48 +0000 |
commit | b67961ada3830c83aadb404b4eaa888cd493f6c2 (patch) | |
tree | 0301a0538ebb2e0ac038975669a46a4b7eaf8e3d | |
parent | 569e9301857ac8ad8715d5cf1204bd120c426486 (diff) | |
download | org.eclipse.jetty.project-b67961ada3830c83aadb404b4eaa888cd493f6c2.tar.gz org.eclipse.jetty.project-b67961ada3830c83aadb404b4eaa888cd493f6c2.tar.xz org.eclipse.jetty.project-b67961ada3830c83aadb404b4eaa888cd493f6c2.zip |
JETTY-1463 websocket D0 parser should return progress even if no fill done
6 files changed, 22 insertions, 21 deletions
diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java index 6b141dbad3..b634bba1f9 100644 --- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java +++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java @@ -150,11 +150,10 @@ public class WebSocketConnectionD00 extends AbstractConnection implements WebSoc progress = flushed>0 || filled>0; - if (filled<0 || flushed<0) - { - _endp.close(); - break; - } + _endp.flush(); + + if (_endp instanceof AsyncEndPoint && ((AsyncEndPoint)_endp).hasProgressed()) + progress=true; } } catch(IOException e) @@ -162,7 +161,8 @@ public class WebSocketConnectionD00 extends AbstractConnection implements WebSoc LOG.debug(e); try { - _endp.close(); + if (_endp.isOpen()) + _endp.close(); } catch(IOException e2) { diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java index ed911036e9..47c45a5922 100644 --- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java +++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java @@ -235,7 +235,6 @@ public class WebSocketConnectionRFC6455 extends AbstractConnection implements We int filled=_parser.parseNext(); progress = flushed>0 || filled>0; - _endp.flush(); if (_endp instanceof AsyncEndPoint && ((AsyncEndPoint)_endp).hasProgressed()) diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParserD00.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParserD00.java index 4b8acb63a2..190ccde210 100644 --- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParserD00.java +++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParserD00.java @@ -33,6 +33,7 @@ import java.io.IOException; import org.eclipse.jetty.io.Buffer; import org.eclipse.jetty.io.Buffers; import org.eclipse.jetty.io.EndPoint; +import org.eclipse.jetty.util.TypeUtil; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -101,7 +102,7 @@ public class WebSocketParserD00 implements WebSocketParser if (_buffer==null) _buffer=_buffers.getBuffer(); - int total_filled=0; + int progress=0; // Loop until an datagram call back or can't fill anymore while(true) @@ -123,14 +124,14 @@ public class WebSocketParserD00 implements WebSocketParser { int filled=_endp.isOpen()?_endp.fill(_buffer):-1; if (filled<=0) - return total_filled; - total_filled+=filled; + return progress; + progress+=filled; length=_buffer.length(); } catch(IOException e) { LOG.debug(e); - return total_filled>0?total_filled:-1; + return progress>0?progress:-1; } } @@ -162,6 +163,7 @@ public class WebSocketParserD00 implements WebSocketParser { _state=STATE_START; int l=_buffer.getIndex()-_buffer.markIndex()-1; + progress++; _handler.onFrame((byte)0,_opcode,_buffer.sliceFromMark(l)); _buffer.setMarkIndex(-1); if (_buffer.length()==0) @@ -169,7 +171,7 @@ public class WebSocketParserD00 implements WebSocketParser _buffers.returnBuffer(_buffer); _buffer=null; } - return total_filled; + return progress; } continue; @@ -190,6 +192,7 @@ public class WebSocketParserD00 implements WebSocketParser Buffer data=_buffer.sliceFromMark(_length); _buffer.skip(_length); _state=STATE_START; + progress++; _handler.onFrame((byte)0, _opcode, data); if (_buffer.length()==0) @@ -198,7 +201,7 @@ public class WebSocketParserD00 implements WebSocketParser _buffer=null; } - return total_filled; + return progress; } } } diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/SafariWebsocketDraft0Test.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/SafariWebsocketDraft0Test.java index d9a5cb55df..0afb1dfae6 100644 --- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/SafariWebsocketDraft0Test.java +++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/SafariWebsocketDraft0Test.java @@ -45,8 +45,8 @@ public class SafariWebsocketDraft0Test public static void initLogging() { // Configure Logging - System.setProperty("org.eclipse.jetty.util.log.class",StdErrLog.class.getName()); - System.setProperty("org.eclipse.jetty.LEVEL","DEBUG"); + // System.setProperty("org.eclipse.jetty.util.log.class",StdErrLog.class.getName()); + // System.setProperty("org.eclipse.jetty.LEVEL","DEBUG"); } @Before @@ -74,11 +74,10 @@ public class SafariWebsocketDraft0Test } int port = conn.getLocalPort(); serverUri = new URI(String.format("ws://%s:%d/",host,port)); - System.out.printf("Server URI: %s%n",serverUri); + // System.out.printf("Server URI: %s%n",serverUri); } @Test - @Ignore public void testSendTextMessages() throws Exception { SafariD00 safari = new SafariD00(serverUri); @@ -106,7 +105,7 @@ public class SafariWebsocketDraft0Test } finally { - System.out.println("Closing client socket"); + // System.out.println("Closing client socket"); safari.disconnect(); } } diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/CaptureSocket.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/CaptureSocket.java index 5df3119d47..19233d4d29 100644 --- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/CaptureSocket.java +++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/CaptureSocket.java @@ -41,7 +41,7 @@ public class CaptureSocket implements WebSocket, WebSocket.OnTextMessage public void onMessage(String data) { - System.out.printf("Received Message \"%s\" [size %d]%n", data, data.length()); + // System.out.printf("Received Message \"%s\" [size %d]%n", data, data.length()); messages.add(data); } diff --git a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/SafariD00.java b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/SafariD00.java index d9731b3649..244e71cdc2 100644 --- a/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/SafariD00.java +++ b/jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/SafariD00.java @@ -80,7 +80,7 @@ public class SafariD00 req.append("Sec-WebSocket-Key2: 3? C;7~0 8 \" 3 2105 6 `_ {\r\n"); req.append("\r\n"); - System.out.printf("--- Request ---%n%s",req); + // System.out.printf("--- Request ---%n%s",req); byte reqBytes[] = req.toString().getBytes("UTF-8"); byte hixieBytes[] = TypeUtil.fromHexString("e739617916c9daf3"); @@ -101,7 +101,7 @@ public class SafariD00 while (!foundEnd) { line = br.readLine(); - System.out.printf("RESP: %s%n",line); + // System.out.printf("RESP: %s%n",line); if (line.length() == 0) { foundEnd = true; |