Resty icon indicating copy to clipboard operation
Resty copied to clipboard

connection timeout

Open stalexxx opened this issue 10 years ago • 1 comments

Funny bug that i've discovered, when mistakenly set timeout to 10 milliseconds

the bug in this code

void fill(URLConnection anUrlConnection) throws IOException { urlConnection = anUrlConnection; try { inputStream = anUrlConnection.getInputStream(); } catch (IOException e) { // Per http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html // (comparable documentation exists for later java versions) // if an HttpURLConnection was used clear the errorStream and close it // so that keep alive can keep doing its work if (anUrlConnection instanceof HttpURLConnection) { HttpURLConnection conn = (HttpURLConnection) anUrlConnection; InputStream es = new BufferedInputStream(conn.getErrorStream());

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            // read the response body
            byte[] buf = new byte[1024];
            int read = -1;
            while ((read = es.read(buf)) > 0) {
                baos.write(buf, 0, read);
            }

            // close the errorstream
            es.close();

            throw new IOException("Error while reading from " + conn.getRequestMethod() + ": [" + conn.getResponseCode() + "] "
                    + conn.getResponseMessage() + "\n" + new String(baos.toByteArray(), "UTF-8"), e);
        } else {
            throw e;
        }
    }
}

we are trying to read output while stream is already closed by urlConnections so never reaching throw section

stalexxx avatar Apr 24 '14 14:04 stalexxx

Thank you. I'll have a look

Jochen

Sent from my phone

On Apr 24, 2014, at 7:39, stalexxx [email protected] wrote:

Funny bug that i've discovered, when mistakenly set timeout to 10 milliseconds

the bug in this code

void fill(URLConnection anUrlConnection) throws IOException { urlConnection = anUrlConnection; try { inputStream = anUrlConnection.getInputStream(); } catch (IOException e) { // Per http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html // (comparable documentation exists for later java versions) // if an HttpURLConnection was used clear the errorStream and close it // so that keep alive can keep doing its work if (anUrlConnection instanceof HttpURLConnection) { HttpURLConnection conn = (HttpURLConnection) anUrlConnection; InputStream es = new BufferedInputStream(conn.getErrorStream());

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        // read the response body
        byte[] buf = new byte[1024];
        int read = -1;
        while ((read = es.read(buf)) > 0) {
            baos.write(buf, 0, read);
        }

        // close the errorstream
        es.close();

        throw new IOException("Error while reading from " + conn.getRequestMethod() + ": [" + conn.getResponseCode() + "] "
                + conn.getResponseMessage() + "\n" + new String(baos.toByteArray(), "UTF-8"), e);
    } else {
        throw e;
    }
}

} we are trying to read output while stream is already closed by urlConnections so never reaching throw section

— Reply to this email directly or view it on GitHub.

beders avatar Apr 24 '14 15:04 beders