Skip to content

Commit 14a5b45

Browse files
committed
Guard against emitting 'end' twice on http responses
1 parent ea4b1c1 commit 14a5b45

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

lib/http.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ function parserOnMessageComplete() {
125125
if (!parser.incoming.upgrade) {
126126
// For upgraded connections, also emit this after parser.execute
127127
parser.incoming.readable = false;
128-
parser.incoming.emit('end');
128+
if (!parser.incoming._ended) {
129+
parser.incoming._ended = true;
130+
parser.incoming.emit('end');
131+
}
129132
}
130133

131134
if (parser.socket.readable) {
@@ -1158,7 +1161,10 @@ function socketCloseListener() {
11581161
if (req.res && req.res.readable) {
11591162
// Socket closed before we emitted "end" below.
11601163
req.res.emit('aborted');
1161-
req.res.emit('end');
1164+
if (!req.res._ended) {
1165+
req.res._ended = true;
1166+
req.res.emit('end');
1167+
}
11621168
req.res.emit('close');
11631169
} else if (!req.res && !req._hadError) {
11641170
// This socket error fired before we started to

0 commit comments

Comments
 (0)