Ask libssl if we should retry not the socket
authorMatt Caswell <matt@openssl.org>
Thu, 20 Apr 2017 13:45:33 +0000 (14:45 +0100)
committerMatt Caswell <matt@openssl.org>
Tue, 25 Apr 2017 10:13:39 +0000 (11:13 +0100)
s_server was asking the underlying socket if it is a retryable error rather
than libssl which has more information.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3286)

apps/s_server.c

index 81c3973d6fab8d04f91cb49c3a413796fce18c66..7fb7772826f9895b46270bcbd7f2988f9c124117 100644 (file)
@@ -2646,7 +2646,7 @@ static int init_ssl_connection(SSL *con)
         i = SSL_accept(con);
 
         if (i <= 0)
-            retry = BIO_sock_should_retry(i);
+            retry = !SSL_want_nothing(con);
 #ifdef CERT_CB_TEST_RETRY
         {
             while (i <= 0
@@ -2656,7 +2656,7 @@ static int init_ssl_connection(SSL *con)
                            "LOOKUP from certificate callback during accept\n");
                 i = SSL_accept(con);
                 if (i <= 0)
-                    retry = BIO_sock_should_retry(i);
+                    retry = !SSL_want_nothing(con);
             }
         }
 #endif
@@ -2677,7 +2677,7 @@ static int init_ssl_connection(SSL *con)
                 BIO_printf(bio_s_out, "LOOKUP not successful\n");
             i = SSL_accept(con);
             if (i <= 0)
-                retry = BIO_sock_should_retry(i);
+                retry = !SSL_want_nothing(con);
         }
 #endif
     } while (i < 0 && SSL_waiting_for_async(con));