Skip to content

Commit d903cac

Browse files
committed
work on fixing issue55
1 parent b6db559 commit d903cac

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

AndroidAsync/src/com/koushikdutta/async/AsyncSSLSocketWrapper.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public class AsyncSSLSocketWrapper implements AsyncSocketWrapper, AsyncSSLSocket
2828
AsyncSocket mSocket;
2929
BufferedDataEmitter mEmitter;
3030
BufferedDataSink mSink;
31-
ByteBuffer mReadTmp = ByteBufferList.obtain(8192);
3231
boolean mUnwrapping = false;
3332
HostnameVerifier hostnameVerifier;
3433

@@ -78,20 +77,18 @@ public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
7877
try {
7978
mUnwrapping = true;
8079

81-
mReadTmp.position(0);
82-
mReadTmp.limit(mReadTmp.capacity());
83-
8480
ByteBuffer b = ByteBufferList.EMPTY_BYTEBUFFER;
8581
while (true) {
8682
if (b.remaining() == 0 && bb.size() > 0) {
8783
b = bb.remove();
8884
}
8985
int remaining = b.remaining();
9086

91-
SSLEngineResult res = engine.unwrap(b, mReadTmp);
87+
ByteBuffer read = ByteBufferList.obtain(remaining * 2);
88+
89+
SSLEngineResult res = engine.unwrap(b, read);
90+
addToPending(transformed, read);
9291
if (res.getStatus() == Status.BUFFER_OVERFLOW) {
93-
addToPending(transformed);
94-
mReadTmp = ByteBufferList.obtain(mReadTmp.remaining() * 2);
9592
remaining = -1;
9693
}
9794
else if (res.getStatus() == Status.BUFFER_UNDERFLOW) {
@@ -109,7 +106,6 @@ else if (res.getStatus() == Status.BUFFER_UNDERFLOW) {
109106
}
110107
}
111108

112-
addToPending(transformed);
113109
Util.emitAllData(AsyncSSLSocketWrapper.this, transformed);
114110
}
115111
catch (Exception ex) {
@@ -123,12 +119,14 @@ else if (res.getStatus() == Status.BUFFER_UNDERFLOW) {
123119
});
124120
}
125121

126-
void addToPending(ByteBufferList out) {
127-
if (mReadTmp.position() > 0) {
128-
mReadTmp.limit(mReadTmp.position());
129-
mReadTmp.position(0);
130-
out.add(mReadTmp);
131-
mReadTmp = ByteBufferList.obtain(mReadTmp.capacity());
122+
void addToPending(ByteBufferList out, ByteBuffer read) {
123+
if (read.position() > 0) {
124+
read.limit(read.position());
125+
read.position(0);
126+
out.add(read);
127+
}
128+
else {
129+
ByteBufferList.reclaim(read);
132130
}
133131
}
134132

0 commit comments

Comments
 (0)