diff options
author | Matteo Collina <hello@matteocollina.com> | 2017-05-22 18:03:55 +0200 |
---|---|---|
committer | Matteo Collina <hello@matteocollina.com> | 2017-05-24 11:21:03 +0200 |
commit | ccd3eadbd7dae3a23d43bf490fa9d3019324370e (patch) | |
tree | a78c04da8eeb777baba4a29c25c3516a40c9220c /test | |
parent | 6af72d4b037eba38d94395f57a03a498a2efef09 (diff) | |
download | android-node-v8-ccd3eadbd7dae3a23d43bf490fa9d3019324370e.tar.gz android-node-v8-ccd3eadbd7dae3a23d43bf490fa9d3019324370e.tar.bz2 android-node-v8-ccd3eadbd7dae3a23d43bf490fa9d3019324370e.zip |
stream: fix destroy(err, cb) regression
Fixed a regression that caused the callback passed to destroy()
to not be called if the stream was already destroyed.
This caused a regression on the ws module in CITGM introduced by
https://github.com/nodejs/node/pull/12925.
PR-URL: https://github.com/nodejs/node/pull/13156
Fixes: https://github.com/websockets/ws/issues/1118
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-net-socket-destroy-send.js | 22 | ||||
-rw-r--r-- | test/parallel/test-stream-readable-destroy.js | 14 | ||||
-rw-r--r-- | test/parallel/test-stream-writable-destroy.js | 15 |
3 files changed, 51 insertions, 0 deletions
diff --git a/test/parallel/test-net-socket-destroy-send.js b/test/parallel/test-net-socket-destroy-send.js new file mode 100644 index 0000000000..309e41f6c9 --- /dev/null +++ b/test/parallel/test-net-socket-destroy-send.js @@ -0,0 +1,22 @@ +'use strict'; + +const common = require('../common'); +const net = require('net'); +const assert = require('assert'); + +const server = net.createServer(); +server.listen(0, common.mustCall(function() { + const port = server.address().port; + const conn = net.createConnection(port); + + conn.on('connect', common.mustCall(function() { + conn.destroy(); + conn.on('error', common.mustCall(function(err) { + assert.strictEqual(err.message, 'This socket is closed'); + })); + conn.write(Buffer.from('kaboom'), common.mustCall(function(err) { + assert.strictEqual(err.message, 'This socket is closed'); + })); + server.close(); + })); +})); diff --git a/test/parallel/test-stream-readable-destroy.js b/test/parallel/test-stream-readable-destroy.js index 800b6be086..def20d26c3 100644 --- a/test/parallel/test-stream-readable-destroy.js +++ b/test/parallel/test-stream-readable-destroy.js @@ -160,3 +160,17 @@ const { inherits } = require('util'); new MyReadable(); } + +{ + // destroy and destroy callback + const read = new Readable({ + read() {} + }); + read.resume(); + + const expected = new Error('kaboom'); + + read.destroy(expected, common.mustCall(function(err) { + assert.strictEqual(expected, err); + })); +} diff --git a/test/parallel/test-stream-writable-destroy.js b/test/parallel/test-stream-writable-destroy.js index a91f148f9e..87e55eccc3 100644 --- a/test/parallel/test-stream-writable-destroy.js +++ b/test/parallel/test-stream-writable-destroy.js @@ -170,3 +170,18 @@ const { inherits } = require('util'); new MyWritable(); } + +{ + // destroy and destroy callback + const write = new Writable({ + write(chunk, enc, cb) { cb(); } + }); + + write.destroy(); + + const expected = new Error('kaboom'); + + write.destroy(expected, common.mustCall(function(err) { + assert.strictEqual(expected, err); + })); +} |