mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Moving DDPRateLimiter to a weak dependency to minimize dependencies on DDP
This commit is contained in:
@@ -580,22 +580,26 @@ _.extend(Session.prototype, {
|
||||
// reconnect.
|
||||
return;
|
||||
|
||||
var rateLimiterInput = {
|
||||
userId: self.userId,
|
||||
ipAddr: self.connectionHandle.clientAddress,
|
||||
type: msg.msg,
|
||||
name: msg.name,
|
||||
sessionId: self.id
|
||||
};
|
||||
if (Package['ddp-rate-limiter']) {
|
||||
var DDPRateLimiter = Package['ddp-rate-limiter'].DDPRateLimiter;
|
||||
var rateLimiterInput = {
|
||||
userId: self.userId,
|
||||
ipAddr: self.connectionHandle.clientAddress,
|
||||
type: msg.msg,
|
||||
name: msg.name,
|
||||
sessionId: self.id
|
||||
};
|
||||
|
||||
DDPRateLimiter._increment(rateLimiterInput);
|
||||
var rateLimitResult = DDPRateLimiter._check(rateLimiterInput)
|
||||
if (!rateLimitResult.allowed) {
|
||||
self.send({
|
||||
msg: 'nosub', id: msg.id,
|
||||
error: new Meteor.Error('too-many-requests', DDPRateLimiter.getErrorMessage(rateLimitResult))
|
||||
});
|
||||
DDPRateLimiter._increment(rateLimiterInput);
|
||||
var rateLimitResult = DDPRateLimiter._check(rateLimiterInput)
|
||||
if (!rateLimitResult.allowed) {
|
||||
self.send({
|
||||
msg: 'nosub', id: msg.id,
|
||||
error: new Meteor.Error('too-many-requests', DDPRateLimiter.getErrorMessage(rateLimitResult))
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var handler = self.server.publish_handlers[msg.name];
|
||||
|
||||
self._startSubscription(handler, msg.id, msg.params, msg.name);
|
||||
@@ -663,17 +667,20 @@ _.extend(Session.prototype, {
|
||||
});
|
||||
|
||||
try {
|
||||
var rateLimiterInput = {
|
||||
userId: self.userId,
|
||||
ipAddr: self.connectionHandle.clientAddress,
|
||||
type: msg.msg,
|
||||
name: msg.method,
|
||||
sessionId: self.id
|
||||
};
|
||||
DDPRateLimiter._increment(rateLimiterInput);
|
||||
var rateLimitResult = DDPRateLimiter._check(rateLimiterInput)
|
||||
if (!rateLimitResult.allowed) {
|
||||
throw new Meteor.Error("too-many-requests", DDPRateLimiter.getErrorMessage(rateLimitResult));
|
||||
if (Package['ddp-rate-limiter']) {
|
||||
var DDPRateLimiter = Package['ddp-rate-limiter'].DDPRateLimiter;
|
||||
var rateLimiterInput = {
|
||||
userId: self.userId,
|
||||
ipAddr: self.connectionHandle.clientAddress,
|
||||
type: msg.msg,
|
||||
name: msg.method,
|
||||
sessionId: self.id
|
||||
};
|
||||
DDPRateLimiter._increment(rateLimiterInput);
|
||||
var rateLimitResult = DDPRateLimiter._check(rateLimiterInput)
|
||||
if (!rateLimitResult.allowed) {
|
||||
throw new Meteor.Error("too-many-requests", DDPRateLimiter.getErrorMessage(rateLimitResult));
|
||||
}
|
||||
}
|
||||
|
||||
var result = DDPServer._CurrentWriteFence.withValue(fence, function () {
|
||||
|
||||
@@ -15,7 +15,7 @@ Package.onUse(function (api) {
|
||||
|
||||
// common functionality
|
||||
api.use('ddp-common', 'server'); // heartbeat
|
||||
api.use('ddp-rate-limiter');
|
||||
api.use('ddp-rate-limiter', 'server', {weak: true});
|
||||
// Transport
|
||||
api.use('ddp-client', 'server');
|
||||
api.imply('ddp-client');
|
||||
|
||||
Reference in New Issue
Block a user