diff --git a/lib/bcoin/pool.js b/lib/bcoin/pool.js index 10184c5c..01fb78b5 100644 --- a/lib/bcoin/pool.js +++ b/lib/bcoin/pool.js @@ -429,10 +429,22 @@ Pool.prototype.listen = function listen(callback) { } this.server.on('connection', function(socket) { + var hostname; + if (self.peers.leeches.length >= self.maxLeeches) { + hostname = utils.hostname(socket.remoteAddress, socket.remotePort); + bcoin.debug('Ignoring leech: too many leeches (%s).', hostname); socket.destroy(); return; } + + if (self.isMisbehaving(socket.remoteAddress)) { + hostname = utils.hostname(socket.remoteAddress, socket.remotePort); + bcoin.debug('Ignoring misbehaving leech (%s).', hostname); + socket.destroy(); + return; + } + self._addLeech(socket); });