Test: Anders Conbere <aconbere@gmail.com>
Fix: Andreas Reich <andreas@reich.name>
Closes GH-431.
Closes GH-502.
self._readWatcher = ioWatchers.alloc();
self._readWatcher.socket = self;
self._readWatcher.callback = onReadable;
- self.readable = false;
+ self.readable = self.destroyed = false;
// Queue of buffers and string that need to be written to socket.
self._writeQueue = [];
timers.unenroll(this);
- if (this.server) {
+ if (this.server && !this.destroyed) {
this.server.connections--;
}
self.emit('close', exception ? true : false);
});
}
+
+ this.destroyed = true;
};
--- /dev/null
+var common = require('../common');
+var assert = require('assert');
+
+var Stream = require('net').Stream;
+
+var s = new Stream();
+
+// test that destroy called on a stream with a server only ever decrements the
+// server connection count once
+
+s.server = { connections: 10 }
+assert.equal(10, s.server.connections);
+s.destroy()
+assert.equal(9, s.server.connections);
+s.destroy()
+assert.equal(9, s.server.connections);