diff options
author | Ouyang Yadong <oyydoibh@gmail.com> | 2018-11-18 14:56:02 +0800 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2018-11-24 23:46:02 -0800 |
commit | 9389b464eaea7e74cf60c1d81c7bf1efda4e8897 (patch) | |
tree | 428270cbb451f01573c2cb57cfb8e8b8acdb1a02 /test/parallel/test-net-write-after-end-nt.js | |
parent | 8c0aa84f854d29ef44485d52c8bddba7a3ce77d0 (diff) | |
download | android-node-v8-9389b464eaea7e74cf60c1d81c7bf1efda4e8897.tar.gz android-node-v8-9389b464eaea7e74cf60c1d81c7bf1efda4e8897.tar.bz2 android-node-v8-9389b464eaea7e74cf60c1d81c7bf1efda4e8897.zip |
net: emit "write after end" errors in the next tick
This commit makes those errors caused by calling
`net.Socket.write()` after sockets ending be emitted in the next
tick.
PR-URL: https://github.com/nodejs/node/pull/24457
Fixes: https://github.com/nodejs/node/issues/24111
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test/parallel/test-net-write-after-end-nt.js')
-rw-r--r-- | test/parallel/test-net-write-after-end-nt.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/parallel/test-net-write-after-end-nt.js b/test/parallel/test-net-write-after-end-nt.js new file mode 100644 index 0000000000..3f93b444f4 --- /dev/null +++ b/test/parallel/test-net-write-after-end-nt.js @@ -0,0 +1,26 @@ +'use strict'; +const common = require('../common'); + +const assert = require('assert'); +const net = require('net'); + +const { mustCall } = common; + +// This test ensures those errors caused by calling `net.Socket.write()` +// after sockets ending will be emitted in the next tick. +const server = net.createServer(mustCall((socket) => { + socket.end(); +})).listen(() => { + const client = net.connect(server.address().port, () => { + let hasError = false; + client.on('error', mustCall((err) => { + hasError = true; + server.close(); + })); + client.on('end', mustCall(() => { + client.write('hello', mustCall()); + assert(!hasError, 'The error should be emitted in the next tick.'); + })); + client.end(); + }); +}); |