netcat
netcat copied to clipboard
Memory leak with `socket.destroy()` on 'connection' (server)
Library version: v1.4.0 node: v10.14.2
Server:
const NetcatServer = require('netcat/server')
const nc = new NetcatServer().k().port(1234).listen()
nc.on('connection', socket => {
// socket.end() // this will not cause trouble
socket.destroy() // this will
})
Client:
# bash
timeout 0.1 nc localhost 1234
timeout 0.1 nc localhost 1234
timeout 0.1 nc localhost 1234
# do this many times
Error:
(node:21020) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 unpipe listeners added. Use emitter.setMaxListeners() to increase limit
(node:21020) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drainlisteners added. Use emitter.setMaxListeners() to increase limit
(node:21020) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 errorlisteners added. Use emitter.setMaxListeners() to increase limit
(node:21020) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 closelisteners added. Use emitter.setMaxListeners() to increase limit
(node:21020) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 finish listeners added. Use emitter.setMaxListeners() to increase limit
Stack trace showed tcpServer.js
:72
/* incoming */
socket
.pipe(streamDebug.call(self, debug, IPandPort))
.pipe(self._filter, { end: !self._keepalive }) // custom filter
Honestly, I have no idea where the problem came from.