diff --git a/mongoose.c b/mongoose.c
index cfb6e34f998640f8dfef6e81c55869650d67ad5b..9e963610b9320b90fdbaebdc48d82932470cbf68 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -418,6 +418,11 @@ static void ns_close_conn(struct ns_connection *conn) {
   closesocket(conn->sock);
   iobuf_free(&conn->recv_iobuf);
   iobuf_free(&conn->send_iobuf);
+#ifdef NS_ENABLE_SSL
+  if (conn->ssl != NULL) {
+    SSL_free(conn->ssl);
+  }
+#endif
   NS_FREE(conn);
 }
 
@@ -985,6 +990,7 @@ void ns_server_free(struct ns_server *s) {
 #ifdef NS_ENABLE_SSL
   if (s->ssl_ctx != NULL) SSL_CTX_free(s->ssl_ctx);
   if (s->client_ssl_ctx != NULL) SSL_CTX_free(s->client_ssl_ctx);
+  s->ssl_ctx = s->client_ssl_ctx = NULL;
 #endif
 }