diff options
Diffstat (limited to 'src/lib/libtls/tls.c')
| -rw-r--r-- | src/lib/libtls/tls.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index c028d19539..9b03c2b6f0 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls.c,v 1.58 2017/01/22 08:27:50 claudio Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.59 2017/01/26 12:56:37 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -649,7 +649,7 @@ tls_close(struct tls *ctx) | |||
| 649 | goto out; | 649 | goto out; |
| 650 | } | 650 | } |
| 651 | 651 | ||
| 652 | if (ctx->ssl_conn != NULL) { | 652 | if (ctx->state & TLS_SSL_NEEDS_SHUTDOWN) { |
| 653 | ERR_clear_error(); | 653 | ERR_clear_error(); |
| 654 | ssl_ret = SSL_shutdown(ctx->ssl_conn); | 654 | ssl_ret = SSL_shutdown(ctx->ssl_conn); |
| 655 | if (ssl_ret < 0) { | 655 | if (ssl_ret < 0) { |
| @@ -658,6 +658,7 @@ tls_close(struct tls *ctx) | |||
| 658 | if (rv == TLS_WANT_POLLIN || rv == TLS_WANT_POLLOUT) | 658 | if (rv == TLS_WANT_POLLIN || rv == TLS_WANT_POLLOUT) |
| 659 | goto out; | 659 | goto out; |
| 660 | } | 660 | } |
| 661 | ctx->state &= ~TLS_SSL_NEEDS_SHUTDOWN; | ||
| 661 | } | 662 | } |
| 662 | 663 | ||
| 663 | if (ctx->socket != -1) { | 664 | if (ctx->socket != -1) { |
