| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 99a09a2 commit 5eef00a
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -360,10 +360,11 @@ Server.prototype.setTimeout = function setTimeout(msecs, callback) { | |||
| 360 | 360 | }; | |
| 361 | 361 | ||
| 362 | 362 | Server.prototype[EE.captureRejectionSymbol] = function( | |
| 363 | - err, event, req, res) { | ||
| 363 | + err, event, ...args) { | ||
| 364 | 364 | ||
| 365 | 365 | switch (event) { | |
| 366 | 366 | case 'request': | |
| 367 | + const [ , res] = args; | ||
| 367 | 368 | if (!res.headersSent && !res.writableEnded) { | |
| 368 | 369 | // Don't leak headers. | |
| 369 | 370 | for (const name of res.getHeaderNames()) { | |
@@ -376,7 +377,8 @@ Server.prototype[EE.captureRejectionSymbol] = function( | |||
| 376 | 377 | } | |
| 377 | 378 | break; | |
| 378 | 379 | default: | |
| 379 | - this.emit('error', err); | ||
| 380 | + net.Server.prototype[Symbol.for('nodejs.rejection')] | ||
| 381 | + .call(this, err, event, ...args); | ||
| 380 | 382 | } | |
| 381 | 383 | }; | |
| 382 | 384 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1655,6 +1655,19 @@ function emitCloseNT(self) { | |||
| 1655 | 1655 | } | |
| 1656 | 1656 | ||
| 1657 | 1657 | ||
| 1658 | + Server.prototype[EventEmitter.captureRejectionSymbol] = function( | ||
| 1659 | + err, event, sock) { | ||
| 1660 | + | ||
| 1661 | + switch (event) { | ||
| 1662 | + case 'connection': | ||
| 1663 | + sock.destroy(err); | ||
| 1664 | + break; | ||
| 1665 | + default: | ||
| 1666 | + this.emit('error', err); | ||
| 1667 | + } | ||
| 1668 | + }; | ||
| 1669 | + | ||
| 1670 | + | ||
| 1658 | 1671 | // Legacy alias on the C++ wrapper object. This is not public API, so we may | |
| 1659 | 1672 | // want to runtime-deprecate it at some point. There's no hurry, though. | |
| 1660 | 1673 | ObjectDefineProperty(TCP.prototype, 'owner', { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,27 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + const common = require('../common'); | ||
| 4 | + const assert = require('assert'); | ||
| 5 | + const events = require('events'); | ||
| 6 | + const { createServer, connect } = require('net'); | ||
| 7 | + | ||
| 8 | + events.captureRejections = true; | ||
| 9 | + | ||
| 10 | + const server = createServer(common.mustCall(async (sock) => { | ||
| 11 | + server.close(); | ||
| 12 | + | ||
| 13 | + const _err = new Error('kaboom'); | ||
| 14 | + sock.on('error', common.mustCall((err) => { | ||
| 15 | + assert.strictEqual(err, _err); | ||
| 16 | + })); | ||
| 17 | + throw _err; | ||
| 18 | + })); | ||
| 19 | + | ||
| 20 | + server.listen(0, common.mustCall(() => { | ||
| 21 | + const sock = connect( | ||
| 22 | + server.address().port, | ||
| 23 | + server.address().host | ||
| 24 | + ); | ||
| 25 | + | ||
| 26 | + sock.on('close', common.mustCall()); | ||
| 27 | + })); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments