Skip to content

Commit 4f08b1a

Browse files
beaucollinsdarrachequesne
authored andcommittedJun 4, 2017
[fix] Use the requestid from response when deleting requests (#225)
Request does not have a requestid property so requests were not being cleaned up and .requests object was leaking memory.
1 parent c743d61 commit 4f08b1a

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed
 

‎index.js

+9-7
Original file line numberDiff line numberDiff line change
@@ -315,14 +315,16 @@ function adapter(uri, opts) {
315315
return;
316316
}
317317

318-
if (!response.requestid || !self.requests[response.requestid]) {
318+
var requestid = response.requestid;
319+
320+
if (!requestid || !self.requests[requestid]) {
319321
debug('ignoring unknown request');
320322
return;
321323
}
322324

323325
debug('received response %j', response);
324326

325-
var request = self.requests[response.requestid];
327+
var request = self.requests[requestid];
326328

327329
switch (request.type) {
328330

@@ -339,14 +341,14 @@ function adapter(uri, opts) {
339341
if (request.msgCount === request.numsub) {
340342
clearTimeout(request.timeout);
341343
if (request.callback) process.nextTick(request.callback.bind(null, null, Object.keys(request.clients)));
342-
delete self.requests[request.requestid];
344+
delete self.requests[requestid];
343345
}
344346
break;
345347

346348
case requestTypes.clientRooms:
347349
clearTimeout(request.timeout);
348350
if (request.callback) process.nextTick(request.callback.bind(null, null, response.rooms));
349-
delete self.requests[request.requestid];
351+
delete self.requests[requestid];
350352
break;
351353

352354
case requestTypes.allRooms:
@@ -362,7 +364,7 @@ function adapter(uri, opts) {
362364
if (request.msgCount === request.numsub) {
363365
clearTimeout(request.timeout);
364366
if (request.callback) process.nextTick(request.callback.bind(null, null, Object.keys(request.rooms)));
365-
delete self.requests[request.requestid];
367+
delete self.requests[requestid];
366368
}
367369
break;
368370

@@ -371,7 +373,7 @@ function adapter(uri, opts) {
371373
case requestTypes.remoteDisconnect:
372374
clearTimeout(request.timeout);
373375
if (request.callback) process.nextTick(request.callback.bind(null, null));
374-
delete self.requests[request.requestid];
376+
delete self.requests[requestid];
375377
break;
376378

377379
case requestTypes.customRequest:
@@ -382,7 +384,7 @@ function adapter(uri, opts) {
382384
if (request.msgCount === request.numsub) {
383385
clearTimeout(request.timeout);
384386
if (request.callback) process.nextTick(request.callback.bind(null, null, request.replies));
385-
delete self.requests[request.requestid];
387+
delete self.requests[requestid];
386388
}
387389
break;
388390

‎test/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ var socket1, socket2, socket3;
220220
expect(rooms).to.contain(socket2.id);
221221
expect(rooms).to.contain(socket3.id);
222222
expect(rooms).to.contain('woot1');
223+
expect(namespace1.adapter.requests).to.be.empty();
223224
done();
224225
});
225226
});

0 commit comments

Comments
 (0)
Please sign in to comment.