summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2019-02-23 15:00:44 +0000
committerjsing <>2019-02-23 15:00:44 +0000
commit6dc7e73103356c68fb1a0e418474365eed4d822c (patch)
tree25a9c887b7811d28c3008bd7cef5fdbbae0dc050 /src
parent8d90809bb33041e7fc7b10bc81d57f61e20daec2 (diff)
downloadopenbsd-6dc7e73103356c68fb1a0e418474365eed4d822c.tar.gz
openbsd-6dc7e73103356c68fb1a0e418474365eed4d822c.tar.bz2
openbsd-6dc7e73103356c68fb1a0e418474365eed4d822c.zip
Set BIO retry on TLS13_IO_WANT_POLLIN/TLS13_IO_WANT_POLLOUT.
In most cases a TLS13_IO_WANT_POLLIN or TLS13_IO_WANT_POLLOUT will have bubbled up from the wire callbacks, in which case the BIO retry flag will already be set. However, if we return TLS13_IO_WANT_POLLIN or TLS13_IO_WANT_POLLOUT from a higher layer the BIO retry flag will not be set and that will cause SSL_get_error() to return SSL_ERROR_SYSCALL rather than the intended SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE. ok beck@ tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/tls13_lib.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/libssl/tls13_lib.c b/src/lib/libssl/tls13_lib.c
index f9505fa438..d8a22c8fc7 100644
--- a/src/lib/libssl/tls13_lib.c
+++ b/src/lib/libssl/tls13_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_lib.c,v 1.4 2019/02/21 17:15:00 jsing Exp $ */ 1/* $OpenBSD: tls13_lib.c,v 1.5 2019/02/23 15:00:44 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -219,10 +219,12 @@ tls13_legacy_return_code(SSL *ssl, ssize_t ret)
219 return -1; 219 return -1;
220 220
221 case TLS13_IO_WANT_POLLIN: 221 case TLS13_IO_WANT_POLLIN:
222 BIO_set_retry_read(ssl->rbio);
222 ssl->internal->rwstate = SSL_READING; 223 ssl->internal->rwstate = SSL_READING;
223 return -1; 224 return -1;
224 225
225 case TLS13_IO_WANT_POLLOUT: 226 case TLS13_IO_WANT_POLLOUT:
227 BIO_set_retry_write(ssl->wbio);
226 ssl->internal->rwstate = SSL_WRITING; 228 ssl->internal->rwstate = SSL_WRITING;
227 return -1; 229 return -1;
228 } 230 }