Fix socket count metric leak
This commit is contained in:
parent
7acae30875
commit
3db751b65f
|
@ -2,7 +2,7 @@
|
|||
"author": "Calvin Montgomery",
|
||||
"name": "CyTube",
|
||||
"description": "Online media synchronizer and chat",
|
||||
"version": "3.56.2",
|
||||
"version": "3.56.3",
|
||||
"repository": {
|
||||
"url": "http://github.com/calzoneman/sync"
|
||||
},
|
||||
|
|
|
@ -218,18 +218,13 @@ class IOServer {
|
|||
Promise.all(promises).then(() => next());
|
||||
}
|
||||
|
||||
metricsEmittingMiddleware(socket, next) {
|
||||
emitMetrics(socket);
|
||||
next();
|
||||
}
|
||||
|
||||
handleConnection(socket) {
|
||||
// TODO: move out of handleConnection if possible
|
||||
// see: https://github.com/calzoneman/sync/issues/724
|
||||
if (!this.checkIPLimit(socket)) {
|
||||
return;
|
||||
}
|
||||
|
||||
emitMetrics(socket);
|
||||
|
||||
LOGGER.info('Accepted socket from %s', socket.context.ipAddress);
|
||||
counters.add('socket.io:accept', 1);
|
||||
socket.once('disconnect', () => counters.add('socket.io:disconnect', 1));
|
||||
|
@ -257,7 +252,6 @@ class IOServer {
|
|||
io.use(this.cookieParsingMiddleware.bind(this));
|
||||
io.use(this.ipSessionCookieMiddleware.bind(this));
|
||||
io.use(this.authUserMiddleware.bind(this));
|
||||
io.use(this.metricsEmittingMiddleware.bind(this));
|
||||
io.on('connection', this.handleConnection.bind(this));
|
||||
}
|
||||
|
||||
|
|
|
@ -69,57 +69,6 @@ describe('IOServer', () => {
|
|||
});
|
||||
});
|
||||
|
||||
/*
|
||||
describe('#ipConnectionLimitMiddleware', () => {
|
||||
beforeEach(() => {
|
||||
socket.once = (event, callback) => {
|
||||
socket[`on_${event}`] = callback;
|
||||
};
|
||||
});
|
||||
|
||||
it('allows IPs before the limit', done => {
|
||||
server.ipConnectionLimitMiddleware(socket, error => {
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects IPs at the limit', done => {
|
||||
server.ipCount.set(socket.context.ipAddress,
|
||||
require('../../lib/config').get('io.ip-connection-limit'));
|
||||
server.ipConnectionLimitMiddleware(socket, error => {
|
||||
assert(error, 'Expected an error to be returned');
|
||||
assert.strictEqual(error.message,
|
||||
'Too many connections from your IP address');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('manages the ipCount map correctly', done => {
|
||||
const ip = socket.context.ipAddress;
|
||||
|
||||
assert(!server.ipCount.has(ip), 'Test precondition failed: ipCount.has(ip)');
|
||||
|
||||
server.ipConnectionLimitMiddleware(socket, error => {
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
assert.strictEqual(server.ipCount.get(ip), 1);
|
||||
|
||||
socket.on_disconnect();
|
||||
|
||||
assert.strictEqual(server.ipCount.get(ip), 0);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
describe('#cookieParsingMiddleware', () => {
|
||||
it('parses cookies', done => {
|
||||
socket.handshake.headers.cookie = 'flavor=chocolate%20chip';
|
||||
|
|
Loading…
Reference in a new issue