diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 84bc87e0cc..ac05c8ecac 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -447,6 +447,10 @@ void TLSCallbacks::ClearOut() { if (!hello_parser_.IsEnded()) return; + // No reads after EOF + if (eof_) + return; + HandleScope handle_scope(env()->isolate()); Context::Scope context_scope(env()->context()); @@ -476,6 +480,10 @@ void TLSCallbacks::ClearOut() { int err; Local arg = GetSSLError(read, &err, NULL); + // Ignore ZERO_RETURN after EOF, it is basically not a error + if (err == SSL_ERROR_ZERO_RETURN && eof_) + return; + if (!arg.IsEmpty()) { // When TLS Alert are stored in wbio, // it should be flushed to socket before destroyed.