fix: close by array

License: MIT
Signed-off-by: Jacob Heun <jacobheun@gmail.com>
This commit is contained in:
Jacob Heun 2018-11-08 17:03:23 +01:00
parent 1cd0066755
commit 270ac46090
No known key found for this signature in database
GPG Key ID: CA5A94C15809879F

View File

@ -41,8 +41,6 @@ module.exports = (handler) => {
cb(null, [addr]) cb(null, [addr])
} }
trackSocket(server, socket)
const conn = new Connection(s) const conn = new Connection(s)
handler(conn) handler(conn)
listener.emit('connection', conn) listener.emit('connection', conn)
@ -51,9 +49,17 @@ module.exports = (handler) => {
server.on('listening', () => listener.emit('listening')) server.on('listening', () => listener.emit('listening'))
server.on('error', (err) => listener.emit('error', err)) server.on('error', (err) => listener.emit('error', err))
server.on('close', () => listener.emit('close')) server.on('close', () => listener.emit('close'))
server.on('connection', (conn) => {
server.__connections.push(conn)
conn.once('close', () => {
server.__connections = server.__connections.filter((c) => {
return conn !== c
})
})
})
// Keep track of open connections to destroy in case of timeout // Keep track of open connections to destroy in case of timeout
server.__connections = {} server.__connections = []
listener.close = (options, callback) => { listener.close = (options, callback) => {
if (typeof options === 'function') { if (typeof options === 'function') {
@ -65,9 +71,9 @@ module.exports = (handler) => {
const timeout = setTimeout(() => { const timeout = setTimeout(() => {
log('unable to close graciously, destroying conns') log('unable to close graciously, destroying conns')
Object.keys(server.__connections).forEach((key) => { server.__connections.forEach((conn) => {
log('destroying %s', key) log('destroying %s', `${conn.remoteAddress}:${conn.remotePort}`)
server.__connections[key].destroy() conn.destroy()
}) })
}, options.timeout || CLOSE_TIMEOUT) }, options.timeout || CLOSE_TIMEOUT)
@ -144,12 +150,3 @@ function getIpfsId (ma) {
return tuple[0] === IPFS_CODE return tuple[0] === IPFS_CODE
})[0][1] })[0][1]
} }
function trackSocket (server, socket) {
const key = `${socket.remoteAddress}:${socket.remotePort}`
server.__connections[key] = socket
socket.on('close', () => {
delete server.__connections[key]
})
}