summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-10-01 15:47:32 +0200
committerGitHub <noreply@github.com>2018-10-01 15:47:32 +0200
commit12b1c47ab133daaa4ac9ade10e8d53473328c3a3 (patch)
tree625411a32cda33e3d71dd659ff2f2ab31b13037a
parente0513aa92f5241b7d9fea4fd2c9ba92af3e34ddb (diff)
parent7db477c4e4a60c2ab444c1a50309a3f395b9c53b (diff)
Merge pull request #7160 from vespa-engine/vekterli/silently-handle-tls-client-graceful-shutdown
Handle case where SSL_read fails when client has shutdown normally
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
index 15db0128f1e..4f48f60b70c 100644
--- a/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/impl/openssl_crypto_codec_impl.cpp
@@ -325,6 +325,9 @@ DecodeResult OpenSslCryptoCodecImpl::drain_and_produce_plaintext_from_ssl(
// we've fed it thus far; caller must feed it some and then try again.
LOG(spam, "SSL_read() returned SSL_ERROR_WANT_READ, must get more ciphertext");
return decode_needs_more_peer_data();
+ case SSL_ERROR_ZERO_RETURN:
+ LOG(debug, "SSL_read() returned SSL_ERROR_ZERO_RETURN; connection has been shut down normally by the peer");
+ return decode_failed(); // We'll just break the connection as per usual.
default:
LOG(error, "SSL_read() returned unexpected error: %s (%s)",
ssl_error_to_str(ssl_error), ssl_error_from_stack().c_str());