Skip to content

Commit

Permalink
tls,http2: handle writes after SSL destroy more gracefully
Browse files Browse the repository at this point in the history
This might otherwise result in a hard crash when trying
to write to a socket after a sudden disconnect.

Note that the test here uses an aborted `h2load` run to create
the failing requests; That’s far from ideal, but it provides
a reasonably reliably reproduction at this point.

Backport-PR-URL: #22924
PR-URL: #18987
Fixes: #18973
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
  • Loading branch information
addaleax authored and MylesBorins committed Sep 25, 2018
1 parent 8209ccb commit f5985c7
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions src/tls_wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,12 @@ int TLSWrap::DoWrite(WriteWrap* w,
size_t count,
uv_stream_t* send_handle) {
CHECK_EQ(send_handle, nullptr);
CHECK_NE(ssl_, nullptr);

if (ssl_ == nullptr) {
ClearError();
error_ = "Write after DestroySSL";
return UV_EPROTO;
}

bool empty = true;

Expand Down Expand Up @@ -642,12 +647,6 @@ int TLSWrap::DoWrite(WriteWrap* w,
return 0;
}

if (ssl_ == nullptr) {
ClearError();
error_ = "Write after DestroySSL";
return UV_EPROTO;
}

crypto::MarkPopErrorOnReturn mark_pop_error_on_return;

int written = 0;
Expand Down

0 comments on commit f5985c7

Please sign in to comment.