diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-08-26 11:28:51 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-08-26 11:28:51 +0200 |
commit | 2dda25d95dd45c83402088d53dbb5b0f7c893f9d (patch) | |
tree | 2e377effe73bf040ac82b8c08e3426a1efc9aea7 | |
parent | 867f95f07b89c077b69d77a6c0f1dc2cbe6ef5da (diff) | |
download | gnutls-2dda25d95dd45c83402088d53dbb5b0f7c893f9d.tar.gz |
tools: allow socket_bye() to be used for non-polite terminations
-rw-r--r-- | src/cli-debug.c | 2 | ||||
-rw-r--r-- | src/cli.c | 6 | ||||
-rw-r--r-- | src/danetool.c | 2 | ||||
-rw-r--r-- | src/ocsptool-common.c | 2 | ||||
-rw-r--r-- | src/socket.c | 18 | ||||
-rw-r--r-- | src/socket.h | 2 |
6 files changed, 17 insertions, 15 deletions
diff --git a/src/cli-debug.c b/src/cli-debug.c index 3323b4804e..359bb32f25 100644 --- a/src/cli-debug.c +++ b/src/cli-debug.c @@ -320,7 +320,7 @@ int main(int argc, char **argv) while (ret == TEST_IGNORE && tls_tests[i].test_name != NULL); - socket_bye(&hd); + socket_bye(&hd, 1); i++; } @@ -908,7 +908,7 @@ static int try_resume(socket_st * hd) } printf("- Disconnecting\n"); - socket_bye(hd); + socket_bye(hd, 1); canonicalize_host(hostname, service, sizeof(service)); @@ -1408,9 +1408,9 @@ int main(int argc, char **argv) } if (user_term != 0) - socket_bye(&hd); + socket_bye(&hd, 1); else - gnutls_deinit(hd.session); + socket_bye(&hd, 0); #ifdef ENABLE_SRP if (srp_cred) diff --git a/src/danetool.c b/src/danetool.c index 4c35964178..d5883569a3 100644 --- a/src/danetool.c +++ b/src/danetool.c @@ -715,7 +715,7 @@ static const char *obtain_cert(const char *hostname, const char *proto, const ch if (priv->found == 0) ret = -1; - socket_bye(&hd); + socket_bye(&hd, 1); gnutls_certificate_free_credentials(xcred); if (ret == -1) diff --git a/src/ocsptool-common.c b/src/ocsptool-common.c index a411a8e97e..8d04c7e663 100644 --- a/src/ocsptool-common.c +++ b/src/ocsptool-common.c @@ -222,7 +222,7 @@ int send_ocsp_request(const char *server, return -1; } - socket_bye(&hd); + socket_bye(&hd, 1); p = memmem(ud.data, ud.size, "\r\n\r\n", 4); if (p == NULL) { diff --git a/src/socket.c b/src/socket.c index 423cd90b7d..16c9ec6b59 100644 --- a/src/socket.c +++ b/src/socket.c @@ -319,17 +319,19 @@ const char *starttls_proto_to_service(const char *app_proto) return "443"; } -void socket_bye(socket_st * socket) +void socket_bye(socket_st * socket, unsigned polite) { int ret; if (socket->secure) { - do - ret = gnutls_bye(socket->session, GNUTLS_SHUT_WR); - while (ret == GNUTLS_E_INTERRUPTED - || ret == GNUTLS_E_AGAIN); - if (socket->verbose && ret < 0) - fprintf(stderr, "*** gnutls_bye() error: %s\n", - gnutls_strerror(ret)); + if (polite) { + do + ret = gnutls_bye(socket->session, GNUTLS_SHUT_WR); + while (ret == GNUTLS_E_INTERRUPTED + || ret == GNUTLS_E_AGAIN); + if (socket->verbose && ret < 0) + fprintf(stderr, "*** gnutls_bye() error: %s\n", + gnutls_strerror(ret)); + } gnutls_deinit(socket->session); socket->session = NULL; } diff --git a/src/socket.h b/src/socket.h index fb7d2b12bc..9be1ee4e16 100644 --- a/src/socket.h +++ b/src/socket.h @@ -44,7 +44,7 @@ void socket_open(socket_st * hd, const char *hostname, const char *service, const char *app_proto, int flags, const char *msg, gnutls_datum_t *rdata); -void socket_bye(socket_st * socket); +void socket_bye(socket_st * socket, unsigned polite); int service_to_port(const char *service, const char *proto); const char *port_to_service(const char *sport, const char *proto); |