Open
Description
If I modify net-events.tap.js to have the server do socket.destroy() rather than a socket.end(), I get a 'close' event in the client that does not get the client.write cls.
Should the 'close' event preserve the cls state? Thank you.
Here is the modified net-events.tap.js
'use strict';
var net = require('net')
, tap = require('tap')
, test = tap.test
, createNamespace = require('../context').createNamespace
;
test("continuation-local state with net connection", function (t) {
t.plan(4);
var namespace = createNamespace('net');
namespace.run(function () {
namespace.set('test', 0xabad1dea);
var server;
namespace.run(function () {
namespace.set('test', 0x1337);
server = net.createServer(function (socket) {
t.equal(namespace.get('test'), 0x1337, "state has been mutated");
socket.on("data", function () {
t.equal(namespace.get('test'), 0x1337, "state is still preserved");
socket.destroy(); // DESTROY RATHER THAN END
server.close();
// socket.end("GoodBye");
});
});
server.listen(function () {
var address = server.address();
namespace.run(function () {
namespace.set("test", "MONKEY");
var client = net.connect(address.port, function () {
t.equal(namespace.get("test"), "MONKEY",
"state preserved for client connection");
client.write("Hello");
client.on("data", function () {
t.equal(namespace.get("test"), "MONKEY", "state preserved for client data");
});
client.on("close", function () { // CLOSE EVENT NOT GETTING CLS STATE
t.equal(namespace.get("test"), "MONKEY", "state preserved for client close");
t.end();
});
});
});
});
});
});
});