@@ -84,17 +84,17 @@ protected void handleReceivedData(int receivedBytes, ByteBuffer readingBuffer) {
8484 protected int readPackets (ByteBuffer readingBuffer ) {
8585 ByteBuffer networkBuffer = moveDataToNetworkBuffer (readingBuffer );
8686 HandshakeStatus handshakeStatus = sslEngine .getHandshakeStatus ();
87- if (SslUtils .isReadyToDecrypt (handshakeStatus )) {
87+ if (SslUtils .isReadyToCrypt (handshakeStatus )) {
8888 return decryptAndRead (networkBuffer );
8989 } else {
9090 return doHandshake (networkBuffer , networkBuffer .limit ());
9191 }
9292 }
9393
94- private ByteBuffer moveDataToNetworkBuffer (ByteBuffer readingBuffer ) {
94+ protected ByteBuffer moveDataToNetworkBuffer (ByteBuffer readingBuffer ) {
9595 ByteBuffer sslNetworkBuffer = sslNetworkBuffer ();
96- int freeSpace = sslNetworkBuffer .capacity () - sslNetworkBuffer .limit ();
97- if (freeSpace >= readingBuffer .limit ()) {
96+ int availableSpace = sslNetworkBuffer .capacity () - sslNetworkBuffer .limit ();
97+ if (availableSpace >= readingBuffer .limit ()) {
9898 BufferUtils .appendAndClear (sslNetworkBuffer , readingBuffer );
9999 } else {
100100 sslNetworkBuffer = increaseNetworkBuffer (readingBuffer .limit ());
@@ -103,7 +103,7 @@ private ByteBuffer moveDataToNetworkBuffer(ByteBuffer readingBuffer) {
103103 return sslNetworkBuffer ;
104104 }
105105
106- protected int doHandshake (ByteBuffer receivedBuffer , int receivedBytes ) {
106+ protected int doHandshake (ByteBuffer networkBuffer , int receivedBytes ) {
107107 HandshakeStatus handshakeStatus = sslEngine .getHandshakeStatus ();
108108 while (SslUtils .needToProcess (handshakeStatus )) {
109109 log .debug (handshakeStatus , "Do handshake with status:[%s] " ::formatted );
@@ -123,13 +123,13 @@ protected int doHandshake(ByteBuffer receivedBuffer, int receivedBytes) {
123123 sslEngine .closeOutbound ();
124124 handshakeStatus = sslEngine .getHandshakeStatus ();
125125 break ;
126- } else if (!receivedBuffer .hasRemaining ()) {
127- receivedBuffer . clear (). limit ( 0 );
126+ } else if (!networkBuffer .hasRemaining ()) {
127+ cleanNetworkBuffer ( networkBuffer );
128128 return SKIP_READ_PACKETS ;
129129 }
130130 try {
131- log .debug (receivedBuffer , buff -> "Try to unwrap data:\n " + hexDump (buff ));
132- result = sslEngine .unwrap (receivedBuffer , EMPTY_BUFFERS );
131+ log .debug (networkBuffer , buff -> "Try to unwrap data:\n " + hexDump (buff ));
132+ result = sslEngine .unwrap (networkBuffer , EMPTY_BUFFERS );
133133 handshakeStatus = result .getHandshakeStatus ();
134134 log .debug (handshakeStatus , "Handshake status:[%s] after unwrapping" ::formatted );
135135 } catch (SSLException sslException ) {
@@ -167,21 +167,16 @@ protected int doHandshake(ByteBuffer receivedBuffer, int receivedBytes) {
167167 break ;
168168 }
169169 case NEED_WRAP : {
170- log .debug (" Send command to wrap data" );
170+ log .debug (remoteAddress (), "[%s] Send command to wrap data":: formatted );
171171 packetWriter .accept (SslWritableNetworkPacket .getInstance ());
172- receivedBuffer . clear (). limit ( 0 );
172+ cleanNetworkBuffer ( networkBuffer );
173173 return SKIP_READ_PACKETS ;
174174 }
175175 case NEED_TASK : {
176- Runnable task ;
177- while ((task = sslEngine .getDelegatedTask ()) != null ) {
178- log .debug (task , "Execute SSL Engine's task:[%s]" ::formatted );
179- task .run ();
180- }
181- handshakeStatus = sslEngine .getHandshakeStatus ();
176+ handshakeStatus = SslUtils .executeSslTasks (sslEngine );
182177 log .debug (handshakeStatus , "Handshake status:[%s] after engine tasks" ::formatted );
183- if (handshakeStatus == HandshakeStatus .NEED_UNWRAP && !receivedBuffer .hasRemaining ()) {
184- receivedBuffer . clear (). limit ( 0 );
178+ if (handshakeStatus == HandshakeStatus .NEED_UNWRAP && !networkBuffer .hasRemaining ()) {
179+ cleanNetworkBuffer ( networkBuffer );
185180 return SKIP_READ_PACKETS ;
186181 }
187182 break ;
@@ -192,16 +187,16 @@ protected int doHandshake(ByteBuffer receivedBuffer, int receivedBytes) {
192187 }
193188 }
194189
195- if (!receivedBuffer .hasRemaining ()) {
190+ if (!networkBuffer .hasRemaining ()) {
196191 // if buffer is empty and status is FINISHED then we can notify writer
197192 if (handshakeStatus == HandshakeStatus .FINISHED ) {
198193 packetWriter .accept (SslWritableNetworkPacket .getInstance ());
199194 }
200- receivedBuffer . clear (). limit ( 0 );
195+ cleanNetworkBuffer ( networkBuffer );
201196 return SKIP_READ_PACKETS ;
202197 }
203198
204- return decryptAndRead (receivedBuffer );
199+ return decryptAndRead (networkBuffer );
205200 }
206201
207202 protected int decryptAndRead (ByteBuffer receivedBuffer ) {
@@ -251,7 +246,7 @@ protected int decryptAndRead(ByteBuffer receivedBuffer) {
251246 return total ;
252247 }
253248
254- private synchronized ByteBuffer increaseNetworkBuffer (int extra ) {
249+ protected synchronized ByteBuffer increaseNetworkBuffer (int extra ) {
255250 ByteBuffer current = sslNetworkBuffer ();
256251 int newSize = (int ) Math .max (current .capacity () * 1.3 , current .capacity () + extra );
257252 sslNetworkBuffer = NetworkUtils
@@ -260,7 +255,7 @@ private synchronized ByteBuffer increaseNetworkBuffer(int extra) {
260255 return sslNetworkBuffer ;
261256 }
262257
263- private synchronized void increaseDataBuffer () {
258+ protected synchronized void increaseDataBuffer () {
264259 int newSize = sslEngine
265260 .getSession ()
266261 .getApplicationBufferSize ();
@@ -281,4 +276,8 @@ public void close() {
281276 .putBuffer (sslNetworkBuffer );
282277 super .close ();
283278 }
279+
280+ protected static void cleanNetworkBuffer (ByteBuffer networkBuffer ) {
281+ networkBuffer .clear ().limit (0 );
282+ }
284283}
0 commit comments