tls_wrap: ignore ZERO_RETURN after close_notify
authorFedor Indutny <fedor@indutny.com>
Mon, 6 Oct 2014 12:23:01 +0000 (16:23 +0400)
committerFedor Indutny <fedor@indutny.com>
Mon, 6 Oct 2014 14:45:53 +0000 (18:45 +0400)
Do not call SSL_read() and ignore ZERO_RETURN if the connection was
shutdown and there could not be any reads.

Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: https://github.com/joyent/node/pull/8519

src/tls_wrap.cc

index 84bc87e..ac05c8e 100644 (file)
@@ -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<Value> 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.