@@ -92,6 +92,8 @@ protected int readPackets(ByteBuffer readingBuffer) {
9292 }
9393
9494 protected ByteBuffer moveDataToNetworkBuffer (ByteBuffer readingBuffer ) {
95+ log .debug (remoteAddress (), readingBuffer ,
96+ (address , buf ) -> "[%s] Append new part of received data:\n %s" .formatted (address , hexDump (buf )));
9597 ByteBuffer sslNetworkBuffer = sslNetworkBuffer ();
9698 int availableSpace = sslNetworkBuffer .capacity () - sslNetworkBuffer .limit ();
9799 if (availableSpace >= readingBuffer .limit ()) {
@@ -100,16 +102,18 @@ protected ByteBuffer moveDataToNetworkBuffer(ByteBuffer readingBuffer) {
100102 sslNetworkBuffer = increaseNetworkBuffer (readingBuffer .limit ());
101103 BufferUtils .appendAndClear (sslNetworkBuffer , readingBuffer );
102104 }
105+ log .debug (remoteAddress (), sslNetworkBuffer ,
106+ (address , buf ) -> "[%s] Result pending received network data:\n %s" .formatted (address , hexDump (buf )));
103107 return sslNetworkBuffer ;
104108 }
105109
106110 protected int doHandshake (ByteBuffer networkBuffer , int receivedBytes ) {
107111 HandshakeStatus handshakeStatus = sslEngine .getHandshakeStatus ();
108112 while (SslUtils .needToProcess (handshakeStatus )) {
109- log .debug (handshakeStatus , "Do handshake with status:[%s] " ::formatted );
110- SSLEngineResult result ;
113+ log .debug (remoteAddress (), handshakeStatus , "[%s] Do handshake with status:[%s] " ::formatted );
111114 switch (handshakeStatus ) {
112115 case NEED_UNWRAP : {
116+ SSLEngineResult result ;
113117 if (receivedBytes == -1 ) {
114118 if (sslEngine .isInboundDone () && sslEngine .isOutboundDone ()) {
115119 return SKIP_READ_PACKETS ;
@@ -128,10 +132,11 @@ protected int doHandshake(ByteBuffer networkBuffer, int receivedBytes) {
128132 return SKIP_READ_PACKETS ;
129133 }
130134 try {
131- log .debug (networkBuffer , buff -> "Try to unwrap data:\n " + hexDump (buff ));
135+ log .debug (remoteAddress (), networkBuffer ,
136+ (address , buff ) -> "[%s] Try to unwrap data:\n %s" .formatted (address , hexDump (buff )));
132137 result = sslEngine .unwrap (networkBuffer , EMPTY_BUFFERS );
133138 handshakeStatus = result .getHandshakeStatus ();
134- log .debug (handshakeStatus , "Handshake status:[%s] after unwrapping" ::formatted );
139+ log .debug (remoteAddress (), handshakeStatus , "[%s] Handshake status:[%s] after unwrapping" ::formatted );
135140 } catch (SSLException sslException ) {
136141 log .error ("A problem was encountered while processing the data that caused the "
137142 + "SSLEngine to abort. Will try to properly close connection..." );
@@ -147,9 +152,13 @@ protected int doHandshake(ByteBuffer networkBuffer, int receivedBytes) {
147152 throw new IllegalStateException ("Unexpected ssl engine result" );
148153 }
149154 case BUFFER_UNDERFLOW : {
150- log .debug ("Increase ssl network buffer" );
151- increaseNetworkBuffer (0 );
152- break ;
155+ log .debug (remoteAddress (), "[%s] Wait for more received data..." ::formatted );
156+ if (networkBuffer .position () > 0 ) {
157+ networkBuffer
158+ .compact ()
159+ .limit (networkBuffer .position ());
160+ }
161+ return SKIP_READ_PACKETS ;
153162 }
154163 case CLOSED : {
155164 if (sslEngine .isOutboundDone ()) {
@@ -174,7 +183,7 @@ protected int doHandshake(ByteBuffer networkBuffer, int receivedBytes) {
174183 }
175184 case NEED_TASK : {
176185 handshakeStatus = SslUtils .executeSslTasks (sslEngine );
177- log .debug (handshakeStatus , "Handshake status:[%s] after engine tasks" ::formatted );
186+ log .debug (remoteAddress (), handshakeStatus , "[%s] Handshake status:[%s] after engine tasks" ::formatted );
178187 if (handshakeStatus == HandshakeStatus .NEED_UNWRAP && !networkBuffer .hasRemaining ()) {
179188 cleanNetworkBuffer (networkBuffer );
180189 return SKIP_READ_PACKETS ;
@@ -204,23 +213,27 @@ protected int decryptAndRead(ByteBuffer receivedBuffer) {
204213 while (receivedBuffer .hasRemaining ()) {
205214 SSLEngineResult result ;
206215 try {
207- log .debug (receivedBuffer , buf -> "Try to decrypt data:\n " + hexDump (buf ));
216+ log .debug (remoteAddress (), receivedBuffer ,
217+ (address , buf ) -> "[%s] Try to decrypt data:\n %s" .formatted (address , hexDump (buf )));
208218 result = sslEngine .unwrap (receivedBuffer , sslDataBuffer .clear ());
209219 } catch (SSLException e ) {
210220 throw new IllegalStateException (e );
211221 }
212222 switch (result .getStatus ()) {
213223 case OK : {
214224 sslDataBuffer .flip ();
215- log .debug (sslDataBuffer , buf -> "Decrypted data:\n " + hexDump (buf ));
225+ log .debug (remoteAddress (), sslDataBuffer ,
226+ (address , buf ) -> "[%s] Decrypted data:\n %s" .formatted (address , hexDump (buf )));
216227 total += readPackets (sslDataBuffer , sslDataPendingBuffer );
217228 break ;
218229 }
219230 case BUFFER_OVERFLOW : {
231+ log .debug (remoteAddress (), "Increase SSL data buffer and try again..." ::formatted );
220232 increaseDataBuffer ();
221233 return decryptAndRead (receivedBuffer );
222234 }
223235 case BUFFER_UNDERFLOW : {
236+ log .debug (remoteAddress (), "[%s] Wait for more received data..." ::formatted );
224237 if (receivedBuffer .position () > 0 ) {
225238 receivedBuffer
226239 .compact ()
@@ -233,16 +246,13 @@ protected int decryptAndRead(ByteBuffer receivedBuffer) {
233246 return SKIP_READ_PACKETS ;
234247 }
235248 default : {
236- if (receivedBuffer .position () > 0 ) {
237- receivedBuffer .compact ();
238- return total ;
239- }
240249 throw new IllegalStateException ("Invalid SSL status: " + result .getStatus ());
241250 }
242251 }
243252 }
244253
245- receivedBuffer .clear ();
254+ log .debug (remoteAddress (), "[%s] Clear SSL network buffer" ::formatted );
255+ cleanNetworkBuffer (receivedBuffer );
246256 return total ;
247257 }
248258
0 commit comments