diff options
author | Koushik Dutta <koushd@gmail.com> | 2014-08-26 01:13:10 -0700 |
---|---|---|
committer | Koushik Dutta <koushd@gmail.com> | 2014-08-26 01:13:15 -0700 |
commit | 3f9ececb5057cce5a069651edbc30d5b56a1b836 (patch) | |
tree | 438fc36e46f1e96a4289d7ce7cdc8316203eaec6 /AndroidAsync | |
parent | f3213fed8a1f68d8c1c8098f7fc84b318abc7a89 (diff) | |
download | AndroidAsync-3f9ececb5057cce5a069651edbc30d5b56a1b836.tar.gz AndroidAsync-3f9ececb5057cce5a069651edbc30d5b56a1b836.tar.bz2 AndroidAsync-3f9ececb5057cce5a069651edbc30d5b56a1b836.zip |
Fix up leaky alloctions.
Diffstat (limited to 'AndroidAsync')
5 files changed, 13 insertions, 11 deletions
diff --git a/AndroidAsync/AndroidAsync-AndroidAsync.iml b/AndroidAsync/AndroidAsync-AndroidAsync.iml index bf5ba2c..73665c3 100644 --- a/AndroidAsync/AndroidAsync-AndroidAsync.iml +++ b/AndroidAsync/AndroidAsync-AndroidAsync.iml @@ -37,22 +37,22 @@ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/test/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/test/assets" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/test/src" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> diff --git a/AndroidAsync/src/com/koushikdutta/async/AsyncNetworkSocket.java b/AndroidAsync/src/com/koushikdutta/async/AsyncNetworkSocket.java index 9a15cb2..19fd2c3 100644 --- a/AndroidAsync/src/com/koushikdutta/async/AsyncNetworkSocket.java +++ b/AndroidAsync/src/com/koushikdutta/async/AsyncNetworkSocket.java @@ -174,6 +174,9 @@ public class AsyncNetworkSocket implements AsyncSocket { pending.add(b); Util.emitAllData(this, pending); } + else { + ByteBufferList.reclaim(b); + } if (closed) { reportEndPending(null); diff --git a/AndroidAsync/src/com/koushikdutta/async/AsyncSSLSocketWrapper.java b/AndroidAsync/src/com/koushikdutta/async/AsyncSSLSocketWrapper.java index 36d087c..0e8ab19 100644 --- a/AndroidAsync/src/com/koushikdutta/async/AsyncSSLSocketWrapper.java +++ b/AndroidAsync/src/com/koushikdutta/async/AsyncSSLSocketWrapper.java @@ -388,10 +388,8 @@ public class AsyncSSLSocketWrapper implements AsyncSocketWrapper, AsyncSSLSocket // if the handshake is finished, don't send // 0 bytes of data, since that makes the ssl connection die. // it wraps a 0 byte package, and craps out. - if (finishedHandshake && bb.remaining() == 0) { - mWrapping = false; - return; - } + if (finishedHandshake && bb.remaining() == 0) + break; remaining = bb.remaining(); try { ByteBuffer[] arr = bb.getAllArray(); @@ -417,6 +415,7 @@ public class AsyncSSLSocketWrapper implements AsyncSocketWrapper, AsyncSSLSocket while ((remaining != bb.remaining() || (res != null && res.getHandshakeStatus() == HandshakeStatus.NEED_WRAP)) && mSink.remaining() == 0); ByteBufferList.reclaim(mWriteTmp); mWrapping = false; + ByteBufferList.reclaim(writeBuf); } @Override diff --git a/AndroidAsync/src/com/koushikdutta/async/http/ResponseCacheMiddleware.java b/AndroidAsync/src/com/koushikdutta/async/http/ResponseCacheMiddleware.java index 851d77d..3715fb7 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/ResponseCacheMiddleware.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/ResponseCacheMiddleware.java @@ -416,10 +416,12 @@ public class ResponseCacheMiddleware extends SimpleMiddleware { FileInputStream din = cacheResponse.getBody(); int read = din.read(buffer.array(), buffer.arrayOffset(), buffer.capacity()); if (read == -1) { + ByteBufferList.reclaim(buffer); allowEnd = true; report(null); return; } + allocator.track(read); buffer.limit(read); pending.add(buffer); } diff --git a/AndroidAsync/src/com/koushikdutta/async/http/filter/InflaterInputFilter.java b/AndroidAsync/src/com/koushikdutta/async/http/filter/InflaterInputFilter.java index 8ec87f2..3ae1363 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/filter/InflaterInputFilter.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/filter/InflaterInputFilter.java @@ -36,8 +36,7 @@ public class InflaterInputFilter extends FilteredDataEmitter { int inflated = mInflater.inflate(output.array(), output.arrayOffset() + output.position(), output.remaining()); output.position(output.position() + inflated); if (!output.hasRemaining()) { - output.limit(output.position()); - output.position(0); + output.flip(); transformed.add(output); assert totalRead != 0; int newSize = output.capacity() * 2; @@ -48,8 +47,7 @@ public class InflaterInputFilter extends FilteredDataEmitter { } ByteBufferList.reclaim(b); } - output.limit(output.position()); - output.position(0); + output.flip(); transformed.add(output); Util.emitAllData(this, transformed); |