diff options
author | Robert Nagy <ronagy@icloud.com> | 2018-04-17 11:37:50 +0200 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-04-26 19:38:27 +0200 |
commit | d5e363b77ebaf1caf67cd7528224b651c86815c1 (patch) | |
tree | 70780d6814d10b0d65904408ba57754b74657c43 /lib | |
parent | 71059fbfa531f0229ca70a23c0082cec7315d6b4 (diff) | |
download | android-node-v8-d5e363b77ebaf1caf67cd7528224b651c86815c1.tar.gz android-node-v8-d5e363b77ebaf1caf67cd7528224b651c86815c1.tar.bz2 android-node-v8-d5e363b77ebaf1caf67cd7528224b651c86815c1.zip |
http: added aborted property to request
PR-URL: https://github.com/nodejs/node/pull/20094
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/_http_client.js | 6 | ||||
-rw-r--r-- | lib/_http_incoming.js | 2 | ||||
-rw-r--r-- | lib/_http_server.js | 1 | ||||
-rw-r--r-- | lib/internal/http2/compat.js | 7 |
4 files changed, 15 insertions, 1 deletions
diff --git a/lib/_http_client.js b/lib/_http_client.js index 22ae85c927..04880182da 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -279,6 +279,7 @@ ClientRequest.prototype.abort = function abort() { if (!this.aborted) { process.nextTick(emitAbortNT.bind(this)); } + // Mark as aborting so we can avoid sending queued request data // This is used as a truthy flag elsewhere. The use of Date.now is for // debugging purposes only. @@ -330,7 +331,10 @@ function socketCloseListener() { var parser = socket.parser; if (req.res && req.res.readable) { // Socket closed before we emitted 'end' below. - if (!req.res.complete) req.res.emit('aborted'); + if (!req.res.complete) { + req.res.aborted = true; + req.res.emit('aborted'); + } var res = req.res; res.on('end', function() { res.emit('close'); diff --git a/lib/_http_incoming.js b/lib/_http_incoming.js index 55c196399c..23ac4d54be 100644 --- a/lib/_http_incoming.js +++ b/lib/_http_incoming.js @@ -54,6 +54,8 @@ function IncomingMessage(socket) { this.readable = true; + this.aborted = false; + this.upgrade = null; // request (server) only diff --git a/lib/_http_server.js b/lib/_http_server.js index bf228de643..9c8b5cb8fb 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -440,6 +440,7 @@ function socketOnClose(socket, state) { function abortIncoming(incoming) { while (incoming.length) { var req = incoming.shift(); + req.aborted = true; req.emit('aborted'); req.emit('close'); } diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 0bdbe7b69f..d2aaa8838e 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -31,6 +31,7 @@ const kTrailers = Symbol('trailers'); const kRawTrailers = Symbol('rawTrailers'); const kProxySocket = Symbol('proxySocket'); const kSetHeader = Symbol('setHeader'); +const kAborted = Symbol('aborted'); const { HTTP2_HEADER_AUTHORITY, @@ -137,6 +138,7 @@ function onStreamDrain() { function onStreamAbortedRequest() { const request = this[kRequest]; if (request !== undefined && request[kState].closed === false) { + request[kAborted] = true; request.emit('aborted'); } } @@ -233,6 +235,7 @@ class Http2ServerRequest extends Readable { this[kTrailers] = {}; this[kRawTrailers] = []; this[kStream] = stream; + this[kAborted] = false; stream[kProxySocket] = null; stream[kRequest] = this; @@ -248,6 +251,10 @@ class Http2ServerRequest extends Readable { this.on('resume', onRequestResume); } + get aborted() { + return this[kAborted]; + } + get complete() { return this._readableState.ended || this[kState].closed || |