diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SslConnection.java index db9436e7fee..bcf7d74be7e 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SslConnection.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/nio/SslConnection.java @@ -42,7 +42,7 @@ import org.eclipse.jetty.util.thread.Timeout.Task; */ public class SslConnection extends AbstractConnection implements AsyncConnection { - static final Logger LOG=Log.getLogger("org.eclipse.jetty.io.nio.ssl"); + private final Logger _logger = Log.getLogger("org.eclipse.jetty.io.nio.ssl"); private static final NIOBuffer __ZERO_BUFFER=new IndirectNIOBuffer(0); @@ -182,11 +182,11 @@ public class SslConnection extends AbstractConnection implements AsyncConnection while (progress) { progress=false; - + // If we are handshook let the delegate connection if (_engine.getHandshakeStatus()!=HandshakeStatus.NOT_HANDSHAKING) progress=process(null,null); - + // handle the delegate connection AsyncConnection next = (AsyncConnection)_connection.handle(); if (next!=_connection && next!=null) @@ -195,7 +195,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection progress=true; } - LOG.debug("{} handle {} progress={}", _session, this, progress); + _logger.debug("{} handle {} progress={}", _session, this, progress); } } finally @@ -211,9 +211,10 @@ public class SslConnection extends AbstractConnection implements AsyncConnection } catch(Throwable x) { - LOG.warn("onInputShutdown failed", x); + _logger.warn("onInputShutdown failed", x); try{_sslEndPoint.close();} - catch(IOException e2){LOG.ignore(e2);} + catch(IOException e2){ + _logger.ignore(e2);} } } } @@ -244,7 +245,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection { try { - LOG.debug("onIdleExpired {}ms on {}",idleForMs,this); + _logger.debug("onIdleExpired {}ms on {}",idleForMs,this); if (_endp.isOutputShutdown()) _sslEndPoint.close(); else @@ -252,7 +253,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection } catch (IOException e) { - LOG.warn(e); + _logger.warn(e); super.onIdleExpired(idleForMs); } } @@ -271,7 +272,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection { // We need buffers to progress allocateBuffers(); - + // if we don't have a buffer to put received data into if (toFill==null) { @@ -284,7 +285,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection { // fill to the temporary unwrapBuffer boolean progress=process(null,toFlush); - + // if we received any data, if (_unwrapBuf!=null && _unwrapBuf.hasContent()) { @@ -315,7 +316,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection while (progress) { progress=false; - + // Do any real IO int filled=0,flushed=0; try @@ -335,7 +336,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection } finally { - LOG.debug("{} {} {} filled={}/{} flushed={}/{}",_session,this,_engine.getHandshakeStatus(),filled,_inbound.length(),flushed,_outbound.length()); + _logger.debug("{} {} {} filled={}/{} flushed={}/{}",_session,this,_engine.getHandshakeStatus(),filled,_inbound.length(),flushed,_outbound.length()); } // handle the current hand share status @@ -437,8 +438,8 @@ public class SslConnection extends AbstractConnection implements AsyncConnection out_buffer.position(_outbound.putIndex()); out_buffer.limit(out_buffer.capacity()); result=_engine.wrap(bbuf,out_buffer); - if (LOG.isDebugEnabled()) - LOG.debug("{} wrap {} {} consumed={} produced={}", + if (_logger.isDebugEnabled()) + _logger.debug("{} wrap {} {} consumed={} produced={}", _session, result.getStatus(), result.getHandshakeStatus(), @@ -451,7 +452,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection } catch(SSLException e) { - LOG.warn(String.valueOf(_endp), e); + _logger.warn(String.valueOf(_endp), e); _endp.close(); throw e; } @@ -479,13 +480,13 @@ public class SslConnection extends AbstractConnection implements AsyncConnection break; case CLOSED: - LOG.debug("wrap CLOSE {} {}",this,result); + _logger.debug("wrap CLOSE {} {}",this,result); if (result.getHandshakeStatus()==HandshakeStatus.FINISHED) _endp.close(); break; default: - LOG.warn("{} wrap default {}",_session,result); + _logger.warn("{} wrap default {}",_session,result); throw new IOException(result.toString()); } @@ -513,8 +514,8 @@ public class SslConnection extends AbstractConnection implements AsyncConnection in_buffer.limit(_inbound.putIndex()); result=_engine.unwrap(in_buffer,bbuf); - if (LOG.isDebugEnabled()) - LOG.debug("{} unwrap {} {} consumed={} produced={}", + if (_logger.isDebugEnabled()) + _logger.debug("{} unwrap {} {} consumed={} produced={}", _session, result.getStatus(), result.getHandshakeStatus(), @@ -527,7 +528,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection } catch(SSLException e) { - LOG.warn(String.valueOf(_endp), e); + _logger.warn(String.valueOf(_endp), e); _endp.close(); throw e; } @@ -549,7 +550,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection break; case BUFFER_OVERFLOW: - LOG.debug("{} unwrap {} {}->{}",_session,result.getStatus(),_inbound.toDetailString(),buffer.toDetailString()); + _logger.debug("{} unwrap {} {}->{}",_session,result.getStatus(),_inbound.toDetailString(),buffer.toDetailString()); break; case OK: @@ -558,13 +559,13 @@ public class SslConnection extends AbstractConnection implements AsyncConnection break; case CLOSED: - LOG.debug("unwrap CLOSE {} {}",this,result); + _logger.debug("unwrap CLOSE {} {}",this,result); if (result.getHandshakeStatus()==HandshakeStatus.FINISHED) _endp.close(); break; default: - LOG.warn("{} wrap default {}",_session,result); + _logger.warn("{} wrap default {}",_session,result); throw new IOException(result.toString()); } @@ -613,7 +614,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection { synchronized (SslConnection.this) { - LOG.debug("{} ssl endp.oshut {}",_session,this); + _logger.debug("{} ssl endp.oshut {}",_session,this); _engine.closeOutbound(); _oshut=true; } @@ -630,7 +631,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection public void shutdownInput() throws IOException { - LOG.debug("{} ssl endp.ishut!",_session); + _logger.debug("{} ssl endp.ishut!",_session); // We do not do a closeInput here, as SSL does not support half close. // isInputShutdown works it out itself from buffer state and underlying endpoint state. } @@ -647,7 +648,7 @@ public class SslConnection extends AbstractConnection implements AsyncConnection public void close() throws IOException { - LOG.debug("{} ssl endp.close",_session); + _logger.debug("{} ssl endp.close",_session); _endp.close(); } diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/nio/SelectChannelEndPointSslTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/nio/SelectChannelEndPointSslTest.java index d6a6a46a06a..fbf3eae1ac7 100644 --- a/jetty-io/src/test/java/org/eclipse/jetty/io/nio/SelectChannelEndPointSslTest.java +++ b/jetty-io/src/test/java/org/eclipse/jetty/io/nio/SelectChannelEndPointSslTest.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.net.Socket; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; - import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLEngineResult; import javax.net.ssl.SSLEngineResult.HandshakeStatus; @@ -22,7 +21,7 @@ import org.junit.Test; public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest { static SslContextFactory __sslCtxFactory=new SslContextFactory(); - + @BeforeClass public static void initSslEngine() throws Exception { @@ -32,7 +31,7 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest __sslCtxFactory.setKeyManagerPassword("keypwd"); __sslCtxFactory.start(); } - + @Override protected Socket newClient() throws IOException { @@ -60,46 +59,46 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest super.testEcho(); } - + @Test @Override public void testShutdown() throws Exception { // SSL does not do half closes } - + @Test public void testTcpClose() throws Exception { - + // This test replaces SSLSocket() with a very manual SSL client // so we can close TCP underneath SSL. SocketChannel client = SocketChannel.open(_connector.socket().getLocalSocketAddress()); client.socket().setSoTimeout(500); - + SocketChannel server = _connector.accept(); server.configureBlocking(false); _manager.register(server); - + SSLEngine engine = __sslCtxFactory.newSslEngine(); engine.setUseClientMode(true); engine.beginHandshake(); - + ByteBuffer appOut = ByteBuffer.allocate(engine.getSession().getApplicationBufferSize()); ByteBuffer sslOut = ByteBuffer.allocate(engine.getSession().getPacketBufferSize()*2); ByteBuffer appIn = ByteBuffer.allocate(engine.getSession().getApplicationBufferSize()); ByteBuffer sslIn = ByteBuffer.allocate(engine.getSession().getPacketBufferSize()*2); - - boolean debug=SslConnection.LOG.isDebugEnabled(); - + + boolean debug=false; + if (debug) System.err.println(engine.getHandshakeStatus()); int loop=20; while (engine.getHandshakeStatus()!=HandshakeStatus.NOT_HANDSHAKING) { if (--loop==0) throw new IllegalStateException(); - + if (engine.getHandshakeStatus()==HandshakeStatus.NEED_WRAP) { if (debug) System.err.printf("sslOut %d-%d-%d%n",sslOut.position(),sslOut.limit(),sslOut.capacity()); @@ -133,16 +132,16 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest } if (engine.getHandshakeStatus()==HandshakeStatus.NEED_TASK) - { + { Runnable task; while ((task=engine.getDelegatedTask())!=null) task.run(); if (debug) System.err.println(engine.getHandshakeStatus()); } } - + if (debug) System.err.println("\nSay Hello"); - + // write a message appOut.put("HelloWorld".getBytes("UTF-8")); appOut.flip(); @@ -164,11 +163,11 @@ public class SelectChannelEndPointSslTest extends SelectChannelEndPointTest sslIn.compact(); else sslIn.clear(); - + appIn.flip(); String reply= new String(appIn.array(),appIn.arrayOffset(),appIn.remaining()); appIn.clear(); - + Assert.assertEquals("HelloWorld",reply); SelectorManager.LOG.info("javax.net.ssl.SSLException: Inbound closed... is expected soon");