connection timeout #36

Open
stalexxx opened this Issue Apr 24, 2014 · 1 comment

Projects

None yet

2 participants

@stalexxx

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

Owner
beders commented Apr 24, 2014

Thank you. I'll have a look

Jochen

Sent from my phone

On Apr 24, 2014, at 7:39, stalexxx notifications@github.com 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment