diff options
author | Test_User <hax@andrewyu.org> | 2024-07-22 23:11:54 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2024-07-22 23:11:54 -0400 |
commit | 74ebc09736f85fb72a5bcdc96b93ae50cf86652d (patch) | |
tree | b4d3811cd565d64053b6baff2adcde17812e73bb /networks/openssl.c | |
parent | e859880db83c5120670b87c1d5a8cf03eedc1806 (diff) | |
download | haxircd-74ebc09736f85fb72a5bcdc96b93ae50cf86652d.tar.gz haxircd-74ebc09736f85fb72a5bcdc96b93ae50cf86652d.zip |
Bit of improvement on error handling for networking
Diffstat (limited to 'networks/openssl.c')
-rw-r--r-- | networks/openssl.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/networks/openssl.c b/networks/openssl.c index bf6b869..d2b84b1 100644 --- a/networks/openssl.c +++ b/networks/openssl.c @@ -148,6 +148,20 @@ size_t openssl_recv(void *handle, char *data, size_t len, char *err) { case SSL_ERROR_WANT_WRITE: pollfd.events = POLLOUT; break; + case SSL_ERROR_ZERO_RETURN: + mutex_unlock(&(openssl_handle->mutex)); + *err = 2; + return 0; + case SSL_ERROR_SYSCALL: + mutex_unlock(&(openssl_handle->mutex)); + + if (errno == ESHUTDOWN || errno == ECONNRESET) { + *err = 2; + } else { + *err = 3; + } + + return 0; default: mutex_unlock(&(openssl_handle->mutex)); *err = 3; |