netcat icon indicating copy to clipboard operation
netcat copied to clipboard

Memory leak with `socket.destroy()` on 'connection' (server)

Open buckle2000 opened this issue 6 years ago • 1 comments

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

buckle2000 avatar Jan 03 '19 07:01 buckle2000

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.

buckle2000 avatar Jan 03 '19 07:01 buckle2000