From 012b1e7c2210ed6e1e0fad4e75558f7dd31c984c Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 1 Apr 2010 16:49:03 +0000 Subject: [PATCH] 307898 websocket connection returns if no progress git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@1435 7e9141cc-0065-0410-87d8-b60c137991c4 --- .../org/eclipse/jetty/websocket/WebSocketConnection.java | 8 +++----- .../java/org/eclipse/jetty/websocket/WebSocketParser.java | 6 ++++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnection.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnection.java index c37e8595937..3eef73bab17 100644 --- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnection.java +++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketConnection.java @@ -87,24 +87,22 @@ public class WebSocketConnection implements Connection, WebSocket.Outbound public Connection handle() throws IOException { - boolean more=true; + boolean progress=true; try { - while (more) + while (progress) { int flushed=_generator.flush(); int filled=_parser.parseNext(); - // TODO remove this potential busy loop. more should be true if content was parsed even if no bytes were filled! - more = flushed>0 || filled>0 || !_parser.isBufferEmpty(); + progress = flushed>0 || filled>0; if (filled<0 || flushed<0) { _endp.close(); break; } - } } catch(IOException e) diff --git a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParser.java b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParser.java index a463b507dc7..ade020f4d97 100644 --- a/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParser.java +++ b/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketParser.java @@ -63,7 +63,9 @@ public class WebSocketParser /** Parse to next event. * Parse to the next {@link EventHandler} event or until no more data is * available. Fill data from the {@link EndPoint} only as necessary. - * @return total bytes filled or -1 for EOF + * @return An indication of progress or otherwise. -1 indicates EOF, 0 indicates + * that no bytes were read and no messages parsed. A positive number indicates either + * the bytes filled or the messages parsed. */ public int parseNext() { @@ -172,7 +174,7 @@ public class WebSocketParser _buffer=null; } - return total_filled; + return 1; // the number of messages handled. } } }