From 2c9e8d66e870b467017174d280e04a10d4b057a7 Mon Sep 17 00:00:00 2001 From: imhao183 Date: Fri, 22 Jan 2021 09:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B8=A2=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E4=B8=8B=E7=BA=BF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/moquette/imhandler/RouteHandler.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java index e6723bea..5bda5e6a 100644 --- a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java @@ -10,6 +10,7 @@ package io.moquette.imhandler; import cn.wildfirechat.proto.WFCMessage; import com.hazelcast.core.Member; +import io.moquette.persistence.MemorySessionStore; import io.moquette.spi.ClientSession; import io.moquette.spi.impl.Qos1PublishHandler; import io.netty.buffer.ByteBuf; @@ -24,6 +25,19 @@ import static io.moquette.BrokerConstants.HZ_Cluster_Node_External_Short_Port; public class RouteHandler extends IMHandler { @Override public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.RouteRequest request, Qos1PublishHandler.IMCallback callback) { + MemorySessionStore.Session session = m_sessionsStore.sessionForClientAndUser(fromUser, clientID); + if (session == null) { + ErrorCode errorCode = m_sessionsStore.loadActiveSession(fromUser, clientID); + if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) { + return errorCode; + } + session = m_sessionsStore.sessionForClientAndUser(fromUser, clientID); + } + + if (session == null || session.getDeleted() > 0) { + return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH; + } + Member member = mServer.getHazelcastInstance().getCluster().getLocalMember(); String serverIp = member.getStringAttribute(HZ_Cluster_Node_External_IP); String longPort = member.getStringAttribute(HZ_Cluster_Node_External_Long_Port);