@@ -28,7 +28,6 @@ public class AsyncSSLSocketWrapper implements AsyncSocketWrapper, AsyncSSLSocket
28
28
AsyncSocket mSocket ;
29
29
BufferedDataEmitter mEmitter ;
30
30
BufferedDataSink mSink ;
31
- ByteBuffer mReadTmp = ByteBufferList .obtain (8192 );
32
31
boolean mUnwrapping = false ;
33
32
HostnameVerifier hostnameVerifier ;
34
33
@@ -78,20 +77,18 @@ public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
78
77
try {
79
78
mUnwrapping = true ;
80
79
81
- mReadTmp .position (0 );
82
- mReadTmp .limit (mReadTmp .capacity ());
83
-
84
80
ByteBuffer b = ByteBufferList .EMPTY_BYTEBUFFER ;
85
81
while (true ) {
86
82
if (b .remaining () == 0 && bb .size () > 0 ) {
87
83
b = bb .remove ();
88
84
}
89
85
int remaining = b .remaining ();
90
86
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 );
92
91
if (res .getStatus () == Status .BUFFER_OVERFLOW ) {
93
- addToPending (transformed );
94
- mReadTmp = ByteBufferList .obtain (mReadTmp .remaining () * 2 );
95
92
remaining = -1 ;
96
93
}
97
94
else if (res .getStatus () == Status .BUFFER_UNDERFLOW ) {
@@ -109,7 +106,6 @@ else if (res.getStatus() == Status.BUFFER_UNDERFLOW) {
109
106
}
110
107
}
111
108
112
- addToPending (transformed );
113
109
Util .emitAllData (AsyncSSLSocketWrapper .this , transformed );
114
110
}
115
111
catch (Exception ex ) {
@@ -123,12 +119,14 @@ else if (res.getStatus() == Status.BUFFER_UNDERFLOW) {
123
119
});
124
120
}
125
121
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 );
132
130
}
133
131
}
134
132
0 commit comments