summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libtls/tls.c')
-rw-r--r--src/lib/libtls/tls.c15
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)
326int 326int
327tls_close(struct tls *ctx) 327tls_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) {