diff --git a/broker/src/main/java/io/moquette/imhandler/IMHandler.java b/broker/src/main/java/io/moquette/imhandler/IMHandler.java
index f06eba08..0727f7ba 100755
--- a/broker/src/main/java/io/moquette/imhandler/IMHandler.java
+++ b/broker/src/main/java/io/moquette/imhandler/IMHandler.java
@@ -39,6 +39,8 @@ import java.util.*;
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_OVER_FREQUENCY;
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
import static io.moquette.BrokerConstants.CLIENT_REQUEST_RATE_LIMIT;
+import static win.liyufan.im.IMTopic.GetUserSettingTopic;
+import static win.liyufan.im.IMTopic.PullMessageTopic;
/**
* 请求处理接口
@@ -162,10 +164,17 @@ abstract public class IMHandler {
mLimitCounter = new RateLimiter(5, clientRateLimit);
}
+ boolean isNotLimitTopic(String topic) {
+ if (PullMessageTopic.equals(topic)
+ || GetUserSettingTopic.equals(topic)) {
+ return true;
+ }
+ return false;
+ }
public ErrorCode preAction(String clientID, String fromUser, String topic, Qos1PublishHandler.IMCallback callback, ProtoConstants.RequestSourceType requestSourceType) {
LOG.info("imHandler fromUser={}, clientId={}, topic={}", fromUser, clientID, topic);
- if(requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !mLimitCounter.isGranted(clientID + fromUser + topic)) {
+ if(requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !isNotLimitTopic(topic) && !mLimitCounter.isGranted(clientID + fromUser + topic)) {
return ErrorCode.ERROR_CODE_OVER_FREQUENCY;
}
return ErrorCode.ERROR_CODE_SUCCESS;