summaryrefslogtreecommitdiff
path: root/test/parallel/test-net-write-after-end-nt.js
diff options
context:
space:
mode:
authorOuyang Yadong <oyydoibh@gmail.com>2018-11-18 14:56:02 +0800
committerRich Trott <rtrott@gmail.com>2018-11-24 23:46:02 -0800
commit9389b464eaea7e74cf60c1d81c7bf1efda4e8897 (patch)
tree428270cbb451f01573c2cb57cfb8e8b8acdb1a02 /test/parallel/test-net-write-after-end-nt.js
parent8c0aa84f854d29ef44485d52c8bddba7a3ce77d0 (diff)
downloadandroid-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.js26
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();
+ });
+});