A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nodejs/node/commit/68e444d2d8 below:

add diagnostics channel `http.client.request.error` · nodejs/node@68e444d · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+38

-7

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+38

-7

lines changed Original file line number Diff line number Diff line change

@@ -1129,6 +1129,13 @@ independently.

1129 1129 1130 1130

Emitted when client starts a request.

1131 1131 1132 +

`http.client.request.error`

1133 + 1134 +

* `request` {http.ClientRequest}

1135 +

* `error` {Error}

1136 + 1137 +

Emitted when an error occurs during a client request.

1138 + 1132 1139

`http.client.response.finish`

1133 1140 1134 1141

* `request` {http.ClientRequest}

Original file line number Diff line number Diff line change

@@ -90,8 +90,19 @@ const kClientRequestStatistics = Symbol('ClientRequestStatistics');

90 90 91 91

const dc = require('diagnostics_channel');

92 92

const onClientRequestStartChannel = dc.channel('http.client.request.start');

93 +

const onClientRequestErrorChannel = dc.channel('http.client.request.error');

93 94

const onClientResponseFinishChannel = dc.channel('http.client.response.finish');

94 95 96 +

function emitErrorEvent(request, error) {

97 +

if (onClientRequestErrorChannel.hasSubscribers) {

98 +

onClientRequestErrorChannel.publish({

99 +

request,

100 +

error,

101 +

});

102 +

}

103 +

request.emit('error', error);

104 +

}

105 + 95 106

const { addAbortSignal, finished } = require('stream');

96 107 97 108

let debug = require('internal/util/debuglog').debuglog('http', (fn) => {

@@ -343,7 +354,7 @@ function ClientRequest(input, options, cb) {

343 354

if (typeof opts.createConnection === 'function') {

344 355

const oncreate = once((err, socket) => {

345 356

if (err) {

346 -

process.nextTick(() => this.emit('error', err));

357 +

process.nextTick(() => emitErrorEvent(this, err));

347 358

} else {

348 359

this.onSocket(socket);

349 360

}

@@ -465,7 +476,7 @@ function socketCloseListener() {

465 476

// receive a response. The error needs to

466 477

// fire on the request.

467 478

req.socket._hadError = true;

468 -

req.emit('error', new ConnResetException('socket hang up'));

479 +

emitErrorEvent(req, new ConnResetException('socket hang up'));

469 480

}

470 481

req._closed = true;

471 482

req.emit('close');

@@ -492,7 +503,7 @@ function socketErrorListener(err) {

492 503

// For Safety. Some additional errors might fire later on

493 504

// and we need to make sure we don't double-fire the error event.

494 505

req.socket._hadError = true;

495 -

req.emit('error', err);

506 +

emitErrorEvent(req, err);

496 507

}

497 508 498 509

const parser = socket.parser;

@@ -516,7 +527,7 @@ function socketOnEnd() {

516 527

// If we don't have a response then we know that the socket

517 528

// ended prematurely and we need to emit an error on the request.

518 529

req.socket._hadError = true;

519 -

req.emit('error', new ConnResetException('socket hang up'));

530 +

emitErrorEvent(req, new ConnResetException('socket hang up'));

520 531

}

521 532

if (parser) {

522 533

parser.finish();

@@ -541,7 +552,7 @@ function socketOnData(d) {

541 552

socket.removeListener('end', socketOnEnd);

542 553

socket.destroy();

543 554

req.socket._hadError = true;

544 -

req.emit('error', ret);

555 +

emitErrorEvent(req, ret);

545 556

} else if (parser.incoming && parser.incoming.upgrade) {

546 557

// Upgrade (if status code 101) or CONNECT

547 558

const bytesParsed = ret;

@@ -872,7 +883,7 @@ function onSocketNT(req, socket, err) {

872 883

err = new ConnResetException('socket hang up');

873 884

}

874 885

if (err) {

875 -

req.emit('error', err);

886 +

emitErrorEvent(req, err);

876 887

}

877 888

req._closed = true;

878 889

req.emit('close');

Original file line number Diff line number Diff line change

@@ -1,5 +1,6 @@

1 1

'use strict';

2 2

const common = require('../common');

3 +

const { addresses } = require('../common/internet');

3 4

const assert = require('assert');

4 5

const http = require('http');

5 6

const net = require('net');

@@ -9,9 +10,15 @@ const isHTTPServer = (server) => server instanceof http.Server;

9 10

const isIncomingMessage = (object) => object instanceof http.IncomingMessage;

10 11

const isOutgoingMessage = (object) => object instanceof http.OutgoingMessage;

11 12

const isNetSocket = (socket) => socket instanceof net.Socket;

13 +

const isError = (error) => error instanceof Error;

12 14 13 15

dc.subscribe('http.client.request.start', common.mustCall(({ request }) => {

14 16

assert.strictEqual(isOutgoingMessage(request), true);

17 +

}, 2));

18 + 19 +

dc.subscribe('http.client.request.error', common.mustCall(({ request, error }) => {

20 +

assert.strictEqual(isOutgoingMessage(request), true);

21 +

assert.strictEqual(isError(error), true);

15 22

}));

16 23 17 24

dc.subscribe('http.client.response.finish', common.mustCall(({

@@ -50,8 +57,14 @@ const server = http.createServer(common.mustCall((req, res) => {

50 57

res.end('done');

51 58

}));

52 59 53 -

server.listen(() => {

60 +

server.listen(async () => {

54 61

const { port } = server.address();

62 +

const invalidRequest = http.get({

63 +

host: addresses.INVALID_HOST,

64 +

});

65 +

await new Promise((resolve) => {

66 +

invalidRequest.on('error', resolve);

67 +

});

55 68

http.get(`http://localhost:${port}`, (res) => {

56 69

res.resume();

57 70

res.on('end', () => {

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4