Skip to content

Commit 2e96f05

Browse files
committed
Close streams in UploaderStrategy
- Eliminate logs like: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'end' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at java.util.zip.Inflater.<init>(Inflater.java:82) at com.android.okhttp.okio.GzipSource.<init>(GzipSource.java:62) at com.android.okhttp.internal.http.HttpEngine.unzip(HttpEngine.java:645) at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:827) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) at com.cloudinary.android.UploaderStrategy.callApi(UploaderStrategy.java:81) at com.cloudinary.Uploader.callApi(Uploader.java:22) at com.cloudinary.Uploader.upload(Uploader.java:55)
1 parent 87ab24d commit 2e96f05

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

cloudinary-android/src/main/java/com/cloudinary/android/UploaderStrategy.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.File;
66
import java.io.IOException;
77
import java.io.InputStream;
8+
import java.io.OutputStream;
89
import java.net.HttpURLConnection;
910
import java.util.Collection;
1011
import java.util.Map;
@@ -75,22 +76,38 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
7576
} else if (file instanceof byte[]) {
7677
multipart.addFilePart("file", new ByteArrayInputStream((byte[]) file), filename);
7778
}
79+
7880
HttpURLConnection connection = multipart.execute();
7981
int code;
82+
83+
OutputStream outputStream = null;
84+
8085
try {
8186
code = connection.getResponseCode();
82-
} catch (IOException e) {
87+
outputStream = connection.getOutputStream();
88+
} catch (Exception e) {
8389
if (e.getMessage().equals("No authentication challenges found")) {
8490
// Android trying to be clever...
8591
code = 401;
8692
} else {
8793
throw e;
8894
}
95+
} finally {
96+
if (outputStream != null) {
97+
try {
98+
outputStream.close();
99+
} catch (Exception e) {}
100+
}
89101
}
102+
90103
InputStream responseStream = code >= 400 ? connection.getErrorStream() : connection.getInputStream();
91104
String responseData = readFully(responseStream);
92105
connection.disconnect();
93106

107+
try {
108+
responseStream.close();
109+
} catch (Exception e) {}
110+
94111
if (code != 200 && code != 400 && code != 404 && code != 500) {
95112
throw new RuntimeException("Server returned unexpected status code - " + code + " - " + responseData);
96113
}

0 commit comments

Comments
 (0)