From b64316c67dc0354e463751ef49fcca22ff90b23d Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Fri, 26 Aug 2022 19:11:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=85=E9=A2=91=E9=99=90?= =?UTF-8?q?=E5=88=B6=E7=99=BD=E5=90=8D=E5=8D=95=EF=BC=8C=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E4=B8=8D=E5=8F=97=E8=B6=85=E9=A2=91=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/moquette/imhandler/IMHandler.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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;