You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by jo...@apache.org on 2006/05/13 00:48:37 UTC

svn commit: r405921 - in /webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH: changes.xml src/java/org/apache/xmlrpc/WebServer.java

Author: jochen
Date: Fri May 12 15:48:37 2006
New Revision: 405921

URL: http://svn.apache.org/viewcvs?rev=405921&view=rev
Log:
Eliminated a possible endless loop in the WebServer. Avoiding
a NoSuchElementException in the WebServer when the request
was closed.
Submitted-By: Elizabeth Fong, elizabeth@threerings.net

Modified:
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml
    webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/WebServer.java

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml?rev=405921&r1=405920&r2=405921&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/changes.xml Fri May 12 15:48:37 2006
@@ -22,6 +22,12 @@
         Added the TimingOutCallback, which allows to abort a request,
         if the server doesn't reply within a given time.
       </action>
+      <action dev="jochen" type="fix" due-to="Elizabeth Fong"
+          due-to-email="elizabeth@threerings.net">
+        Eliminated a possible endless loop in the WebServer. Avoiding
+        a NoSuchElementException in the WebServer when the request
+        was closed.
+      </action>
     </release>
     <release version="2.0.1" date="28-Dec-2005">
       <action dev="jochen" type="fix" issue="XMLRPC-68"

Modified: webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/WebServer.java
URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/WebServer.java?rev=405921&r1=405920&r2=405921&view=diff
==============================================================================
--- webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/WebServer.java (original)
+++ webservices/xmlrpc/branches/XMLRPC_2_0_BRANCH/src/java/org/apache/xmlrpc/WebServer.java Fri May 12 15:48:37 2006
@@ -19,6 +19,7 @@
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.EOFException;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.io.UnsupportedEncodingException;
@@ -31,6 +32,7 @@
 import java.util.Stack;
 import java.util.StringTokenizer;
 import java.util.Vector;
+
 import org.apache.commons.codec.binary.Base64;
 
 /**
@@ -719,8 +721,12 @@
 
                     // tokenize first line of HTTP request
                     StringTokenizer tokens = new StringTokenizer(line);
+                    if (!tokens.hasMoreElements())
+                    {
+                        continue;
+                    }
                     String method = tokens.nextToken();
-                    String uri = tokens.nextToken();
+                    tokens.nextToken(); // Discard the URI
                     String httpVersion = tokens.nextToken();
                     keepAlive = XmlRpc.getKeepAlive()
                             && HTTP_11.equals(httpVersion);
@@ -776,6 +782,10 @@
                 }
                 while (keepAlive);
             }
+            catch (EOFException ignore)
+            {
+                // Ignore me
+            }
             catch (Exception exception)
             {
                 if (XmlRpc.debug)
@@ -818,6 +828,10 @@
             for (;;)
             {
                 next = input.read();
+                if (count == 0 && next < 0)
+                {
+                    throw new EOFException("Connection closed");
+                }
                 if (next < 0 || next == '\n')
                 {
                     break;