This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: Patch: gnu.java.net.protocol.http.Connection


Hi list,


I commited the attached patch to merge gnu.java.net.protocol.http.Connection 
more with classpath's version.


Michael
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2493
diff -u -b -B -r1.2493 ChangeLog
--- ChangeLog	27 Dec 2003 14:21:06 -0000	1.2493
+++ ChangeLog	27 Dec 2003 17:24:07 -0000
@@ -1,5 +1,13 @@
 2003-12-27  Michael Koch  <konqueror@gmx.de>
 
+	* gnu/java/net/protocol/http/Connection.java
+	(connect): Call receiveReply().
+	(receiveReply): Renamed from getHttpHeaders().
+	(getOutputStream): Moved check on doOutput before check for connection
+	state.
+
+2003-12-27  Michael Koch  <konqueror@gmx.de>
+
 	* javax/print/attribute/ResolutionSyntax.java,
 	javax/print/attribute/SetOfIntegerSyntax.java,
 	javax/print/attribute/Size2DSyntax.java,
Index: gnu/java/net/protocol/http/Connection.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/net/protocol/http/Connection.java,v
retrieving revision 1.7
diff -u -b -B -r1.7 Connection.java
--- gnu/java/net/protocol/http/Connection.java	4 Dec 2003 17:52:01 -0000	1.7
+++ gnu/java/net/protocol/http/Connection.java	27 Dec 2003 17:24:07 -0000
@@ -172,7 +172,8 @@
     inputStream = new BufferedInputStream(socket.getInputStream());
 
     sendRequest();
-    getHttpHeaders();
+    receiveReply();
+
     connected = true;
   }
 
@@ -226,6 +227,62 @@
   }
 
   /**
+   * Read HTTP reply from inputStream.
+   */
+  private void receiveReply() throws IOException
+  {
+    int buflen = 100;
+    byte[] buf = new byte[buflen];
+    String line = "";
+    boolean gotnl = false;
+    byte[] ch = new byte[1];
+    ch[0] = (byte) '\n';
+
+    while (true)
+      {
+	// Check for leftover byte from non-'\n' after a '\r'.
+	if (ch[0] != '\n')
+	  line = line + '\r' + new String(ch, 0, 1);
+
+	int i;
+	// FIXME: This is rather inefficient.
+	for (i = 0; i < buflen; i++)
+	  {
+	    buf[i] = (byte) inputStream.read();
+	    if (buf[i] == -1)
+	      throw new IOException("Malformed HTTP header");
+	    if (buf[i] == '\r')
+	      {
+	        inputStream.read(ch, 0, 1);
+		if (ch[0] == '\n')
+		  gotnl = true;
+		break;
+	      }
+	  }
+	line = line + new String(buf, 0, i);
+
+	// A '\r' '\n' combo indicates the end of the header entry.
+	// If it wasn't found, cycle back through the loop and append
+	// to 'line' until one is found.
+	if (gotnl)
+	  {
+	    // A zero length entry signals the end of the headers.
+	    if (line.length() == 0)
+	      break;
+
+	    // Store the header and reinitialize for next cycle.
+	    hdrVec.addElement(line);
+	    String key = getKey(line);
+	    if (key != null)
+	      hdrHash.put(key.toLowerCase(), getField(line));
+	    line = "";
+	    ch[0] = (byte) '\n';
+	    gotnl = false;
+	  }
+      }
+  }
+
+  /**
    * Return a boolean indicating whether or not this connection is
    * going through a proxy
    *
@@ -256,14 +313,22 @@
     return inputStream;
   }
 
+  /**
+   * Returns on OutputStream for writing to this connection.
+   *
+   * @return An OutputStream for this connection.
+   *
+   * @exception IOException If an error occurs
+   */
   public OutputStream getOutputStream() throws IOException
   {
+    if (!doOutput)
+      throw new ProtocolException
+        ("Want output stream while haven't setDoOutput(true)");
+    
     if (!connected)
       connect();
 
-    if (! doOutput)
-      throw new ProtocolException("Can't open OutputStream if doOutput is false");
-    
     return socket.getOutputStream();
   }
 
@@ -388,61 +453,5 @@
       return str.substring(index + 1).trim();
     else
       return str;
-  }
-
-  /**
-   * Read HTTP reply from inputStream.
-   */
-  private void getHttpHeaders() throws IOException
-  {
-    int buflen = 100;
-    byte[] buf = new byte[buflen];
-    String line = "";
-    boolean gotnl = false;
-    byte[] ch = new byte[1];
-    ch[0] = (byte) '\n';
-
-    while (true)
-      {
-	// Check for leftover byte from non-'\n' after a '\r'.
-	if (ch[0] != '\n')
-	  line = line + '\r' + new String(ch, 0, 1);
-
-	int i;
-	// FIXME: This is rather inefficient.
-	for (i = 0; i < buflen; i++)
-	  {
-	    buf[i] = (byte) inputStream.read();
-	    if (buf[i] == -1)
-	      throw new IOException("Malformed HTTP header");
-	    if (buf[i] == '\r')
-	      {
-	        inputStream.read(ch, 0, 1);
-		if (ch[0] == '\n')
-		  gotnl = true;
-		break;
-	      }
-	  }
-	line = line + new String(buf, 0, i);
-
-	// A '\r' '\n' combo indicates the end of the header entry.
-	// If it wasn't found, cycle back through the loop and append
-	// to 'line' until one is found.
-	if (gotnl)
-	  {
-	    // A zero length entry signals the end of the headers.
-	    if (line.length() == 0)
-	      break;
-
-	    // Store the header and reinitialize for next cycle.
-	    hdrVec.addElement(line);
-	    String key = getKey(line);
-	    if (key != null)
-	      hdrHash.put(key.toLowerCase(), getField(line));
-	    line = "";
-	    ch[0] = (byte) '\n';
-	    gotnl = false;
-	  }
-      }
   }
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]