2 new revisions:

Revision: 311436a1114d
Author:   vralev <vralev@8e71dc83-d81e-6649-80f2-80b843a9b2be>
Date:     Thu Nov  8 03:20:16 2012
Log:      Update Issue JSIP-437...
http://code.google.com/p/jain-sip/source/detail?r=311436a1114d

Revision: e454ff7be813
Author:   vralev <vralev@8e71dc83-d81e-6649-80f2-80b843a9b2be>
Date:     Thu Nov  8 08:56:17 2012
Log:      Update Issue JSIP-437...
http://code.google.com/p/jain-sip/source/detail?r=e454ff7be813

==============================================================================
Revision: 311436a1114d
Author:   vralev <vralev@8e71dc83-d81e-6649-80f2-80b843a9b2be>
Date:     Thu Nov  8 03:20:16 2012
Log:      Update Issue JSIP-437

Optimize NIO TLS buffers and hide some logging.

Backport from NIO branch

git-svn-id: https://svn.java.net/svn/jsip~svn/branches/JAIN-SIP-NIO-year-2012@2181 8e71dc83-d81e-6649-80f2-80b843a9b2be
(cherry picked from commit 90cc810cb14fb24a024c015c154b9e819458d6aa)

Conflicts:
        src/gov/nist/javax/sip/stack/NioTcpMessageChannel.java
        src/gov/nist/javax/sip/stack/NioTlsWebSocketMessageChannel.java

http://code.google.com/p/jain-sip/source/detail?r=311436a1114d

Modified:
 /src/gov/nist/javax/sip/stack/NioTcpMessageChannel.java
 /src/gov/nist/javax/sip/stack/NioTcpMessageProcessor.java
 /src/gov/nist/javax/sip/stack/NioTlsMessageChannel.java

=======================================
--- /src/gov/nist/javax/sip/stack/NioTcpMessageChannel.java Fri Nov 23 08:22:14 2012 +++ /src/gov/nist/javax/sip/stack/NioTcpMessageChannel.java Thu Nov 8 03:20:16 2012
@@ -77,10 +77,12 @@
                        }

// This prevents us from getting stuck in a selector thread spinloop when socket is constantly ready for reading but there are no bytes. - if(nbytes == 0) throw new IOException("The socket is giving us empty TCP packets. " +
+                       if(nbytes == 0)
+                               throw new IOException("The socket is giving us empty 
TCP packets. " +
"This is usually an indication we are stuck and it is better to disconnect.");

-                       if(streamError) throw new IOException("Stream error msg len 
= -1 " +
+                       if(streamError)
+                               throw new IOException("Stream error msg len = -1 
" +
"This is usually an indication we are stuck and it is better to disconnect.");

                        // Otherwise just add the bytes to queue
@@ -101,6 +103,7 @@
                        try {
                                if 
(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG))
logger.logDebug("IOException closing sock " + ex + "myAddress:myport " + myAddress + ":" + myPort + ", remoteAddress:remotePort " + peerAddress + ":" + peerPort);
+                               }

                                close(true, false);

=======================================
--- /src/gov/nist/javax/sip/stack/NioTcpMessageProcessor.java Wed Oct 17 13:56:21 2012 +++ /src/gov/nist/javax/sip/stack/NioTcpMessageProcessor.java Thu Nov 8 03:20:16 2012
@@ -304,6 +304,7 @@
logger.logDebug("Read " + selectionKey);
                                 }
                                 read(selectionKey);
+
                             } else if (selectionKey.isWritable()) {
if (logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) { logger.logDebug("Write " + selectionKey);
@@ -327,7 +328,7 @@
                     }
                     return;
                 } catch (Exception ex) {
-                               logger.logError("Error", ex);
+                               logger.logError("Problem in the selector loop", 
ex);
                        }
                }
         }
=======================================
--- /src/gov/nist/javax/sip/stack/NioTlsMessageChannel.java Fri Aug 17 06:14:48 2012 +++ /src/gov/nist/javax/sip/stack/NioTlsMessageChannel.java Thu Nov 8 03:20:16 2012
@@ -48,8 +48,8 @@

        SSLStateMachine sslStateMachine;

-       private ByteBuffer appFrameBuffer;
-       private ByteBuffer encryptedFrameBuffer;
+       private int appBufferMax;
+       private int netBufferMax;

        public static NioTcpMessageChannel create(
                        NioTcpMessageProcessor nioTcpMessageProcessor,
@@ -110,13 +110,11 @@
        }

        public ByteBuffer prepareEncryptedDataBuffer() {
-               encryptedFrameBuffer.clear();
-               return encryptedFrameBuffer;
+               return 
ByteBufferFactory.getInstance().allocateDirect(netBufferMax);
        }

        public ByteBuffer prepareAppDataBuffer() {
-               appFrameBuffer.clear();
-               return appFrameBuffer;
+               return 
ByteBufferFactory.getInstance().allocateDirect(appBufferMax);
        }

        public static class SSLReconnectedException extends IOException {
@@ -131,7 +129,7 @@

                ByteBuffer b = ByteBuffer.wrap(msg);
                try {
- sslStateMachine.wrap(b, encryptedFrameBuffer, new MessageSendCallback() { + sslStateMachine.wrap(b, ByteBufferFactory.getInstance().allocateDirect(netBufferMax), new MessageSendCallback() {

                                @Override
                                public void doSend(byte[] bytes) throws 
IOException {
@@ -172,7 +170,7 @@

                ByteBuffer b = ByteBuffer.wrap(message);
                try {
- sslStateMachine.wrap(b, encryptedFrameBuffer, new MessageSendCallback() { + sslStateMachine.wrap(b, ByteBufferFactory.getInstance().allocateDirect(netBufferMax), new MessageSendCallback() {

                                @Override
                                public void doSend(byte[] bytes) throws 
IOException {
@@ -188,15 +186,12 @@
         private void createBuffers() {

                SSLSession session = sslStateMachine.sslEngine.getSession();
-               int appBufferMax = session.getApplicationBufferSize();
-               int netBufferMax = session.getPacketBufferSize();
+               appBufferMax = session.getApplicationBufferSize();
+               netBufferMax = session.getPacketBufferSize();

                if(logger.isLoggingEnabled(LogWriter.TRACE_DEBUG)) {
logger.logDebug("appBufferMax=" + appBufferMax + " netBufferMax=" + netBufferMax);
                }
- appFrameBuffer = ByteBufferFactory.getInstance().allocateDirect(2*appBufferMax + 50);
-
- encryptedFrameBuffer = ByteBufferFactory.getInstance().allocateDirect(netBufferMax);
            }

        public NioTlsMessageChannel(InetAddress inetAddress, int port,

==============================================================================
Revision: e454ff7be813
Author:   vralev <vralev@8e71dc83-d81e-6649-80f2-80b843a9b2be>
Date:     Thu Nov  8 08:56:17 2012
Log:      Update Issue JSIP-437

Optimize NIO TLS buffers and fix regressions.

Backport from NIO Branch

git-svn-id: https://svn.java.net/svn/jsip~svn/branches/JAIN-SIP-NIO-year-2012@2182 8e71dc83-d81e-6649-80f2-80b843a9b2be
(cherry picked from commit fc278e7b64e59b41857f68848d4ca82c0b86ec98)

http://code.google.com/p/jain-sip/source/detail?r=e454ff7be813

Modified:
 /src/gov/nist/javax/sip/stack/SIPTransaction.java

=======================================
--- /src/gov/nist/javax/sip/stack/SIPTransaction.java Wed Aug 8 12:20:08 2012 +++ /src/gov/nist/javax/sip/stack/SIPTransaction.java Thu Nov 8 08:56:17 2012
@@ -1395,12 +1395,22 @@
else return ((TLSMessageChannel) this.getMessageChannel()).getHandshakeCompletedListener().getHandshakeCompletedEvent().getCipherSuite(); } else if(this.getMessageChannel() instanceof NioTlsMessageChannel) { SSLEngine sslEngine = ((NioTlsMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; - if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED)) { + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) {
                        String[] cs = sslEngine.getEnabledCipherSuites();
                        return cs[0];
                } else {
                        return null;
                }
+ } else if(this.getMessageChannel() instanceof NioTlsWebSocketMessageChannel) { + SSLEngine sslEngine = ((NioTlsWebSocketMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) {
+                       String[] cs = sslEngine.getEnabledCipherSuites();
+                       return cs[0];
+               } else {
+                       return null;
+               }
} else throw new UnsupportedOperationException("Not a TLS channel");

     }
@@ -1415,11 +1425,20 @@
else return ((TLSMessageChannel) this.getMessageChannel()).getHandshakeCompletedListener().getHandshakeCompletedEvent().getLocalCertificates(); } else if (this.getMessageChannel() instanceof NioTlsMessageChannel) { SSLEngine sslEngine = ((NioTlsMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; - if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED)) { + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) { return ((NioTlsMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine.getSession().getLocalCertificates();
                } else {
                        return null;
                }
+ } else if (this.getMessageChannel() instanceof NioTlsMessageChannel) { + SSLEngine sslEngine = ((NioTlsWebSocketMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) { + return ((NioTlsWebSocketMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine.getSession().getLocalCertificates();
+               } else {
+                       return null;
+               }
} else throw new UnsupportedOperationException("Not a TLS channel");
     }

@@ -1433,11 +1452,20 @@
else return ((TLSMessageChannel) this.getMessageChannel()).getHandshakeCompletedListener().getHandshakeCompletedEvent().getPeerCertificates(); } else if(this.getMessageChannel() instanceof NioTlsMessageChannel) { SSLEngine sslEngine = ((NioTlsMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; - if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED)) { + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) { return ((NioTlsMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine.getSession().getPeerCertificates();
                } else {
                        return null;
                }
+ } else if(this.getMessageChannel() instanceof NioTlsWebSocketMessageChannel) { + SSLEngine sslEngine = ((NioTlsWebSocketMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine; + if(sslEngine.getHandshakeStatus().equals(HandshakeStatus.FINISHED) || + sslEngine.getHandshakeStatus().equals(HandshakeStatus.NOT_HANDSHAKING)) { + return ((NioTlsWebSocketMessageChannel) this.getMessageChannel()).sslStateMachine.sslEngine.getSession().getPeerCertificates();
+               } else {
+                       return null;
+               }
         }
         else
                throw new UnsupportedOperationException("Not a TLS channel");

Reply via email to