diff options
Diffstat (limited to 'src/lib/libtls/tls.c')
-rw-r--r-- | src/lib/libtls/tls.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index b7b6570ff9..d942c35fec 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.8 2015/03/31 12:21:27 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.9 2015/04/02 13:19:15 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -326,12 +326,15 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen, size_t *outlen) | |||
326 | int | 326 | int |
327 | tls_close(struct tls *ctx) | 327 | tls_close(struct tls *ctx) |
328 | { | 328 | { |
329 | /* XXX - handle case where multiple calls are required. */ | 329 | int ssl_ret; |
330 | |||
330 | if (ctx->ssl_conn != NULL) { | 331 | if (ctx->ssl_conn != NULL) { |
331 | if (SSL_shutdown(ctx->ssl_conn) == -1) { | 332 | ssl_ret = SSL_shutdown(ctx->ssl_conn); |
332 | tls_set_error(ctx, "SSL shutdown failed"); | 333 | if (ssl_ret == 0) |
333 | goto err; | 334 | ssl_ret = SSL_shutdown(ctx->ssl_conn); |
334 | } | 335 | if (ssl_ret < 0) |
336 | return tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, | ||
337 | "shutdown"); | ||
335 | } | 338 | } |
336 | 339 | ||
337 | if (ctx->socket != -1) { | 340 | if (ctx->socket != -1) { |