From f924f7cad6ecc232b3ed249d3e4454c3bb309db6 Mon Sep 17 00:00:00 2001 From: wangwang16 Date: Wed, 13 Dec 2023 22:18:50 +0800 Subject: [PATCH] fix: revert opt socket Signed-off-by: wangwang16 --- .../messenger_device_socket_manager.c | 57 +++++++------------ 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/baselib/msglib/src/standard/messenger_device_socket_manager.c b/baselib/msglib/src/standard/messenger_device_socket_manager.c index b24c562..a782bc2 100644 --- a/baselib/msglib/src/standard/messenger_device_socket_manager.c +++ b/baselib/msglib/src/standard/messenger_device_socket_manager.c @@ -160,7 +160,11 @@ static void OnSocketMessageReceived(const DeviceIdentify *devId, const uint8_t * static void RemoveSocketNode(int32_t socket, ShutdownReason reason, bool isServer) { DeviceSocketManager *instance = GetDeviceSocketManagerInstance(); - ListHead *socketList = isServer ? &instance->serverSocketList : &instance->clientSocketList; + + ListHead *socketList = &instance->clientSocketList; + if (isServer) { + socketList = &instance->serverSocketList; + } LockMutex(&instance->mutex); ListNode *node = NULL; @@ -245,7 +249,7 @@ static void CreateOrRestartSocketCloseTimerWithLock(int32_t socket) UnlockMutex(&inst->mutex); } -static bool GetIdentityBySocketId(int32_t socket, bool isServer, DeviceIdentify *identity) +static bool GetIdentityBySocketId(int32_t socket, DeviceIdentify *identity, bool isServer) { if (identity == NULL) { return false; @@ -257,9 +261,8 @@ static bool GetIdentityBySocketId(int32_t socket, bool isServer, DeviceIdentify LockMutex(&instance->mutex); ListNode *node = NULL; SocketNodeInfo *socketInfo; - ListHead *socketList = isServer ? &instance->serverSocketList : &instance->clientSocketList; - - FOREACH_LIST_NODE (node, socketList) { + ListHead *list = isServer ? &instance->serverSocketList : &instance->clientSocketList; + FOREACH_LIST_NODE (node, list) { socketInfo = LIST_ENTRY(node, SocketNodeInfo, link); if (socketInfo->socket == socket) { *identity = socketInfo->identity; @@ -274,12 +277,12 @@ static bool GetIdentityBySocketId(int32_t socket, bool isServer, DeviceIdentify static bool GetIdentityByServerSocket(int32_t socket, DeviceIdentify *identity) { - return GetIdentityBySocketId(socket, true, identity); + return GetIdentityBySocketId(socket, identity, true); } static bool GetIdentityByClientSocket(int32_t socket, DeviceIdentify *identity) { - return GetIdentityBySocketId(socket, false, identity); + return GetIdentityBySocketId(socket, identity, false); } static SocketNodeInfo *CreateSocketNodeInfo(int32_t socket, const DeviceIdentify *identity) @@ -305,7 +308,7 @@ static SocketNodeInfo *CreateSocketNodeInfo(int32_t socket, const DeviceIdentify return socketInfo; } -static void ProcessBindDevice(int socket, const DeviceIdentify *devId, bool isServer) +static void ClientOnBind(int socket, const DeviceIdentify *devId) { if (devId == NULL) { SECURITY_LOG_ERROR("client on bind invalid params"); @@ -318,10 +321,8 @@ static void ProcessBindDevice(int socket, const DeviceIdentify *devId, bool isSe return; } - ListHead *socketList = isServer ? &instance->serverSocketList : &instance->clientSocketList; - LockMutex(&instance->mutex); - AddListNodeBefore(&socketInfo->link, socketList); + AddListNodeBefore(&socketInfo->link, &instance->clientSocketList); ListNode *node = NULL; ListNode *temp = NULL; FOREACH_LIST_NODE_SAFE (node, &instance->pendingSendList, temp) { @@ -335,22 +336,13 @@ static void ProcessBindDevice(int socket, const DeviceIdentify *devId, bool isSe if (sent != 0) { SECURITY_LOG_ERROR("SendBytes error code = %{public}d", sent); } + CreateOrRestartSocketCloseTimer(socket); FREE(msgData); } UnlockMutex(&instance->mutex); return; } -static void ServerOnBind(int32_t socket, PeerSocketInfo info) -{ - DeviceIdentify identity = {DEVICE_ID_MAX_LEN, {0}}; - if (!MessengerGetDeviceIdentifyByNetworkId(info.networkId, &identity)) { - SECURITY_LOG_ERROR("MessengerGetDeviceIdentifyByNetworkId failed"); - return; - } - ProcessBindDevice(socket, &identity, true); -} - static void ClientOnBind(int socket, const DeviceIdentify *devId) { ProcessBindDevice(socket, devId, false); @@ -530,19 +522,18 @@ bool DeInitDeviceSocketManager(void) return true; } -static bool GetSocketBySocketList(const DeviceIdentify *devId, bool isServer, int32_t *socket) +static bool GetSocketByClientSocketList(const DeviceIdentify *devId, int32_t *socket) { if (devId == NULL || socket == NULL) { return false; } DeviceSocketManager *instance = GetDeviceSocketManagerInstance(); - ListHead *socketList = isServer ? &instance->serverSocketList : &instance->clientSocketList; bool find = false; LockMutex(&instance->mutex); ListNode *node = NULL; - FOREACH_LIST_NODE (node, socketList) { + FOREACH_LIST_NODE (node, &instance->clientSocketList) { SocketNodeInfo *socketInfo = LIST_ENTRY(node, SocketNodeInfo, link); if (IsSameDevice(&socketInfo->identity, devId)) { *socket = socketInfo->socket; @@ -555,16 +546,6 @@ static bool GetSocketBySocketList(const DeviceIdentify *devId, bool isServer, in return find; } -static bool GetSocketByClientSocketList(const DeviceIdentify *devId, int32_t *socket) -{ - return GetSocketBySocketList(devId, false, socket); -} - -static bool GetSocketByServerSocketList(const DeviceIdentify *devId, int32_t *socket) -{ - return GetSocketBySocketList(devId, true, socket); -} - static void PushMsgDataToPendingList(uint32_t transNo, const DeviceIdentify *devId, const uint8_t *msg, uint32_t msgLen) { if (devId == NULL || msg == NULL) { @@ -630,7 +611,7 @@ static bool BindSync(int32_t socket, const DeviceIdentify *devId) return false; } -static int32_t PrepareBindSocket(const char *socketName, DeviceIdentify *devId, int32_t *socketId) +static int32_t ProcessBindSocket(const char *socketName, DeviceIdentify *devId, int32_t *socketId) { if (socketName == NULL || devId == NULL || socketId == NULL) { SECURITY_LOG_ERROR("invalid params bind socket"); @@ -695,7 +676,7 @@ void *BindSyncWithPthread(void *arg) int32_t socket = 0; bool succ = false; - if (PrepareBindSocket(inst->primarySockName, &identity, &socket) == 0) { + if (ProcessBindSocket(inst->primarySockName, &identity, &socket) == 0) { succ = BindSync(socket, &identity); } @@ -703,7 +684,7 @@ void *BindSyncWithPthread(void *arg) return NULL; } - if (PrepareBindSocket(inst->secondarySockName, &identity, &socket) == 0) { + if (ProcessBindSocket(inst->secondarySockName, &identity, &socket) == 0) { (void)BindSync(socket, &identity); } return NULL; @@ -744,7 +725,7 @@ void MessengerSendMsgTo(uint64_t transNo, const DeviceIdentify *devId, const uin } int32_t socket = 0; - bool find = GetSocketByClientSocketList(devId, &socket) || GetSocketByServerSocketList(devId, &socket); + bool find = GetSocketByClientSocketList(devId, &socket); if (find && socket != 0) { int32_t ret = SendBytes(socket, msg, msgLen); if (ret != 0) { -- Gitee