ISSUE 43: Add BIO_sock_shutdown
authorRich Salz <rsalz@akamai.com>
Wed, 2 Mar 2016 21:12:46 +0000 (16:12 -0500)
committerRich Salz <rsalz@openssl.org>
Mon, 7 Mar 2016 19:47:54 +0000 (14:47 -0500)
This replaces SHUTDOWN/SHUTDOWN2 with BIO_closesocket.

Reviewed-by: Richard Levitte <levitte@openssl.org>
apps/s_client.c
apps/s_server.c
apps/s_socket.c
apps/s_time.c
crypto/bio/bss_dgram.c
crypto/bio/bss_sock.c
e_os.h

index cce8e244b522f580f6d694add863d8264eb13660..247bdbf8c1481a708743e1786b8196b5b019ae32 100644 (file)
@@ -1735,7 +1735,7 @@ int s_client_main(int argc, char **argv)
     if (init_client(&s, host, port, socket_family, socket_type) == 0)
     {
         BIO_printf(bio_err, "connect:errno=%d\n", get_last_socket_error());
-        SHUTDOWN(s);
+        BIO_closesocket(s);
         goto end;
     }
     BIO_printf(bio_c_out, "CONNECTED(%08X)\n", s);
@@ -1753,7 +1753,7 @@ int s_client_main(int argc, char **argv)
         if (getsockname(s, &peer, (void *)&peerlen) < 0) {
             BIO_printf(bio_err, "getsockname:errno=%d\n",
                        get_last_socket_error());
-            SHUTDOWN(s);
+            BIO_closesocket(s);
             goto end;
         }
 
@@ -2135,7 +2135,7 @@ int s_client_main(int argc, char **argv)
                                "drop connection and then reconnect\n");
                     do_ssl_shutdown(con);
                     SSL_set_connect_state(con);
-                    SHUTDOWN(SSL_get_fd(con));
+                    BIO_closesocket(SSL_get_fd(con));
                     goto re_start;
                 }
             }
@@ -2452,7 +2452,7 @@ int s_client_main(int argc, char **argv)
     if (in_init)
         print_stuff(bio_c_out, con, full_log);
     do_ssl_shutdown(con);
-    SHUTDOWN(SSL_get_fd(con));
+    BIO_closesocket(SSL_get_fd(con));
  end:
     if (con != NULL) {
         if (prexit != 0)
index 5ac3d8f72d7c8abf2eb6fd5cc07d4d6b23af89d6..99442cde1aebc4de6571cae4f41c6c058fa6e2ac 100644 (file)
@@ -2245,7 +2245,7 @@ static int sv_body(int s, int stype, unsigned char *context)
                 if ((i <= 0) || (buf[0] == 'Q')) {
                     BIO_printf(bio_s_out, "DONE\n");
                     (void)BIO_flush(bio_s_out);
-                    SHUTDOWN(s);
+                    BIO_closesocket(s);
                     close_accept_socket();
                     ret = -11;
                     goto err;
@@ -2254,7 +2254,7 @@ static int sv_body(int s, int stype, unsigned char *context)
                     BIO_printf(bio_s_out, "DONE\n");
                     (void)BIO_flush(bio_s_out);
                     if (SSL_version(con) != DTLS1_VERSION)
-                        SHUTDOWN(s);
+                        BIO_closesocket(s);
                     /*
                      * close_accept_socket(); ret= -11;
                      */
@@ -2451,7 +2451,7 @@ static void close_accept_socket(void)
 {
     BIO_printf(bio_err, "shutdown accept socket\n");
     if (accept_socket >= 0) {
-        SHUTDOWN2(accept_socket);
+        BIO_closesocket(accept_socket);
     }
 }
 
index 958dd788508eb1971dae37a1098e65d15598cf56..00556bccb0ced139999d3427ff34434ea4fe96fd 100644 (file)
@@ -266,11 +266,11 @@ int do_server(int *accept_sock, const char *host, const char *port,
             } while (sock < 0 && BIO_sock_should_retry(ret));
             if (sock < 0) {
                 ERR_print_errors(bio_err);
-                SHUTDOWN(asock);
+                BIO_closesocket(asock);
                 break;
             }
             i = (*cb)(sock, type, context);
-            SHUTDOWN2(sock);
+            BIO_closesocket(sock);
         } else {
             i = (*cb)(asock, type, context);
         }
@@ -278,7 +278,7 @@ int do_server(int *accept_sock, const char *host, const char *port,
         if (naccept != -1)
             naccept--;
         if (i < 0 || naccept == 0) {
-            SHUTDOWN2(asock);
+            BIO_closesocket(asock);
             ret = i;
             break;
         }
index fd001483f72f46eb7504accf2f3bf5a99eec4c55..cc9a9797556e3b7d126defaace44701401c740db 100644 (file)
@@ -292,7 +292,7 @@ int s_time_main(int argc, char **argv)
 #else
         SSL_shutdown(scon);
 #endif
-        SHUTDOWN2(SSL_get_fd(scon));
+        BIO_closesocket(SSL_get_fd(scon));
 
         nConn += 1;
         if (SSL_session_reused(scon))
@@ -349,7 +349,7 @@ int s_time_main(int argc, char **argv)
 #else
     SSL_shutdown(scon);
 #endif
-    SHUTDOWN2(SSL_get_fd(scon));
+    BIO_closesocket(SSL_get_fd(scon));
 
     nConn = 0;
     totalTime = 0.0;
@@ -380,7 +380,7 @@ int s_time_main(int argc, char **argv)
 #else
         SSL_shutdown(scon);
 #endif
-        SHUTDOWN2(SSL_get_fd(scon));
+        BIO_closesocket(SSL_get_fd(scon));
 
         nConn += 1;
         if (SSL_session_reused(scon))
index 36d40755fb3bfe49bfd13a11698edb69e7dce12e..5a52e7c3cb575a2fcf6731b7f4b35acbf6bd1802 100644 (file)
@@ -236,7 +236,7 @@ static int dgram_clear(BIO *a)
         return (0);
     if (a->shutdown) {
         if (a->init) {
-            SHUTDOWN2(a->num);
+            BIO_closesocket(a->num);
         }
         a->init = 0;
         a->flags = 0;
index 9988723f8e182873caa2c423729b2d6356f046be..b56cd18d93d3488add1558b62ae657032ccce203 100644 (file)
@@ -122,7 +122,7 @@ static int sock_free(BIO *a)
         return (0);
     if (a->shutdown) {
         if (a->init) {
-            SHUTDOWN2(a->num);
+            BIO_closesocket(a->num);
         }
         a->init = 0;
         a->flags = 0;
diff --git a/e_os.h b/e_os.h
index 3a4ba6dd1845ab4dca0c27b5fb313226604c61f2..41ab7bb8d1d95d9699a04980d1f3eeec4a27f4a0 100644 (file)
--- a/e_os.h
+++ b/e_os.h
@@ -466,8 +466,6 @@ extern int kbhit(void);
 #   ifdef OPENSSL_NO_SOCK
 #    define OpenSSL_Write(a,b,c)       (-1)
 #    define OpenSSL_Read(a,b,c)        (-1)
-#    define SHUTDOWN(fd)              close(fd)
-#    define SHUTDOWN2(fd)             close(fd)
 #   elif !defined(__DJGPP__)
 #    if defined(_WIN32_WCE) && _WIN32_WCE<410
 #     define getservbyname _masked_declaration_getservbyname
@@ -495,13 +493,9 @@ struct servent *PASCAL getservbyname(const char *, const char *);
 #    endif
 #    define OpenSSL_Write(a,b,c)       send((a),(b),(c),0)
 #    define OpenSSL_Read(a,b,c)        recv((a),(b),(c),0)
-#    define SHUTDOWN(fd)              { shutdown((fd),0); closesocket(fd); }
-#    define SHUTDOWN2(fd)             { shutdown((fd),2); closesocket(fd); }
 #   else
 #    define OpenSSL_Write(a,b,c)       write_s(a,b,c,0)
 #    define OpenSSL_Read(a,b,c)        read_s(a,b,c)
-#    define SHUTDOWN(fd)              close_s(fd)
-#    define SHUTDOWN2(fd)             close_s(fd)
 #   endif
 
 #  elif defined(OPENSSL_SYS_NETWARE)
@@ -525,8 +519,6 @@ struct servent *PASCAL getservbyname(const char *, const char *);
 #   endif
 #   define OpenSSL_Write(a,b,c)   send((a),(b),(c),0)
 #   define OpenSSL_Read(a,b,c) recv((a),(b),(c),0)
-#   define SHUTDOWN(fd)    { shutdown((fd),0); closesocket(fd); }
-#   define SHUTDOWN2(fd)      { shutdown((fd),2); closesocket(fd); }
 
 #  else
 
@@ -588,8 +580,6 @@ struct servent *PASCAL getservbyname(const char *, const char *);
 
 #   define OpenSSL_Read(a,b,c)     read((a),(b),(c))
 #   define OpenSSL_Write(a,b,c)    write((a),(b),(c))
-#   define SHUTDOWN(fd)    { shutdown((fd),0); closesocket((fd)); }
-#   define SHUTDOWN2(fd)   { shutdown((fd),2); closesocket((fd)); }
 #   ifndef INVALID_SOCKET
 #    define INVALID_SOCKET      (-1)
 #   endif                       /* INVALID_SOCKET */