Remove stale errors from early connection attempts in a client
authorMatt Caswell <matt@openssl.org>
Wed, 4 May 2016 08:12:27 +0000 (09:12 +0100)
committerMatt Caswell <matt@openssl.org>
Wed, 4 May 2016 09:16:39 +0000 (10:16 +0100)
The init_client() function in the apps sets up the client connection. It
may try multiple addresses until it finds one that works. We should clear
the error queue if we eventually get a successful connection because
otherwise we get stale errors hanging around. This can cause problems in
subsequent calls to SSL_get_error(), i.e. non-fatal NBIO events appear as
fatal.

Reviewed-by: Richard Levitte <levitte@openssl.org>
apps/s_socket.c

index 465321754cbbe7f0e3ea1e1749a0a99deca076fa..6d77d8215bc1e42cdb42114ae86e68bb62fbe6e1 100644 (file)
@@ -195,6 +195,8 @@ int init_client(int *sock, const char *host, const char *port,
     if (*sock == INVALID_SOCKET) {
         ERR_print_errors(bio_err);
     } else {
+        /* Remove any stale errors from previous connection attempts */
+        ERR_clear_error();
         ret = 1;
     }
     BIO_ADDRINFO_free(res);