Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2011-12-20 01:00:48 +0000
committerGreg Wilkins2011-12-20 01:00:48 +0000
commitb67961ada3830c83aadb404b4eaa888cd493f6c2 (patch)
tree0301a0538ebb2e0ac038975669a46a4b7eaf8e3d
parent569e9301857ac8ad8715d5cf1204bd120c426486 (diff)
downloadorg.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
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionD00.java12
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnectionRFC6455.java1
-rw-r--r--jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParserD00.java15
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/SafariWebsocketDraft0Test.java9
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/CaptureSocket.java2
-rw-r--r--jetty-websocket/src/test/java/org/eclipse/jetty/websocket/helper/SafariD00.java4
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;

Back to the top