From 92e427d7c66091c9731afd02f83f2d4ba08dc395 Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Thu, 24 Apr 2014 11:29:03 -0700 Subject: [PATCH] Close the source after reading regardless of result. --- .../okhttp/internal/huc/JavaApiConverterTest.java | 2 +- okhttp/src/main/java/com/squareup/okhttp/Response.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/huc/JavaApiConverterTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/huc/JavaApiConverterTest.java index 51468b976..ac9b48fa8 100644 --- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/huc/JavaApiConverterTest.java +++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/huc/JavaApiConverterTest.java @@ -189,7 +189,6 @@ public class JavaApiConverterTest { assertEquals("Fantastic", response.message()); Headers okResponseHeaders = response.headers(); assertEquals("baz", okResponseHeaders.get("xyzzy")); - assertEquals(body, response.body().string()); if (isSecure) { Handshake handshake = response.handshake(); assertNotNull(handshake); @@ -204,6 +203,7 @@ public class JavaApiConverterTest { } else { assertNull(response.handshake()); } + assertEquals(body, response.body().string()); } @Test public void createOkResponse_fromCacheResponse() throws Exception { diff --git a/okhttp/src/main/java/com/squareup/okhttp/Response.java b/okhttp/src/main/java/com/squareup/okhttp/Response.java index ae9adf8ab..b1d91751f 100644 --- a/okhttp/src/main/java/com/squareup/okhttp/Response.java +++ b/okhttp/src/main/java/com/squareup/okhttp/Response.java @@ -15,6 +15,7 @@ */ package com.squareup.okhttp; +import com.squareup.okhttp.internal.Util; import com.squareup.okhttp.internal.http.OkHeaders; import java.io.Closeable; import java.io.IOException; @@ -205,8 +206,14 @@ public final class Response { // } // return bytes; + BufferedSource source = source(); Buffer buffer = new Buffer(); - long contentRead = buffer.writeAll(source()); + long contentRead; + try { + contentRead = buffer.writeAll(source); + } finally { + Util.closeQuietly(source); + } if (contentLength != -1 && contentLength != contentRead) { throw new IOException("Content-Length and stream length disagree"); }