Skip to content
Permalink
Browse files

http2: fix file close error condition at respondWithFd

Closing a FileHandle almost never fails, so it was hard to
notice before that `stream.emit(err)` would not emit an error
event due to the missing event name.

Destroying the stream with the error seems like the right thing
to do in that scenario.

PR-URL: #29884
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
  • Loading branch information
addaleax authored and targos committed Oct 8, 2019
1 parent dcdb96c commit 5959023b7661985254023d4e793806aa9416824e
Showing with 1 addition and 4 deletions.
  1. +1 −4 lib/internal/http2/core.js
@@ -2174,14 +2174,11 @@ function processHeaders(oldHeaders) {
return headers;
}

function onFileCloseError(stream, err) {
stream.emit(err);
}

function onFileUnpipe() {
const stream = this.sink[kOwner];
if (stream.ownsFd)
this.source.close().catch(onFileCloseError.bind(stream));
this.source.close().catch(stream.destroy.bind(stream));
else
this.source.releaseFD();
}

0 comments on commit 5959023

Please sign in to comment.
You can’t perform that action at this time.