http2: close fd in doSendFileFD()

This commit closes the file descriptor in two code paths that
return from doSendFileFD().

PR-URL: https://github.com/nodejs/node/pull/23047
Fixes: https://github.com/nodejs/node/issues/23029
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
This commit is contained in:
cjihrig
2018-09-23 23:44:10 -04:00
parent 0ae146cd8e
commit af5d98641d

View File

@@ -2149,6 +2149,7 @@ function doSendFileFD(session, options, fd, headers, streamOptions, err, stat) {
isDirectory) {
const err = isDirectory ?
new ERR_HTTP2_SEND_FILE() : new ERR_HTTP2_SEND_FILE_NOSEEK();
tryClose(fd);
if (onError)
onError(err);
else
@@ -2179,6 +2180,7 @@ function doSendFileFD(session, options, fd, headers, streamOptions, err, stat) {
if ((typeof options.statCheck === 'function' &&
options.statCheck.call(this, stat, headers) === false) ||
(this[kState].flags & STREAM_FLAGS_HEADERS_SENT)) {
tryClose(fd);
return;
}