Fix pools for s_client
authorMatt Caswell <matt@openssl.org>
Wed, 16 Sep 2015 22:09:15 +0000 (23:09 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 20 Nov 2015 23:33:46 +0000 (23:33 +0000)
s_client was not freeing up the async pool if async mode was enabled.

Reviewed-by: Rich Salz <rsalz@openssl.org>
apps/s_client.c

index fa91eece02168fbe876b563496715b06b29a495f..723e7cba3b88b9b518b074de1b4d01b17f3cdd90 100644 (file)
@@ -160,6 +160,7 @@ typedef unsigned int u_int;
 #include <openssl/rand.h>
 #include <openssl/ocsp.h>
 #include <openssl/bn.h>
+#include <openssl/async.h>
 #ifndef OPENSSL_NO_SRP
 # include <openssl/srp.h>
 #endif
@@ -1205,8 +1206,10 @@ int s_client_main(int argc, char **argv)
         goto end;
     }
 
-    if (async)
+    if (async) {
         SSL_CTX_set_mode(ctx, SSL_MODE_ASYNC);
+        ASYNC_init_pool(0, 0);
+    }
 
     if (!config_ctx(cctx, ssl_args, ctx, 1, jpake_secret == NULL))
         goto end;
@@ -2096,6 +2099,9 @@ int s_client_main(int argc, char **argv)
             print_stuff(bio_c_out, con, 1);
         SSL_free(con);
     }
+    if (async) {
+        ASYNC_free_pool();
+    }
 #if !defined(OPENSSL_NO_NEXTPROTONEG)
     OPENSSL_free(next_proto.data);
 #endif