Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2015-07-30 02:09:11 +0000
committerGreg Wilkins2015-07-30 02:09:11 +0000
commit370abc9df11888c6cc2d21060e006415503bc0a9 (patch)
treed23a3a4ce76f0cee64c99cfede5d0474b47000ab
parent837d1a74bb7d694220644a2539c4440ce55462cf (diff)
downloadorg.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.java23
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();

Back to the top