diff options
author | Greg Wilkins | 2015-07-30 02:09:11 +0000 |
---|---|---|
committer | Greg Wilkins | 2015-07-30 02:09:11 +0000 |
commit | 370abc9df11888c6cc2d21060e006415503bc0a9 (patch) | |
tree | d23a3a4ce76f0cee64c99cfede5d0474b47000ab | |
parent | 837d1a74bb7d694220644a2539c4440ce55462cf (diff) | |
download | org.eclipse.jetty.project-370abc9df11888c6cc2d21060e006415503bc0a9.tar.gz org.eclipse.jetty.project-370abc9df11888c6cc2d21060e006415503bc0a9.tar.xz org.eclipse.jetty.project-370abc9df11888c6cc2d21060e006415503bc0a9.zip |
473832 SslConnection flips back buffers on handshake exception
-rw-r--r-- | jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java index b461a08865..052743875d 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java @@ -513,8 +513,15 @@ public class SslConnection extends AbstractConnection // Let's unwrap even if we have no net data because in that // case we want to fall through to the handshake handling int pos = BufferUtil.flipToFill(app_in); - SSLEngineResult unwrapResult = _sslEngine.unwrap(_encryptedInput, app_in); - BufferUtil.flipToFlush(app_in, pos); + SSLEngineResult unwrapResult; + try + { + unwrapResult = _sslEngine.unwrap(_encryptedInput, app_in); + } + finally + { + BufferUtil.flipToFlush(app_in, pos); + } if (DEBUG) LOG.debug("{} unwrap {}", SslConnection.this, unwrapResult); @@ -726,10 +733,18 @@ public class SslConnection extends AbstractConnection // We call sslEngine.wrap to try to take bytes from appOut buffers and encrypt them into the _netOut buffer BufferUtil.compact(_encryptedOutput); int pos = BufferUtil.flipToFill(_encryptedOutput); - SSLEngineResult wrapResult = _sslEngine.wrap(appOuts, _encryptedOutput); + SSLEngineResult wrapResult; + try + { + wrapResult=_sslEngine.wrap(appOuts, _encryptedOutput); + } + finally + { + BufferUtil.flipToFlush(_encryptedOutput, pos); + } + if (DEBUG) LOG.debug("{} wrap {}", SslConnection.this, wrapResult); - BufferUtil.flipToFlush(_encryptedOutput, pos); if (wrapResult.bytesConsumed()>0) consumed+=wrapResult.bytesConsumed(); Status wrapResultStatus = wrapResult.getStatus(); |