diff --git a/src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java b/src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java index 916b680..06f8d25 100644 --- a/src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java +++ b/src/java/com/wolfssl/provider/jsse/WolfSSLSocket.java @@ -1371,6 +1371,12 @@ public class WolfSSLSocket extends SSLSocket { synchronized (handshakeLock) { this.connectionClosed = true; + + /* Connection is closed, free native WOLFSSL session + * to release native memory earlier than garbage collector + * might with finalize(). */ + this.ssl.freeSSL(); + this.ssl = null; } } @@ -1396,6 +1402,8 @@ public class WolfSSLSocket extends SSLSocket { } catch (IllegalStateException e) { throw new IOException(e); + } catch (WolfSSLJNIException jnie) { + throw new IOException(jnie); } }