diff options
author | Dmitry Belyavskiy <beldmit@gmail.com> | 2020-05-05 15:26:32 +0300 |
---|---|---|
committer | Dmitry Belyavskiy <beldmit@gmail.com> | 2020-05-06 17:53:17 +0300 |
commit | edbb56ee4fafc07eb77747ad25278a04b89adc09 (patch) | |
tree | f97db0243c7d4e30f15c4facb546b48bf9bcc44d /apps/lib | |
parent | a96e6c347bc1da9964ffe941608b11cf030320ef (diff) |
s_server normal shutdown
Partially fixes #11209
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/11734)
Diffstat (limited to 'apps/lib')
-rw-r--r-- | apps/lib/s_socket.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/apps/lib/s_socket.c b/apps/lib/s_socket.c index 7dd95e9f0e..52c4a0a764 100644 --- a/apps/lib/s_socket.c +++ b/apps/lib/s_socket.c @@ -392,4 +392,25 @@ int do_server(int *accept_sock, const char *host, const char *port, return ret; } +void do_ssl_shutdown(SSL *ssl) +{ + int ret; + + do { + /* We only do unidirectional shutdown */ + ret = SSL_shutdown(ssl); + if (ret < 0) { + switch (SSL_get_error(ssl, ret)) { + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + case SSL_ERROR_WANT_ASYNC: + case SSL_ERROR_WANT_ASYNC_JOB: + /* We just do busy waiting. Nothing clever */ + continue; + } + ret = 0; + } + } while (ret < 0); +} + #endif /* OPENSSL_NO_SOCK */ |