aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net/HttpURLConnection.java
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2002-11-17 16:16:52 +0000
committerMark Wielaard <mark@gcc.gnu.org>2002-11-17 16:16:52 +0000
commitb9ad851eef2923e08c8e3521fd1e48322b2189ee (patch)
tree9cd5d1a5eda63358fef6ead486f32246d7a43915 /libjava/java/net/HttpURLConnection.java
parente0c34466ec0ed0f8db4ad68cde05b83ebb2ffbe2 (diff)
downloadgcc-b9ad851eef2923e08c8e3521fd1e48322b2189ee.zip
gcc-b9ad851eef2923e08c8e3521fd1e48322b2189ee.tar.gz
gcc-b9ad851eef2923e08c8e3521fd1e48322b2189ee.tar.bz2
HttpURLConnection.java ((getPermission): Take port into consideration.
* java/net/HttpURLConnection.java ((getPermission): Take port into consideration. (getErrorStream): Implement. From-SVN: r59196
Diffstat (limited to 'libjava/java/net/HttpURLConnection.java')
-rw-r--r--libjava/java/net/HttpURLConnection.java55
1 files changed, 50 insertions, 5 deletions
diff --git a/libjava/java/net/HttpURLConnection.java b/libjava/java/net/HttpURLConnection.java
index 85a3ea4..e914b19 100644
--- a/libjava/java/net/HttpURLConnection.java
+++ b/libjava/java/net/HttpURLConnection.java
@@ -495,17 +495,62 @@ public abstract class HttpURLConnection extends URLConnection
*/
public Permission getPermission() throws IOException
{
- return new SocketPermission (url.getHost (), "connect");
+ URL url = getURL();
+ String host = url.getHost();
+ int port = url.getPort();
+ if (port == -1)
+ port = 80;
+
+ host = host + ":" + port;
+
+ return new SocketPermission(host, "connect");
}
/**
- * Returns the error stream if the connection failed but the server sent
- * useful data nonetheless
+ * This method allows the caller to retrieve any data that might have
+ * been sent despite the fact that an error occurred. For example, the
+ * HTML page sent along with a 404 File Not Found error. If the socket
+ * is not connected, or if no error occurred or no data was returned,
+ * this method returns <code>null</code>.
+ *
+ * @return An <code>InputStream</code> for reading error data.
*/
public InputStream getErrorStream ()
{
- // FIXME: implement this
- return null;
+ if (!connected)
+ return(null);
+
+ int code;
+ try
+ {
+ code = getResponseCode();
+ }
+ catch(IOException e)
+ {
+ code = -1;
+ }
+
+ if (code == -1)
+ return(null);
+
+ if (((code/100) != 4) || ((code/100) != 5))
+ return(null);
+
+ try
+ {
+ PushbackInputStream pbis = new PushbackInputStream(getInputStream());
+
+ int i = pbis.read();
+ if (i == -1)
+ return(null);
+
+ pbis.unread(i);
+ return(pbis);
+ }
+ catch(IOException e)
+ {
+ return(null);
+ }
}
/**