diff options
author | Mark Wielaard <mark@klomp.org> | 2002-11-17 16:16:52 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2002-11-17 16:16:52 +0000 |
commit | b9ad851eef2923e08c8e3521fd1e48322b2189ee (patch) | |
tree | 9cd5d1a5eda63358fef6ead486f32246d7a43915 /libjava/java/net/HttpURLConnection.java | |
parent | e0c34466ec0ed0f8db4ad68cde05b83ebb2ffbe2 (diff) | |
download | gcc-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.java | 55 |
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); + } } /** |