From 8731a4fcd267d56cab2ad6d7cfac2c846c413a5d Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Wed, 2 Mar 2016 16:12:46 -0500 Subject: [PATCH] ISSUE 43: Add BIO_sock_shutdown This replaces SHUTDOWN/SHUTDOWN2 with BIO_closesocket. Reviewed-by: Richard Levitte --- apps/s_client.c | 8 ++++---- apps/s_server.c | 6 +++--- apps/s_socket.c | 6 +++--- apps/s_time.c | 6 +++--- crypto/bio/bss_dgram.c | 2 +- crypto/bio/bss_sock.c | 2 +- e_os.h | 10 ---------- 7 files changed, 15 insertions(+), 25 deletions(-) diff --git a/apps/s_client.c b/apps/s_client.c index cce8e244b5..247bdbf8c1 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -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) diff --git a/apps/s_server.c b/apps/s_server.c index 5ac3d8f72d..99442cde1a 100644 --- a/apps/s_server.c +++ b/apps/s_server.c @@ -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); } } diff --git a/apps/s_socket.c b/apps/s_socket.c index 958dd78850..00556bccb0 100644 --- a/apps/s_socket.c +++ b/apps/s_socket.c @@ -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; } diff --git a/apps/s_time.c b/apps/s_time.c index fd001483f7..cc9a979755 100644 --- a/apps/s_time.c +++ b/apps/s_time.c @@ -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)) diff --git a/crypto/bio/bss_dgram.c b/crypto/bio/bss_dgram.c index 36d40755fb..5a52e7c3cb 100644 --- a/crypto/bio/bss_dgram.c +++ b/crypto/bio/bss_dgram.c @@ -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; diff --git a/crypto/bio/bss_sock.c b/crypto/bio/bss_sock.c index 9988723f8e..b56cd18d93 100644 --- a/crypto/bio/bss_sock.c +++ b/crypto/bio/bss_sock.c @@ -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 3a4ba6dd18..41ab7bb8d1 100644 --- 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 */