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.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c
index aa49641ab2..65103f106d 100644
--- a/src/lib/libtls/tls.c
+++ b/src/lib/libtls/tls.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls.c,v 1.25 2015/09/11 09:24:54 jsing Exp $ */ 1/* $OpenBSD: tls.c,v 1.26 2015/09/12 19:54:31 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -405,12 +405,13 @@ tls_read(struct tls *ctx, void *buf, size_t buflen)
405 goto out; 405 goto out;
406 } 406 }
407 407
408 ERR_clear_error();
408 if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { 409 if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) {
409 rv = (ssize_t)ssl_ret; 410 rv = (ssize_t)ssl_ret;
410 goto out; 411 goto out;
411 } 412 }
412
413 rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); 413 rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read");
414
414 out: 415 out:
415 /* Prevent callers from performing incorrect error handling */ 416 /* Prevent callers from performing incorrect error handling */
416 errno = 0; 417 errno = 0;
@@ -433,12 +434,13 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen)
433 goto out; 434 goto out;
434 } 435 }
435 436
437 ERR_clear_error();
436 if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { 438 if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) {
437 rv = (ssize_t)ssl_ret; 439 rv = (ssize_t)ssl_ret;
438 goto out; 440 goto out;
439 } 441 }
440
441 rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); 442 rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write");
443
442 out: 444 out:
443 /* Prevent callers from performing incorrect error handling */ 445 /* Prevent callers from performing incorrect error handling */
444 errno = 0; 446 errno = 0;
@@ -452,6 +454,7 @@ tls_close(struct tls *ctx)
452 int rv = 0; 454 int rv = 0;
453 455
454 if (ctx->ssl_conn != NULL) { 456 if (ctx->ssl_conn != NULL) {
457 ERR_clear_error();
455 ssl_ret = SSL_shutdown(ctx->ssl_conn); 458 ssl_ret = SSL_shutdown(ctx->ssl_conn);
456 if (ssl_ret < 0) { 459 if (ssl_ret < 0) {
457 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, 460 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret,