diff --git a/java/src/main/java/org/wildfly/openssl/OpenSSLSocket.java b/java/src/main/java/org/wildfly/openssl/OpenSSLSocket.java index 36fc7e0..3946e72 100644 --- a/java/src/main/java/org/wildfly/openssl/OpenSSLSocket.java +++ b/java/src/main/java/org/wildfly/openssl/OpenSSLSocket.java @@ -303,6 +303,10 @@ private void runHandshake() throws IOException { if (write) { buffer.clear(); result = sslEngine.wrap(EMPTY_DIRECT, buffer); + if (result.getStatus() == SSLEngineResult.Status.CLOSED) { + close(); + throw new SSLException(MESSAGES.connectionClosed()); + } if (result.bytesProduced() > 0) { buffer.flip(); try (DefaultByteBufferPool.PooledByteBuffer indirectPooled = DefaultByteBufferPool.HEAP_POOL.allocate()) { @@ -336,6 +340,10 @@ private void runHandshake() throws IOException { buffer.put(indirectPooled.getBuffer()); buffer.flip(); result = sslEngine.unwrap(buffer, unwrappedData.getBuffer()); + if (result.getStatus() == SSLEngineResult.Status.CLOSED) { + close(); + throw new SSLException(MESSAGES.connectionClosed()); + } if(result.getStatus() == SSLEngineResult.Status.BUFFER_UNDERFLOW) { underflow = true; }