diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-09-24 14:03:23 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-09-24 14:03:23 +0200 |
commit | 632475aa5803e80f0a159bf8716afa3e933abd2e (patch) | |
tree | bfcc3f9dc4982bbe245650912a1072a0909d483f /lib | |
parent | 4a778f75c526e638b2fe1e2f627eb6649638b570 (diff) | |
download | curl-bagder/openssl-syscall-strerror.tar.gz |
openssl: use strerror on SSL_ERROR_SYSCALLbagder/openssl-syscall-strerror
Instead of showing the somewhat nonsensical errno number, use strerror()
to provide a more relatable error message.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/vtls/openssl.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c index 28d23c50f..760758d23 100644 --- a/lib/vtls/openssl.c +++ b/lib/vtls/openssl.c @@ -44,6 +44,7 @@ #include "strcase.h" #include "hostcheck.h" #include "multiif.h" +#include "strerror.h" #include "curl_printf.h" #include <openssl/ssl.h> #include <openssl/rand.h> @@ -3825,8 +3826,8 @@ static ssize_t ossl_send(struct connectdata *conn, *curlcode = CURLE_AGAIN; return -1; case SSL_ERROR_SYSCALL: - failf(conn->data, "SSL_write() returned SYSCALL, errno = %d", - SOCKERRNO); + Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer)); + failf(conn->data, OSSL_PACKAGE " SSL_write: %s", error_buffer); *curlcode = CURLE_SEND_ERROR; return -1; case SSL_ERROR_SSL: @@ -3893,6 +3894,11 @@ static ssize_t ossl_recv(struct connectdata *conn, /* connection data */ /* there's data pending, re-invoke SSL_read() */ *curlcode = CURLE_AGAIN; return -1; + case SSL_ERROR_SYSCALL: + Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer)); + failf(conn->data, OSSL_PACKAGE " SSL_read: %s", error_buffer); + *curlcode = CURLE_RECV_ERROR; + return -1; default: /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return value/errno" */ |