This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
FYI: Patch: gnu.java.net.protocol.http.Connection
- From: Michael Koch <konqueror at gmx dot de>
- To: java-patches at gcc dot gnu dot org
- Date: Sat, 27 Dec 2003 18:28:59 +0100
- Subject: 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;
- }
- }
}
}