summaryrefslogtreecommitdiff
path: root/lib/_http_client.js
diff options
context:
space:
mode:
authorGerhard Stoebich <18708370+Flarna@users.noreply.github.com>2019-04-23 00:57:12 +0200
committerAnna Henningsen <anna@addaleax.net>2019-05-03 16:02:55 +0200
commit8876ac5c358114f0f88424f6737ca4b89fc9e6c7 (patch)
tree5b0804517e873f3c08b236104b11f26dd752f941 /lib/_http_client.js
parent8dae89b396df64e6a9e44cb94efe27809a5a3d89 (diff)
downloadnode-new-8876ac5c358114f0f88424f6737ca4b89fc9e6c7.tar.gz
async_hooks: fixup do not reuse HTTPParser
Fix some issues introduced/not fixed via https://github.com/nodejs/node/pull/25094: * Init hook is not emitted for a reused HTTPParser * HTTPParser was still used as resource in init hook * type used in init hook was always HTTPINCOMINGMESSAGE even for client requests * some tests have not been adapted to new resource names With this change the async hooks init event is emitted during a call to Initialize() as the type and resource object is available at this time. As a result Initialize() must be called now which could be seen as breaking change even HTTPParser is not part of documented API. It was needed to put the ClientRequest instance into a wrapper object instead passing it directly as async resource otherwise test-domain-multi fails. I think this is because adding an EventEmitter to a Domain adds a property 'domain' and the presence of this changes the context propagation in domains. Besides that tests still refering to resource HTTPParser have been updated/improved. Fixes: https://github.com/nodejs/node/issues/27467 Fixes: https://github.com/nodejs/node/issues/26961 Refs: https://github.com/nodejs/node/pull/25094 PR-URL: https://github.com/nodejs/node/pull/27477 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'lib/_http_client.js')
-rw-r--r--lib/_http_client.js10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/_http_client.js b/lib/_http_client.js
index 895e0bd600..75c86acf2c 100644
--- a/lib/_http_client.js
+++ b/lib/_http_client.js
@@ -64,6 +64,13 @@ function validateHost(host, name) {
return host;
}
+class HTTPClientAsyncResource {
+ constructor(type, req) {
+ this.type = type;
+ this.req = req;
+ }
+}
+
let urlWarningEmitted = false;
function ClientRequest(input, options, cb) {
OutgoingMessage.call(this);
@@ -635,7 +642,8 @@ function tickOnSocket(req, socket) {
const parser = parsers.alloc();
req.socket = socket;
req.connection = socket;
- parser.initialize(HTTPParser.RESPONSE, req);
+ parser.initialize(HTTPParser.RESPONSE,
+ new HTTPClientAsyncResource('HTTPINCOMINGMESSAGE', req));
parser.socket = socket;
parser.outgoing = req;
req.parser = parser;