From 1a46e31dc61ac6057aecf6376a6147376647d84a Mon Sep 17 00:00:00 2001 From: duxbbo Date: Thu, 7 Jul 2022 12:00:29 +0000 Subject: [PATCH 01/16] connect support muti dynamic listener Signed-off-by: duxbbo Change-Id: I68bae731a1c4f49d753c40caa2010b88608ae8ba --- core/authentication/src/auth_common.c | 46 +- core/authentication/src/auth_manager.c | 30 +- core/authentication/src/auth_socket.c | 19 +- .../heartbeat/src/lnn_heartbeat_fsm.c | 4 +- .../include/lnn_network_manager.h | 24 +- .../net_buscenter/src/lnn_ip_network_impl.c | 51 +- .../utils/src/lnn_connection_addr_utils.c | 22 +- core/common/include/softbus_def.h | 2 + .../ble/src/softbus_ble_connection.c | 22 +- core/connection/br/src/br_connection.c | 6 +- .../connection/br/src/br_connection_manager.c | 14 +- core/connection/common/conn_common.gni | 1 + .../common/src/softbus_base_listener.c | 996 ++++++++++-------- core/connection/common/src/softbus_socket.c | 233 ++++ .../common/src/softbus_tcp_socket.c | 166 +-- .../interface/softbus_base_listener.h | 27 +- .../interface/softbus_conn_interface.h | 99 +- .../interface/softbus_protocol_def.h | 58 + core/connection/interface/softbus_socket.h | 81 ++ .../connection/interface/softbus_tcp_socket.h | 32 +- .../connection/manager/softbus_conn_manager.c | 11 +- .../p2p/manager/src/p2plink_manager.c | 3 + .../tcp/src/softbus_tcp_connect_manager.c | 85 +- .../standard/init/src/softbus_server.cpp | 8 +- .../proxy/src/softbus_proxychannel_message.c | 2 +- .../src/softbus_proxychannel_transceiver.c | 30 +- .../include/trans_tcp_direct_listener.h | 6 +- .../src/trans_tcp_direct_listener.c | 42 +- .../tcp_direct/src/trans_tcp_direct_manager.c | 4 +- .../tcp_direct/src/trans_tcp_direct_message.c | 4 +- .../tcp_direct/src/trans_tcp_direct_p2p.c | 21 +- .../tcp_direct/src/trans_tcp_direct_wifi.c | 2 +- .../src/trans_udp_negotiation.c | 4 +- .../client_trans_tcp_direct_listener.h | 1 + .../src/client_trans_tcp_direct_listener.c | 17 +- .../src/client_trans_tcp_direct_manager.c | 2 +- .../authentication/unittest/auth_test.cpp | 4 +- .../core/connection/br/connection_br_test.cpp | 18 +- .../common/softbus_conn_common_test.cpp | 598 +++++------ .../manager/connection_manager_test.cpp | 2 +- .../core/connection/tcp/tcp_manager_test.cpp | 282 ++--- .../unittest/trans_tcp_direct_test.cpp | 42 +- 42 files changed, 1748 insertions(+), 1373 deletions(-) create mode 100644 core/connection/common/src/softbus_socket.c create mode 100644 core/connection/interface/softbus_protocol_def.h create mode 100644 core/connection/interface/softbus_socket.h diff --git a/core/authentication/src/auth_common.c b/core/authentication/src/auth_common.c index 8e9911fafd..20ab1cfec2 100644 --- a/core/authentication/src/auth_common.c +++ b/core/authentication/src/auth_common.c @@ -98,21 +98,21 @@ int32_t AuthGetDeviceKey(char *key, uint32_t size, uint32_t *len, const ConnectO } switch (option->type) { case CONNECT_BR: - if (strcpy_s(key, size, option->info.brOption.brMac) != EOK) { + if (strcpy_s(key, size, option->brOption.brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } *len = BT_MAC_LEN; break; case CONNECT_BLE: - if (strcpy_s(key, size, option->info.bleOption.bleMac) != EOK) { + if (strcpy_s(key, size, option->bleOption.bleMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } *len = BT_MAC_LEN; break; case CONNECT_TCP: - if (strcpy_s(key, size, option->info.ipOption.ip) != EOK) { + if (strcpy_s(key, size, option->socketOption.addr) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } @@ -134,26 +134,26 @@ int32_t AuthConvertConnInfo(ConnectOption *option, const ConnectionInfo *connInf option->type = connInfo->type; switch (connInfo->type) { case CONNECT_BR: { - if (strcpy_s(option->info.brOption.brMac, BT_MAC_LEN, connInfo->info.brInfo.brMac) != EOK) { + if (strcpy_s(option->brOption.brMac, BT_MAC_LEN, connInfo->brInfo.brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } break; } case CONNECT_BLE: - if (strcpy_s(option->info.bleOption.bleMac, BT_MAC_LEN, connInfo->info.bleInfo.bleMac) != EOK || - memcpy_s(option->info.bleOption.deviceIdHash, UDID_HASH_LEN, - connInfo->info.bleInfo.deviceIdHash, UDID_HASH_LEN) != EOK) { + if (strcpy_s(option->bleOption.bleMac, BT_MAC_LEN, connInfo->bleInfo.bleMac) != EOK || + memcpy_s(option->bleOption.deviceIdHash, UDID_HASH_LEN, + connInfo->bleInfo.deviceIdHash, UDID_HASH_LEN) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy bleMac or deviceIdHash failed"); return SOFTBUS_ERR; } break; case CONNECT_TCP: { - if (strcpy_s(option->info.ipOption.ip, IP_LEN, connInfo->info.ipInfo.ip) != EOK) { + if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), connInfo->socketInfo.addr) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } - option->info.ipOption.port = connInfo->info.ipInfo.port; + option->socketOption.port = connInfo->socketInfo.port; break; } default: { @@ -172,15 +172,15 @@ int32_t ConvertAuthConnInfoToOption(const AuthConnInfo *info, ConnectOption *opt switch (info->type) { case AUTH_LINK_TYPE_WIFI: option->type = CONNECT_TCP; - if (strcpy_s(option->info.ipOption.ip, sizeof(option->info.ipOption.ip), info->info.ipInfo.ip) != EOK) { + if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), info->info.ipInfo.ip) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy ip failed."); return SOFTBUS_MEM_ERR; } - option->info.ipOption.port = info->info.ipInfo.port; + option->socketOption.port = info->info.ipInfo.port; break; case AUTH_LINK_TYPE_BR: option->type = CONNECT_BR; - if (strcpy_s(option->info.brOption.brMac, sizeof(option->info.brOption.brMac), + if (strcpy_s(option->brOption.brMac, sizeof(option->brOption.brMac), info->info.brInfo.brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy brMac failed."); return SOFTBUS_MEM_ERR; @@ -188,7 +188,7 @@ int32_t ConvertAuthConnInfoToOption(const AuthConnInfo *info, ConnectOption *opt break; case AUTH_LINK_TYPE_BLE: option->type = CONNECT_BLE; - if (strcpy_s(option->info.bleOption.bleMac, sizeof(option->info.bleOption.bleMac), + if (strcpy_s(option->bleOption.bleMac, sizeof(option->bleOption.bleMac), info->info.bleInfo.bleMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy bleMac failed."); return SOFTBUS_MEM_ERR; @@ -196,12 +196,12 @@ int32_t ConvertAuthConnInfoToOption(const AuthConnInfo *info, ConnectOption *opt break; case AUTH_LINK_TYPE_P2P: option->type = CONNECT_TCP; - if (strcpy_s(option->info.ipOption.ip, sizeof(option->info.ipOption.ip), info->info.ipInfo.ip) != EOK) { + if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), info->info.ipInfo.ip) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy ip failed."); return SOFTBUS_MEM_ERR; } - option->info.ipOption.port = info->info.ipInfo.port; - option->info.ipOption.moduleId = AUTH_P2P; + option->socketOption.port = info->info.ipInfo.port; + option->socketOption.moduleId = AUTH_P2P; break; default: SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "unsupport link type, type = %d.", info->type); @@ -218,16 +218,16 @@ int32_t ConvertOptionToAuthConnInfo(const ConnectOption *option, bool isAuthP2p, switch (option->type) { case CONNECT_TCP: info->type = isAuthP2p ? AUTH_LINK_TYPE_P2P : AUTH_LINK_TYPE_WIFI; - if (strcpy_s(info->info.ipInfo.ip, sizeof(info->info.ipInfo.ip), option->info.ipOption.ip) != EOK) { + if (strcpy_s(info->info.ipInfo.ip, sizeof(info->info.ipInfo.ip), option->socketOption.addr) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy ip failed."); return SOFTBUS_MEM_ERR; } - info->info.ipInfo.port = option->info.ipOption.port; + info->info.ipInfo.port = option->socketOption.port; break; case CONNECT_BR: info->type = AUTH_LINK_TYPE_BR; if (strcpy_s(info->info.brInfo.brMac, sizeof(info->info.brInfo.brMac), - option->info.brOption.brMac) != EOK) { + option->brOption.brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy brMac failed."); return SOFTBUS_MEM_ERR; } @@ -235,7 +235,7 @@ int32_t ConvertOptionToAuthConnInfo(const ConnectOption *option, bool isAuthP2p, case CONNECT_BLE: info->type = AUTH_LINK_TYPE_BLE; if (strcpy_s(info->info.bleInfo.bleMac, sizeof(info->info.bleInfo.bleMac), - option->info.bleOption.bleMac) != EOK) { + option->bleOption.bleMac) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "copy bleMac failed."); return SOFTBUS_MEM_ERR; } @@ -255,19 +255,19 @@ bool CompareConnectOption(const ConnectOption *option1, const ConnectOption *opt switch (option1->type) { case CONNECT_TCP: if (option2->type == CONNECT_TCP && - strcmp(option1->info.ipOption.ip, option2->info.ipOption.ip) == 0) { + strcmp(option1->socketOption.addr, option2->socketOption.addr) == 0) { return true; } break; case CONNECT_BR: if (option2->type == CONNECT_BR && - strcmp(option1->info.brOption.brMac, option2->info.brOption.brMac) == 0) { + strcmp(option1->brOption.brMac, option2->brOption.brMac) == 0) { return true; } break; case CONNECT_BLE: if (option2->type == CONNECT_BLE && - strcmp(option1->info.bleOption.bleMac, option2->info.bleOption.bleMac) == 0) { + strcmp(option1->bleOption.bleMac, option2->bleOption.bleMac) == 0) { return true; } break; diff --git a/core/authentication/src/auth_manager.c b/core/authentication/src/auth_manager.c index 3d7d22fbcf..7e8b9c11d7 100644 --- a/core/authentication/src/auth_manager.c +++ b/core/authentication/src/auth_manager.c @@ -309,21 +309,21 @@ static bool CheckConnectionInfo(const ConnectOption *option, const ConnectionInf switch (option->type) { case CONNECT_TCP: { if (info->type == CONNECT_TCP && - strcmp(option->info.ipOption.ip, info->info.ipInfo.ip) == 0) { + strcmp(option->socketOption.addr, info->socketInfo.addr) == 0) { return true; } break; } case CONNECT_BR: { if (info->type == CONNECT_BR && - strcmp(option->info.brOption.brMac, info->info.brInfo.brMac) == 0) { + strcmp(option->brOption.brMac, info->brInfo.brMac) == 0) { return true; } break; } case CONNECT_BLE: { if (info->type == CONNECT_BLE && - strcmp(option->info.bleOption.bleMac, info->info.bleInfo.bleMac) == 0) { + strcmp(option->bleOption.bleMac, info->bleInfo.bleMac) == 0) { return true; } break; @@ -1344,13 +1344,13 @@ int32_t CreateServerIpAuth(int32_t cfd, const char *ip, int32_t port) ConnectOption option; (void)memset_s(&option, sizeof(ConnectOption), 0, sizeof(ConnectOption)); option.type = CONNECT_TCP; - if (strncpy_s(option.info.ipOption.ip, IP_LEN, ip, strlen(ip))) { + if (strncpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), ip, strlen(ip))) { (void)SoftBusMutexUnlock(&g_authLock); SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strncpy_s failed"); SoftBusFree(auth); return SOFTBUS_ERR; } - option.info.ipOption.port = port; + option.socketOption.port = port; auth->option = option; ListNodeInsert(&g_authServerHead, &auth->node); (void)SoftBusMutexUnlock(&g_authLock); @@ -1626,8 +1626,8 @@ static int32_t AuthOpenWifiConn(const AuthConnInfo *info, uint32_t requestId, co if (!IsWiFiLink(item)) { continue; } - if (strncmp(item->option.info.ipOption.ip, info->info.ipInfo.ip, strlen(info->info.ipInfo.ip)) == 0 && - item->option.info.ipOption.port == info->info.ipInfo.port) { + if (strncmp(item->option.socketOption.addr, info->info.ipInfo.ip, strlen(info->info.ipInfo.ip)) == 0 && + item->option.socketOption.port == info->info.ipInfo.port) { authId = item->authId; (void)SoftBusMutexUnlock(&g_authLock); SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "open wifi conn succ, authId = %" PRId64 ".", item->authId); @@ -1639,8 +1639,8 @@ static int32_t AuthOpenWifiConn(const AuthConnInfo *info, uint32_t requestId, co if (!IsWiFiLink(item)) { continue; } - if (strncmp(item->option.info.ipOption.ip, info->info.ipInfo.ip, strlen(info->info.ipInfo.ip)) == 0 && - item->option.info.ipOption.port == info->info.ipInfo.port) { + if (strncmp(item->option.socketOption.addr, info->info.ipInfo.ip, strlen(info->info.ipInfo.ip)) == 0 && + item->option.socketOption.port == info->info.ipInfo.port) { authId = item->authId; (void)SoftBusMutexUnlock(&g_authLock); SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "open wifi conn succ, authId = %" PRId64 ".", item->authId); @@ -1763,7 +1763,7 @@ static bool IsNeedVerifyAgain(ConnectOption *option, uint32_t requestId, } (void)SoftBusMutexUnlock(&g_authLock); if (auth->option.type == CONNECT_BR) { - option->info.brOption.sideType = info.isServer ? CONN_SIDE_SERVER : CONN_SIDE_CLIENT; + option->brOption.sideType = info.isServer ? CONN_SIDE_SERVER : CONN_SIDE_CLIENT; } if (TryCreateConnection(option, requestId, callback) == SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "auth br/ble connection exist, no neeed verify again."); @@ -1820,13 +1820,14 @@ int32_t AuthStartListening(const AuthListennerInfo *info) switch (info->type) { case AUTH_LINK_TYPE_P2P: local.type = CONNECT_TCP; - if (strcpy_s(local.info.ipListenerInfo.ip, sizeof(local.info.ipListenerInfo.ip), + if (strcpy_s(local.socketOption.addr, sizeof(local.socketOption.addr), info->info.ipInfo.ip) != EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s ip failed"); return SOFTBUS_MEM_ERR; } - local.info.ipListenerInfo.port = info->info.ipInfo.port; - local.info.ipListenerInfo.moduleId = AUTH_P2P; + local.socketOption.port = info->info.ipInfo.port; + local.socketOption.moduleId = AUTH_P2P; + local.socketOption.protocol = LNN_PROTOCOL_IP; return ConnStartLocalListening(&local); default: SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "unsupport auth link type, type = %d.", info->type); @@ -1844,7 +1845,8 @@ int32_t AuthStopListening(const AuthListennerInfo *info) switch (info->type) { case AUTH_LINK_TYPE_P2P: local.type = CONNECT_TCP; - local.info.ipListenerInfo.moduleId = AUTH_P2P; + local.socketOption.moduleId = AUTH_P2P; + local.socketOption.protocol = LNN_PROTOCOL_IP; return ConnStopLocalListening(&local); default: SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "unsupport auth link type, type = %d.", info->type); diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index 1f38e1657e..c4e018eabc 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -39,7 +39,7 @@ int32_t AuthOpenTcpChannel(const ConnectOption *option, bool isNonBlock) SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth get local ip failed"); return SOFTBUS_ERR; } - int fd = OpenTcpClientSocket(option->info.ipOption.ip, localIp, option->info.ipOption.port, isNonBlock); + int fd = OpenTcpClientSocket(option->socketOption.addr, localIp, option->socketOption.port, isNonBlock); if (fd < 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth OpenTcpClientSocket failed"); return SOFTBUS_ERR; @@ -353,12 +353,23 @@ int32_t OpenAuthServer(void) SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth SetSoftbusBaseListener failed"); return AUTH_ERROR_CODE; } - char localIp[IP_MAX_LEN] = {0}; - if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, localIp, IP_MAX_LEN) != SOFTBUS_OK) { + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .moduleId = AUTH, + .port = 0, + .protocol = LNN_PROTOCOL_IP + } + }; + + if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, info.socketOption.addr, sizeof(info.socketOption.addr)) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth LnnGetLocalStrInfo failed"); return AUTH_ERROR_CODE; } - localPort = StartBaseListener(AUTH, localIp, 0, SERVER_MODE); + + localPort = StartBaseListener(AUTH, &info); if (localPort <= 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth StartBaseListener failed!"); return AUTH_ERROR_CODE; diff --git a/core/bus_center/lnn/lane_hub/heartbeat/src/lnn_heartbeat_fsm.c b/core/bus_center/lnn/lane_hub/heartbeat/src/lnn_heartbeat_fsm.c index 0cb3f7e728..0a0c08d228 100644 --- a/core/bus_center/lnn/lane_hub/heartbeat/src/lnn_heartbeat_fsm.c +++ b/core/bus_center/lnn/lane_hub/heartbeat/src/lnn_heartbeat_fsm.c @@ -532,7 +532,7 @@ static bool HbHasActiveBrConnection(const char *networkId) return false; } option.type = CONNECT_BR; - if (strcpy_s(option.info.brOption.brMac, BT_MAC_LEN, brMac) != EOK) { + if (strcpy_s(option.brOption.brMac, BT_MAC_LEN, brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "HB strcpy_s bt mac err"); return false; } @@ -558,7 +558,7 @@ static bool HbHasActiveBleConnection(const char *networkId) return false; } option.type = CONNECT_BLE; - if (memcpy_s(option.info.bleOption.deviceIdHash, UDID_HASH_LEN, udidHash, sizeof(udidHash)) != EOK) { + if (memcpy_s(option.bleOption.deviceIdHash, UDID_HASH_LEN, udidHash, sizeof(udidHash)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "HB memcpy_s udid hash err"); return false; } diff --git a/core/bus_center/lnn/net_buscenter/include/lnn_network_manager.h b/core/bus_center/lnn/net_buscenter/include/lnn_network_manager.h index b0b1614120..c6c200d925 100644 --- a/core/bus_center/lnn/net_buscenter/include/lnn_network_manager.h +++ b/core/bus_center/lnn/net_buscenter/include/lnn_network_manager.h @@ -21,6 +21,7 @@ #include "bus_center_info_key.h" #include "common_list.h" #include "softbus_bus_center.h" +#include "softbus_protocol_def.h" #ifdef __cplusplus #if __cplusplus @@ -30,13 +31,6 @@ extern "C" { #define LNN_LOOPBACK_IFNAME "lo" -// protocol ability -#define PROTOCOL_ABILITY_MESSAGE 0x1 -#define PROTOCOL_ABILITY_BYTES (0x1 << 1) -#define PROTOCOL_ABILITY_STREAM (0x1 << 2) -#define PROTOCOL_ABILITY_FILE (0x1 << 3) -typedef uint32_t LnnProtocolAbility; - // netif type #define LNN_NETIF_TYPE_ETH (0x1) #define LNN_NETIF_TYPE_WLAN (0x1 << 1) @@ -44,18 +38,6 @@ typedef uint32_t LnnProtocolAbility; #define LNN_NETIF_TYPE_BLE (0x1 << 3) typedef uint16_t LnnNetIfType; -// protocol type -#define LNN_PROTOCOL_BR (0x1) -#define LNN_PROTOCOL_BLE (1L << 1) -#define LNN_PROTOCOL_IP (1L << 2) -#define LNN_PROTOCOL_DFILE (1L << 3) -#define LNN_PROTOCOL_COAP (1L << 4) -#define LNN_PROTOCOL_DMSG (1L << 5) -#define LNN_PROTOCOL_VTP (1L << 6) -#define LNN_PROTOCOL_NIP (1L << 7) - -typedef uint32_t ProtocolType; - #define LNN_NETWORK_MAX_PROTOCOL_COUNT 3 typedef struct { @@ -79,8 +61,8 @@ typedef struct LnnProtocolManager { int32_t (*Enable)(struct LnnProtocolManager *self, LnnNetIfMgr *netifMgr); int32_t (*Disable)(struct LnnProtocolManager *self, LnnNetIfMgr *netifMgr); ProtocolType id; - const ProtocolType supportedNetif; - uint8_t pri; + LnnNetIfType supportedNetif; + uint16_t pri; } LnnProtocolManager; typedef VisitNextChoice (*VisitProtocolCallback)(const LnnProtocolManager *, void *); diff --git a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c index 2332c81078..3afeff45df 100644 --- a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c +++ b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c @@ -77,14 +77,21 @@ static void CloseAuthPort(void) static int32_t OpenSessionPort(void) { - char ipAddr[IP_LEN] = {0}; int32_t port; - - if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, ipAddr, IP_LEN) != SOFTBUS_OK) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = 0, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI + } + }; + if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, info.socketOption.addr, sizeof(info.socketOption.addr)) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "get local ip failed\n"); return SOFTBUS_ERR; } - port = TransTdcStartSessionListener(ipAddr, 0); + port = TransTdcStartSessionListener(DIRECT_CHANNEL_SERVER_WIFI, &info); if (port < 0) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "open session server failed\n"); return SOFTBUS_ERR; @@ -94,27 +101,29 @@ static int32_t OpenSessionPort(void) static void CloseSessionPort(void) { - TransTdcStopSessionListener(); + TransTdcStopSessionListener(DIRECT_CHANNEL_SERVER_WIFI); (void)LnnSetLocalNumInfo(NUM_KEY_SESSION_PORT, IP_DEFAULT_PORT); } static void OpenProxyPort(void) { - LocalListenerInfo listenerInfo = {0}; - char ipAddr[IP_LEN] = {0}; + LocalListenerInfo listenerInfo = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = 0, + .protocol = LNN_PROTOCOL_IP, + .moduleId = PROXY + } + }; int32_t port; - listenerInfo.type = CONNECT_TCP; - listenerInfo.info.ipListenerInfo.port = 0; - if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, ipAddr, IP_LEN) != SOFTBUS_OK) { + if (LnnGetLocalStrInfo( + STRING_KEY_WLAN_IP, listenerInfo.socketOption.addr, sizeof(listenerInfo.socketOption.addr)) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "get local ip failed\n"); return; } - if (strncpy_s(listenerInfo.info.ipListenerInfo.ip, IP_LEN, ipAddr, strlen(ipAddr)) != EOK) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy ip failed\n"); - return; - } - listenerInfo.info.ipListenerInfo.moduleId = PROXY; + port = ConnStartLocalListening(&listenerInfo); if (port < 0) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "open proxy server failed\n"); @@ -125,9 +134,15 @@ static void OpenProxyPort(void) static void CloseProxyPort(void) { - LocalListenerInfo listenerInfo = {0}; - listenerInfo.type = CONNECT_TCP; - listenerInfo.info.ipListenerInfo.moduleId = PROXY; + LocalListenerInfo listenerInfo = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = 0, + .protocol = LNN_PROTOCOL_IP, + .moduleId = PROXY + } + }; if (ConnStopLocalListening(&listenerInfo) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "ConnStopLocalListening fail!\n"); } diff --git a/core/bus_center/utils/src/lnn_connection_addr_utils.c b/core/bus_center/utils/src/lnn_connection_addr_utils.c index 6072beac9b..b621484df9 100644 --- a/core/bus_center/utils/src/lnn_connection_addr_utils.c +++ b/core/bus_center/utils/src/lnn_connection_addr_utils.c @@ -47,7 +47,7 @@ bool LnnConvertAddrToOption(const ConnectionAddr *addr, ConnectOption *option) } if (addr->type == CONNECTION_ADDR_BR) { option->type = CONNECT_BR; - if (strncpy_s(option->info.brOption.brMac, BT_MAC_LEN, addr->info.br.brMac, + if (strncpy_s(option->brOption.brMac, BT_MAC_LEN, addr->info.br.brMac, strlen(addr->info.br.brMac)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy br mac to addr fail"); return false; @@ -56,7 +56,7 @@ bool LnnConvertAddrToOption(const ConnectionAddr *addr, ConnectOption *option) } if (addr->type == CONNECTION_ADDR_BLE) { option->type = CONNECT_BLE; - if (strncpy_s(option->info.bleOption.bleMac, BT_MAC_LEN, addr->info.ble.bleMac, + if (strncpy_s(option->bleOption.bleMac, BT_MAC_LEN, addr->info.ble.bleMac, strlen(addr->info.ble.bleMac)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy ble mac to addr fail"); return false; @@ -65,12 +65,12 @@ bool LnnConvertAddrToOption(const ConnectionAddr *addr, ConnectOption *option) } if (addr->type == CONNECTION_ADDR_ETH || addr->type == CONNECTION_ADDR_WLAN) { option->type = CONNECT_TCP; - if (strncpy_s(option->info.ipOption.ip, IP_LEN, addr->info.ip.ip, + if (strncpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), addr->info.ip.ip, strlen(addr->info.ip.ip)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy ip to addr fail"); return false; } - option->info.ipOption.port = addr->info.ip.port; + option->socketOption.port = addr->info.ip.port; return true; } SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "not supported type: %d", addr->type); @@ -85,8 +85,8 @@ bool LnnConvertOptionToAddr(ConnectionAddr *addr, const ConnectOption *option, C } if (option->type == CONNECT_BR) { addr->type = CONNECTION_ADDR_BR; - if (strncpy_s(addr->info.br.brMac, BT_MAC_LEN, option->info.brOption.brMac, - strlen(option->info.brOption.brMac)) != EOK) { + if (strncpy_s(addr->info.br.brMac, BT_MAC_LEN, option->brOption.brMac, + strlen(option->brOption.brMac)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy br mac to addr fail"); return false; } @@ -94,8 +94,8 @@ bool LnnConvertOptionToAddr(ConnectionAddr *addr, const ConnectOption *option, C } if (option->type == CONNECT_BLE) { addr->type = CONNECTION_ADDR_BLE; - if (strncpy_s(addr->info.ble.bleMac, BT_MAC_LEN, option->info.bleOption.bleMac, - strlen(option->info.bleOption.bleMac)) != EOK) { + if (strncpy_s(addr->info.ble.bleMac, BT_MAC_LEN, option->bleOption.bleMac, + strlen(option->bleOption.bleMac)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy ble mac to addr fail"); return false; } @@ -103,12 +103,12 @@ bool LnnConvertOptionToAddr(ConnectionAddr *addr, const ConnectOption *option, C } if (option->type == CONNECT_TCP) { addr->type = hintType; - if (strncpy_s(addr->info.ip.ip, IP_LEN, option->info.ipOption.ip, - strlen(option->info.ipOption.ip)) != EOK) { + if (strncpy_s(addr->info.ip.ip, IP_LEN, option->socketOption.addr, + strlen(option->socketOption.addr)) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "copy ip to addr fail"); return false; } - addr->info.ip.port = (uint16_t)option->info.ipOption.port; + addr->info.ip.port = (uint16_t)option->socketOption.port; return true; } SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "not supported type: %d", option->type); diff --git a/core/common/include/softbus_def.h b/core/common/include/softbus_def.h index cb00a89b4e..a6ccae7468 100644 --- a/core/common/include/softbus_def.h +++ b/core/common/include/softbus_def.h @@ -50,6 +50,8 @@ extern "C" { #define SESSION_KEY_LENGTH 32 #define DEVICE_KEY_LEN 16 +#define MAX_SOCKET_ADDR_LEN 46 + #define MAX_SESSION_ID 16 #define MAX_SESSION_SERVER_NUMBER 8 diff --git a/core/connection/ble/src/softbus_ble_connection.c b/core/connection/ble/src/softbus_ble_connection.c index bc6606a634..ddc0513d92 100644 --- a/core/connection/ble/src/softbus_ble_connection.c +++ b/core/connection/ble/src/softbus_ble_connection.c @@ -212,7 +212,7 @@ static int32_t GetBleConnInfoByAddr(const char *strAddr, BleConnectionInfo **ser } LIST_FOR_EACH(item, &g_connection_list) { itemNode = LIST_ENTRY(item, BleConnectionInfo, node); - if (memcmp(itemNode->info.info.bleInfo.bleMac, strAddr, BT_MAC_LEN) == 0) { + if (memcmp(itemNode->info.bleInfo.bleMac, strAddr, BT_MAC_LEN) == 0) { if (itemNode->info.isServer) { *server = itemNode; findServer = true; @@ -242,7 +242,7 @@ static int32_t GetBleConnInfoByDeviceIdHash(const char *deviceIdHash, } LIST_FOR_EACH(item, &g_connection_list) { itemNode = LIST_ENTRY(item, BleConnectionInfo, node); - if (memcmp(itemNode->info.info.bleInfo.deviceIdHash, deviceIdHash, UDID_HASH_LEN) == 0) { + if (memcmp(itemNode->info.bleInfo.deviceIdHash, deviceIdHash, UDID_HASH_LEN) == 0) { if (itemNode->info.isServer) { *server = itemNode; findServer = true; @@ -267,7 +267,7 @@ static void BleDeviceConnected(const BleConnectionInfo *itemNode, uint32_t reque connectionInfo.isAvailable = 1; connectionInfo.isServer = itemNode->info.isServer; connectionInfo.type = CONNECT_BLE; - if (strcpy_s(connectionInfo.info.bleInfo.bleMac, BT_MAC_LEN, itemNode->info.info.bleInfo.bleMac) != EOK) { + if (strcpy_s(connectionInfo.bleInfo.bleMac, BT_MAC_LEN, itemNode->info.bleInfo.bleMac) != EOK) { return; } int connectionId = itemNode->connId; @@ -296,13 +296,13 @@ static int32_t BleConnectDeviceFristTime(const ConnectOption *option, uint32_t r newConnectionInfo->mtu = BLE_GATT_ATT_MTU_MAX; ListInit(&requestInfo->node); ListAdd(&newConnectionInfo->requestList, &requestInfo->node); - if (strcpy_s(newConnectionInfo->info.info.bleInfo.bleMac, BT_MAC_LEN, - option->info.bleOption.bleMac) != EOK) { + if (strcpy_s(newConnectionInfo->info.bleInfo.bleMac, BT_MAC_LEN, + option->bleOption.bleMac) != EOK) { ReleaseBleconnectionNode(newConnectionInfo); return SOFTBUS_ERR; } char tempBleMac[BT_MAC_LEN]; - if (strcpy_s(tempBleMac, BT_MAC_LEN, option->info.bleOption.bleMac) != EOK) { + if (strcpy_s(tempBleMac, BT_MAC_LEN, option->bleOption.bleMac) != EOK) { ReleaseBleconnectionNode(newConnectionInfo); return SOFTBUS_ERR; } @@ -346,7 +346,7 @@ static int32_t BleConnectDevice(const ConnectOption *option, uint32_t requestId, if (itemNode->info.isServer != BLE_CLIENT_TYPE) { continue; } - if (strcmp(itemNode->info.info.bleInfo.bleMac, option->info.bleOption.bleMac) == 0) { + if (strcmp(itemNode->info.bleInfo.bleMac, option->bleOption.bleMac) == 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "[state = %d]", itemNode->state); targetConnectionInfo = itemNode; if (itemNode->state == BLE_CONNECTION_STATE_BASIC_INFO_EXCHANGED) { @@ -679,7 +679,7 @@ static int32_t BleDisconnectDeviceNow(const ConnectOption *option) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "lock mutex failed"); return SOFTBUS_ERR; } - ret = GetBleConnInfoByAddr(option->info.bleOption.bleMac, &server, &client); + ret = GetBleConnInfoByAddr(option->bleOption.bleMac, &server, &client); if ((ret != SOFTBUS_OK) || ((server == NULL) && (client == NULL))) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BleDisconnectDevice GetBleConnInfo failed"); (void)SoftBusMutexUnlock(&g_connectionLock); @@ -743,7 +743,7 @@ static bool BleCheckActiveConnection(const ConnectOption *option) if (SoftBusMutexLock(&g_connectionLock) != 0) { return false; } - ret = GetBleConnInfoByDeviceIdHash(option->info.bleOption.deviceIdHash, &server, &client); + ret = GetBleConnInfoByDeviceIdHash(option->bleOption.deviceIdHash, &server, &client); if ((ret != SOFTBUS_OK) || (server == NULL && client == NULL)) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BleCheckActiveConnection no active conn"); (void)SoftBusMutexUnlock(&g_connectionLock); @@ -844,7 +844,7 @@ static void BleServerConnectCallback(int32_t halConnId, const char *bleStrMac, c (void)SoftBusMutexUnlock(&g_connectionLock); return; } - if (memcpy_s(newNode->info.info.bleInfo.bleMac, BT_MAC_LEN, bleStrMac, BT_MAC_LEN) != EOK) { + if (memcpy_s(newNode->info.bleInfo.bleMac, BT_MAC_LEN, bleStrMac, BT_MAC_LEN) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BleConnectCallback memcpy_s error"); SoftBusFree(newNode); (void)SoftBusMutexUnlock(&g_connectionLock); @@ -1023,7 +1023,7 @@ static int32_t PeerBasicInfoParse(BleConnectionInfo *connInfo, const char *value SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "PeerBasicInfoParse GenerateStrHash failed"); return SOFTBUS_ERR; } - if (memcpy_s(connInfo->info.info.bleInfo.deviceIdHash, UDID_HASH_LEN, udidHash, UDID_HASH_LEN) != EOK) { + if (memcpy_s(connInfo->info.bleInfo.deviceIdHash, UDID_HASH_LEN, udidHash, UDID_HASH_LEN) != EOK) { SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "PeerBasicInfoParse memcpy_s failed"); return SOFTBUS_ERR; } diff --git a/core/connection/br/src/br_connection.c b/core/connection/br/src/br_connection.c index c731dc07e8..6d0d262416 100644 --- a/core/connection/br/src/br_connection.c +++ b/core/connection/br/src/br_connection.c @@ -313,7 +313,7 @@ static int32_t NotifyServerConn(int connectionId, const char *mac, int32_t sideT connectionInfo.isAvailable = 1; connectionInfo.isServer = sideType; connectionInfo.type = CONNECT_BR; - if (strcpy_s(connectionInfo.info.brInfo.brMac, BT_MAC_LEN, mac) != EOK) { + if (strcpy_s(connectionInfo.brInfo.brMac, BT_MAC_LEN, mac) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "NotifyServerConn scpy error"); return SOFTBUS_ERR; } @@ -382,7 +382,7 @@ static void ConnectDeviceExit(uint32_t connId, uint32_t requestId, const Connect connectionInfo.isAvailable = 1; connectionInfo.isServer = connInfo->sideType; connectionInfo.type = CONNECT_BR; - if (strcpy_s(connectionInfo.info.brInfo.brMac, BT_MAC_LEN, connInfo->mac) != EOK) { + if (strcpy_s(connectionInfo.brInfo.brMac, BT_MAC_LEN, connInfo->mac) != EOK) { ReleaseConnectionRef(connInfo); return; } @@ -436,7 +436,7 @@ static int32_t ConnectDeviceFirstTime(const ConnectOption *option, uint32_t requ requestInfo->requestId = requestId; (void)memcpy_s(&requestInfo->callback, sizeof(requestInfo->callback), result, sizeof(*result)); ListAdd(&newConnInfo->requestList, &requestInfo->node); - if (strcpy_s(newConnInfo->mac, sizeof(newConnInfo->mac), option->info.brOption.brMac) != EOK) { + if (strcpy_s(newConnInfo->mac, sizeof(newConnInfo->mac), option->brOption.brMac) != EOK) { ReleaseBrconnectionNode(newConnInfo); return SOFTBUS_ERR; } diff --git a/core/connection/br/src/br_connection_manager.c b/core/connection/br/src/br_connection_manager.c index a519eab872..6186d95f71 100644 --- a/core/connection/br/src/br_connection_manager.c +++ b/core/connection/br/src/br_connection_manager.c @@ -264,7 +264,7 @@ int32_t GetConnectionInfo(uint32_t connectionId, ConnectionInfo *info) info->isAvailable = 1; info->isServer = itemNode->sideType; info->type = CONNECT_BR; - if (strcpy_s(info->info.brInfo.brMac, BT_MAC_LEN, itemNode->mac) != EOK) { + if (strcpy_s(info->brInfo.brMac, BT_MAC_LEN, itemNode->mac) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "GetConnInfo scpy error"); (void)pthread_mutex_unlock(&g_connectionLock); return SOFTBUS_BRCONNECTION_GETCONNINFO_ERROR; @@ -418,7 +418,7 @@ static int32_t InitConnectionInfo(ConnectionInfo *connectionInfo, const BrConnec (*connectionInfo).isAvailable = 0; (*connectionInfo).isServer = itemNode->sideType; (*connectionInfo).type = CONNECT_BR; - if (strcpy_s((*connectionInfo).info.brInfo.brMac, BT_MAC_LEN, itemNode->mac) != EOK) { + if (strcpy_s((*connectionInfo).brInfo.brMac, BT_MAC_LEN, itemNode->mac) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitConnInfo scpy error"); return SOFTBUS_BRCONNECTION_STRNCPY_ERROR; } @@ -471,7 +471,7 @@ bool HasDiffMacDeviceExit(const ConnectOption *option) LIST_FOR_EACH(item, &g_connection_list) { BrConnectionInfo *itemNode = LIST_ENTRY(item, BrConnectionInfo, node); if (itemNode->sideType == BR_CLIENT_TYPE) { - if (Strnicmp(itemNode->mac, option->info.brOption.brMac, sizeof(itemNode->mac)) != 0) { + if (Strnicmp(itemNode->mac, option->brOption.brMac, sizeof(itemNode->mac)) != 0) { res = true; break; } @@ -507,8 +507,8 @@ int32_t GetBrConnStateByConnOption(const ConnectOption *option, uint32_t *outCon ListNode *item = NULL; LIST_FOR_EACH(item, &g_connection_list) { BrConnectionInfo *itemNode = LIST_ENTRY(item, BrConnectionInfo, node); - if (IsTargetSideType(option->info.brOption.sideType, itemNode->sideType) && - Strnicmp(itemNode->mac, option->info.brOption.brMac, BT_MAC_LEN) == 0) { + if (IsTargetSideType(option->brOption.sideType, itemNode->sideType) && + Strnicmp(itemNode->mac, option->brOption.brMac, BT_MAC_LEN) == 0) { if (outConnId != NULL) { *outConnId = itemNode->connectionId; } @@ -557,7 +557,7 @@ int32_t BrClosingByConnOption(const ConnectOption *option, int32_t *socketFd, in BrConnectionInfo *itemNode = NULL; LIST_FOR_EACH(item, &g_connection_list) { itemNode = LIST_ENTRY(item, BrConnectionInfo, node); - if (Strnicmp(itemNode->mac, option->info.brOption.brMac, sizeof(itemNode->mac)) == 0) { + if (Strnicmp(itemNode->mac, option->brOption.brMac, sizeof(itemNode->mac)) == 0) { *socketFd = itemNode->socketFd; *sideType = itemNode->sideType; itemNode->state = BR_CONNECTION_STATE_CLOSING; @@ -587,7 +587,7 @@ bool BrCheckActiveConnection(const ConnectOption *option) } LIST_FOR_EACH(item, &g_connection_list) { itemNode = LIST_ENTRY(item, BrConnectionInfo, node); - if ((Strnicmp(itemNode->mac, option->info.brOption.brMac, sizeof(itemNode->mac)) == 0) && + if ((Strnicmp(itemNode->mac, option->brOption.brMac, sizeof(itemNode->mac)) == 0) && (itemNode->state == BR_CONNECTION_STATE_CONNECTED)) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "BrCheckActiveConnection true"); (void)pthread_mutex_unlock(&g_connectionLock); diff --git a/core/connection/common/conn_common.gni b/core/connection/common/conn_common.gni index 0c4c794c87..958b2bd2c9 100644 --- a/core/connection/common/conn_common.gni +++ b/core/connection/common/conn_common.gni @@ -15,6 +15,7 @@ import("//foundation/communication/dsoftbus/dsoftbus.gni") conn_common_src = [ "$dsoftbus_root_path/core/connection/common/src/softbus_base_listener.c", "$dsoftbus_root_path/core/connection/common/src/softbus_tcp_socket.c", + "$dsoftbus_root_path/core/connection/common/src/softbus_socket.c", "$dsoftbus_root_path/core/connection/common/src/softbus_thread_pool.c", "$dsoftbus_root_path/core/connection/common/src/softbus_datahead_transform.c", ] diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index 532b249e44..dbcc54becf 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -19,15 +19,17 @@ #include #include "common_list.h" +#include "softbus_adapter_errcode.h" #include "softbus_adapter_mem.h" #include "softbus_adapter_socket.h" #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_thread_pool.h" #include "softbus_utils.h" + #define MAX_LISTEN_EVENTS 1024 #define TIMEOUT 10000 #define DEFAULT_BACKLOG 4 @@ -52,7 +54,7 @@ typedef struct { typedef struct { ListNode node; int32_t listenFd; - char ip[IP_LEN]; + char addr[MAX_SOCKET_ADDR_LEN]; int32_t listenPort; int32_t fdCount; ModeType modeType; @@ -62,26 +64,200 @@ typedef struct { typedef struct { ListenerModule module; SoftbusBaseListener *listener; - SoftbusBaseListenerInfo *info; + SocketInterface *socketIf; + SoftbusBaseListenerInfo info; + uint32_t ref; SoftBusMutex lock; - bool lockInit; } SoftbusListenerNode; -typedef struct { - SoftBusMutex lock; - bool lockInit; -}SoftBusSetLock; +static SoftbusListenerNode *g_listenerList[UNUSE_BUTT] = {0}; +static SoftBusMutex g_listenerListLock; -static SoftbusListenerNode g_listenerList[UNUSE_BUTT] = {0}; static ThreadPool *g_threadPool = NULL; static SoftBusFdSet g_readSet; static SoftBusFdSet g_writeSet; static SoftBusFdSet g_exceptSet; static int32_t g_maxFd; -static SoftBusSetLock g_fdSetLock = { - .lockInit = false, -}; -static bool g_fdSetInit = false; +static SoftBusMutex g_fdSetLock; + +static void ResetBaseListener(SoftbusListenerNode* node); +static void UpdateMaxFd(void); +static void ClearListenerFdList(const ListNode *cfdList); +static void InitListenerInfo(SoftbusBaseListenerInfo *listenerInfo); + +static SoftbusListenerNode* RequestListenerNode(ListenerModule module) { + if (module >= UNUSE_BUTT) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); + return NULL; + } + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); + return NULL; + } + + SoftbusListenerNode *node = g_listenerList[module]; + do { + if(node != NULL) { + break; + } + ret = SoftBusMutexLock(&node->lock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock node failed!.", __func__); + SoftBusMutexUnlock(&node->lock); + break; + } + node->ref++; + SoftBusMutexUnlock(&node->lock); + }while(false); + + (void)SoftBusMutexUnlock(&g_listenerListLock); + return node; +} + +static void ResetBaseListener(SoftbusListenerNode* node) +{ + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + return; + } + if (node->info.listenFd >= 0) { + TcpShutDown(node->info.listenFd); + } + node->info.listenFd = -1; + node->info.listenPort = -1; + node->info.status = LISTENER_IDLE; + node->info.modeType = UNSET_MODE; + node->info.fdCount = 0; + ClearListenerFdList(&(node->info.node)); + SoftBusMutexUnlock(&node->lock); + UpdateMaxFd(); +} + +// Node: get g_listenerListLock first +static int32_t DoReleaseListener(ListenerModule module) +{ + SoftbusListenerNode *node = g_listenerList[module]; + int32_t ret = SoftBusMutexLock(&node->lock); + if (ret != SOFTBUS_OK) { + SoftBusMutexUnlock(&node->lock); + return ret; + } + node->ref--; + SoftBusMutexUnlock(&node->lock); + return SOFTBUS_OK; +} + +static void ReleaseListenerNode(SoftbusListenerNode *node) { + if(node == NULL || node->module >= UNUSE_BUTT) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); + return; + } + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); + return; + } + + ret = DoReleaseListener(node->module); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: release node failed!.", __func__); + } + (void)SoftBusMutexUnlock(&g_listenerListLock); +} + +// Node: get g_listenerListLock first +static int32_t CreateSpecifiedListenerModule(ListenerModule module) +{ + + SoftbusListenerNode *node = (SoftbusListenerNode *)SoftBusCalloc(sizeof(SoftbusListenerNode)); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:oom!", __func__); + return SOFTBUS_MALLOC_ERR; + } + + // init lock + SoftBusMutexAttr mutexAttr; + mutexAttr.type = SOFTBUS_MUTEX_RECURSIVE; + if (SoftBusMutexInit(&node->lock, &mutexAttr) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:init lock failed!", __func__); + SoftBusFree(node); + return SOFTBUS_LOCK_ERR; + } + InitListenerInfo(&node->info); + + node->module = module; + node->ref = 1; + + g_listenerList[module] = node; + return SOFTBUS_OK; +} + +static int32_t CreateStaticModules(void) { + for(uint32_t i = 0; i < LISTENER_MODULE_DYNAMIC_START; i++) { + int32_t ret = CreateSpecifiedListenerModule(i); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: create module %" PRIu32 " failed!ret=" PRId32, __func__, i, ret); + return ret; + } + } + return SOFTBUS_OK; +} + +int32_t InitBaseListener(void) +{ + int32_t ret = SoftBusMutexInit(&g_fdSetLock, NULL); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_fdSetLock init failed.ret=%" PRId32, ret); + return ret; + } + + ret = SoftBusMutexInit(&g_listenerListLock, NULL); + if ( ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_listenerListLock init failed.ret=%" PRId32, ret); + (void)SoftBusMutexDestroy(&g_fdSetLock); + return ret; + } + + g_threadPool = ThreadPoolInit(THREADPOOL_THREADNUM, THREADPOOL_QUEUE_NUM); + if (g_threadPool == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Init thread pool failed."); + (void)SoftBusMutexDestroy(&g_fdSetLock); + (void)SoftBusMutexDestroy(&g_listenerListLock); + return SOFTBUS_MALLOC_ERR; + } + + (void)memset_s(g_listenerList, sizeof(g_listenerList), 0, sizeof(g_listenerList)); + + SoftBusSocketFdZero(&g_readSet); + SoftBusSocketFdZero(&g_writeSet); + SoftBusSocketFdZero(&g_exceptSet); + + ret = CreateStaticModules(); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Create static listener module failed! ret=%" PRId32 , ret); + (void)ThreadPoolDestroy(g_threadPool); + (void)SoftBusMutexDestroy(&g_fdSetLock); + (void)SoftBusMutexDestroy(&g_listenerListLock); + return ret; + } + return SOFTBUS_OK; +} + +void DeinitBaseListener(void) +{ + // todo: ADD RELEASE here + int32_t ret = SOFTBUS_OK; + if(g_threadPool != NULL) { + ret = ThreadPoolDestroy(g_threadPool); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Destroy thread pool failed.ret=%" PRId32, ret); + } + } + + SoftBusMutexDestroy(&g_listenerListLock); + SoftBusMutexDestroy(&g_fdSetLock); +} static int32_t FdCopy(const SoftBusFdSet *dest, const SoftBusFdSet *src) { @@ -96,48 +272,41 @@ static int32_t MaxFd(int32_t fd1, int32_t fd2) static void UpdateMaxFd(void) { int32_t tmpMax = -1; + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if (ret != SOFTBUS_OK) + { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); + return; + } for (int i = 0; i < UNUSE_BUTT; i++) { - if (g_listenerList[i].info == NULL || g_listenerList[i].info->status != LISTENER_RUNNING) { + if (g_listenerList[i] == NULL) { continue; } - - if (SoftBusMutexLock(&g_listenerList[i].lock) != SOFTBUS_OK) { + if (SoftBusMutexLock(&g_listenerList[i]->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); continue; } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[i].info; - if (listenerInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listenerInfo is NULL"); - SoftBusMutexUnlock(&g_listenerList[i].lock); - continue; - } - - tmpMax = MaxFd(listenerInfo->listenFd, tmpMax); - FdNode *item = NULL; - FdNode *nextItem = NULL; - LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &listenerInfo->node, FdNode, node) { - tmpMax = MaxFd(item->fd, tmpMax); + if (g_listenerList[i]->info.status == LISTENER_RUNNING) { + tmpMax = MaxFd(g_listenerList[i]->info.listenFd, tmpMax); + FdNode *item = NULL; + FdNode *nextItem = NULL; + LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &g_listenerList[i]->info.node, FdNode, node) + { + tmpMax = MaxFd(item->fd, tmpMax); + } } - SoftBusMutexUnlock(&g_listenerList[i].lock); + (void)SoftBusMutexUnlock(&g_listenerList[i]->lock); } + (void)SoftBusMutexUnlock(&g_listenerListLock); - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return; } g_maxFd = tmpMax; - SoftBusMutexUnlock(&(g_fdSetLock.lock)); -} - -static int32_t CheckModule(ListenerModule module) -{ - if (module >= UNUSE_BUTT || module < PROXY) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); - return SOFTBUS_INVALID_PARAM; - } - return SOFTBUS_OK; + SoftBusMutexUnlock(&g_fdSetLock); } static int32_t CheckTrigger(TriggerType triggerType) @@ -153,7 +322,7 @@ static void ClearListenerFdList(const ListNode *cfdList) { FdNode *item = NULL; - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return; } @@ -165,142 +334,97 @@ static void ClearListenerFdList(const ListNode *cfdList) SoftBusSocketFdClr(item->fd, &g_exceptSet); SoftBusFree(item); } - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); } -static int32_t InitListenFd(ListenerModule module, const char *ip, int32_t port) +static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo *info) { - if (CheckModule(module) != SOFTBUS_OK || ip == NULL || port < 0) { + if(node == NULL || info == NULL || info->socketOption.port < 0) { return SOFTBUS_INVALID_PARAM; } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - return SOFTBUS_ERR; - } - int32_t rc = OpenTcpServerSocket(ip, port); - if (rc < 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpServer failed, rc=%d", rc); - return SOFTBUS_TCP_SOCKET_ERR; - } - listenerInfo->listenFd = rc; - rc = SoftBusSocketListen(listenerInfo->listenFd, DEFAULT_BACKLOG); - if (rc != 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listen failed, rc=%d", rc); - ResetBaseListener(module); - return SOFTBUS_TCP_SOCKET_ERR; - } - listenerInfo->fdCount = 1; - listenerInfo->listenPort = GetTcpSockPort(listenerInfo->listenFd); - if (memcpy_s(listenerInfo->ip, IP_LEN, ip, IP_LEN) != EOK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy ip failed"); - ResetBaseListener(module); - return SOFTBUS_MEM_ERR; - } - if (listenerInfo->listenPort < 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "GetSockPort failed, listenPort_=%d", listenerInfo->listenPort); - ResetBaseListener(module); - return SOFTBUS_ERR; - } - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - ResetBaseListener(module); - return SOFTBUS_ERR; + const SocketInterface* socketIf = GetSocketInterface(info->socketOption.protocol); + if(socketIf == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no such protocol(%d)", info->socketOption.protocol); + return SOFTBUS_INVALID_PARAM; } - SoftBusSocketFdSet(listenerInfo->listenFd, &g_readSet); - g_maxFd = MaxFd(listenerInfo->listenFd, g_maxFd); - SoftBusMutexUnlock(&(g_fdSetLock.lock)); - - return SOFTBUS_OK; -} -void ResetBaseListener(ListenerModule module) -{ - if (CheckModule(module) != SOFTBUS_OK) { - return; - } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - return; - } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - return; - } - if (listenerInfo->listenFd >= 0) { - TcpShutDown(listenerInfo->listenFd); - } - listenerInfo->listenFd = -1; - listenerInfo->listenPort = -1; - listenerInfo->status = LISTENER_IDLE; - listenerInfo->modeType = UNSET_MODE; - listenerInfo->fdCount = 0; - ClearListenerFdList(&listenerInfo->node); - SoftBusMutexUnlock(&g_listenerList[module].lock); - UpdateMaxFd(); -} + int32_t ret = SOFTBUS_OK; + do { + int32_t rc = socketIf->OpenServerSocket(info); + if (rc < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpServer failed, rc=%d", rc); + return SOFTBUS_TCP_SOCKET_ERR; + } + node->info.listenFd = rc; + rc = SoftBusSocketListen(node->info.listenFd, DEFAULT_BACKLOG); + if (rc != 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listen failed, rc=%d", rc); + ResetBaseListener(node); + ret = SOFTBUS_TCP_SOCKET_ERR; + break; + } + node->info.fdCount = 1; + node->info.listenPort = socketIf->GetSockPort(node->info.listenFd); + if (strcpy_s(node->info.addr, sizeof(node->info.addr), info->socketOption.addr) != EOK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy addr failed"); + ResetBaseListener(node); + ret = SOFTBUS_MEM_ERR; + break; + } + if (node->info.listenPort < 0) { + SoftBusLog( + SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "GetSockPort failed, listenPort_=%d", node->info.listenPort); + ResetBaseListener(node); + ret = SOFTBUS_ERR; + break; + } + } while (false); -void ResetBaseListenerSet(ListenerModule module) -{ - if (CheckModule(module) != SOFTBUS_OK) { - return; - } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - return; - } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - return; + ResetBaseListener(node); + return SOFTBUS_ERR; } - ClearListenerFdList(&listenerInfo->node); - listenerInfo->fdCount = 0; - SoftBusMutexUnlock(&g_listenerList[module].lock); - UpdateMaxFd(); + SoftBusSocketFdSet(node->info.listenFd, &g_readSet); + g_maxFd = MaxFd(node->info.listenFd, g_maxFd); + SoftBusMutexUnlock(&g_fdSetLock); + return ret; } -static int32_t OnEvent(ListenerModule module, int32_t fd, uint32_t events) +static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) { - if (CheckModule(module) != SOFTBUS_OK) { - return SOFTBUS_INVALID_PARAM; - } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "event lock failed"); return SOFTBUS_LOCK_ERR; } - if (g_listenerList[module].info == NULL || g_listenerList[module].listener == NULL) { + if (node->listener == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "info or listener is null"); - SoftBusMutexUnlock(&g_listenerList[module].lock); + SoftBusMutexUnlock(&node->lock); return SOFTBUS_ERR; } - int32_t listenFd = g_listenerList[module].info->listenFd; + int32_t listenFd = node->info.listenFd; SoftbusBaseListener listener = {0}; - listener.onConnectEvent = g_listenerList[module].listener->onConnectEvent; - listener.onDataEvent = g_listenerList[module].listener->onDataEvent; - SoftBusMutexUnlock(&g_listenerList[module].lock); + listener.onConnectEvent = node->listener->onConnectEvent; + listener.onDataEvent = node->listener->onDataEvent; + SoftBusMutexUnlock(&node->lock); if (fd == listenFd) { while (true) { - SoftBusSockAddrIn addr; - if (memset_s(&addr, sizeof(addr), 0, sizeof(addr)) != EOK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "memset failed"); - return SOFTBUS_ERR; + if (node->socketIf == NULL || node->socketIf->AcceptClient == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept func not found! module=%d", node->module); + break; } - uint32_t addrLen = sizeof(addr); int32_t cfd; - int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketAccept(fd, (SoftBusSockAddr *)&addr, - (int32_t *)&addrLen, &cfd)); + ConnectOption clientAddr = {0}; + int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(node->socketIf->AcceptClient(fd, &clientAddr, &cfd)); if (ret < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, - "accept failed, cfd=%d, module=%d, fd=%d", cfd, module, fd); + "accept failed, cfd=%d, module=%d, fd=%d", cfd, node->module, fd); break; } - char ip[IP_LEN] = {0}; - SoftBusInetNtoP(SOFTBUS_AF_INET, &addr.sinAddr, ip, sizeof(ip)); if (listener.onConnectEvent != NULL) { - listener.onConnectEvent(events, cfd, ip); + listener.onConnectEvent(node->module, events, cfd, &clientAddr); } else { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Please set onConnectEvent callback"); SoftBusSocketClose(cfd); @@ -308,7 +432,7 @@ static int32_t OnEvent(ListenerModule module, int32_t fd, uint32_t events) } } else { if (listener.onDataEvent != NULL) { - listener.onDataEvent(events, fd); + listener.onDataEvent(node->module ,events, fd); } else { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Please set onDataEvent callback"); } @@ -358,54 +482,67 @@ static int CreateFdArr(int32_t **fdArr, int32_t *fdArrLen, const ListNode *list) return SOFTBUS_OK; } +static void ProcessNodeData( + SoftbusListenerNode *node, SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusFdSet *exceptSet) +{ + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + return; + } + + if (node->info.status != LISTENER_RUNNING) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!", node->module); + SoftBusMutexUnlock(&node->lock); + return; + } + int32_t listenFd = node->info.listenFd; + int32_t *fdArr = NULL; + int32_t fdArrLen = 0; + + if (CreateFdArr(&fdArr, &fdArrLen, &node->info.node) != SOFTBUS_OK) { + SoftBusMutexUnlock(&node->lock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "CreateFdArr failed, module:%d", node->module); + return; + } + SoftBusMutexUnlock(&node->lock); + + if ((listenFd > 0) && SoftBusSocketFdIsset(listenFd, readSet)) { + OnEvent(node, listenFd, SOFTBUS_SOCKET_IN); + } + for (int j = 0; j < fdArrLen; j++) { + if (SoftBusSocketFdIsset(fdArr[j], readSet)) { + OnEvent(node, fdArr[j], SOFTBUS_SOCKET_IN); + } + if (SoftBusSocketFdIsset(fdArr[j], writeSet)) { + OnEvent(node, fdArr[j], SOFTBUS_SOCKET_OUT); + } + if (SoftBusSocketFdIsset(fdArr[j], exceptSet)) { + OnEvent(node, fdArr[j], SOFTBUS_SOCKET_EXCEPTION); + } + } + SoftBusFree(fdArr); +} + static void ProcessData(SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusFdSet *exceptSet) { for (int i = 0; i < UNUSE_BUTT; i++) { - if (g_listenerList[i].info == NULL) { + if (g_listenerList[i] == NULL) { continue; } - if (SoftBusMutexLock(&g_listenerList[i].lock) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + SoftbusListenerNode *node = RequestListenerNode(i); + if(node == NULL) { continue; } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[i].info; - if (listenerInfo == NULL || listenerInfo->status != LISTENER_RUNNING) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!", i); - SoftBusMutexUnlock(&g_listenerList[i].lock); - continue; - } - int32_t listenFd = listenerInfo->listenFd; - int32_t *fdArr = NULL; - int32_t fdArrLen = 0; - if (CreateFdArr(&fdArr, &fdArrLen, &listenerInfo->node) != SOFTBUS_OK) { - SoftBusMutexUnlock(&g_listenerList[i].lock); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "CreateFdArr failed, module:%d", i); - continue; - } - SoftBusMutexUnlock(&g_listenerList[i].lock); + ProcessNodeData(node, readSet, writeSet, exceptSet); - if ((listenFd > 0) && SoftBusSocketFdIsset(listenFd, readSet)) { - OnEvent((ListenerModule)i, listenFd, SOFTBUS_SOCKET_IN); - } - for (int j = 0; j < fdArrLen; j++) { - if (SoftBusSocketFdIsset(fdArr[j], readSet)) { - OnEvent((ListenerModule)i, fdArr[j], SOFTBUS_SOCKET_IN); - } - if (SoftBusSocketFdIsset(fdArr[j], writeSet)) { - OnEvent((ListenerModule)i, fdArr[j], SOFTBUS_SOCKET_OUT); - } - if (SoftBusSocketFdIsset(fdArr[j], exceptSet)) { - OnEvent((ListenerModule)i, fdArr[j], SOFTBUS_SOCKET_EXCEPTION); - } - } - SoftBusFree(fdArr); + ReleaseListenerNode(node); } } static int32_t SetSelect(SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusFdSet *exceptSet) { - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_ERR; } @@ -418,11 +555,11 @@ static int32_t SetSelect(SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusF if (FdCopy(exceptSet, &g_exceptSet) != EOK) { goto EXIT; } - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); return SOFTBUS_OK; EXIT: - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); SoftBusSocketFdZero(readSet); SoftBusSocketFdZero(writeSet); SoftBusSocketFdZero(exceptSet); @@ -468,10 +605,7 @@ static int32_t SelectThread(void) static int32_t StartThread(ListenerModule module, ModeType modeType) { - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - return SOFTBUS_ERR; - } + SoftbusBaseListenerInfo *listenerInfo = &g_listenerList[module]->info; listenerInfo->modeType = modeType; listenerInfo->status = LISTENER_RUNNING; @@ -479,67 +613,56 @@ static int32_t StartThread(ListenerModule module, ModeType modeType) NULL, PERSISTENT, (uintptr_t)0); } -static int32_t PrepareBaseListener(ListenerModule module, ModeType modeType) +static int32_t PrepareBaseListener(SoftbusListenerNode *node, ModeType modeType) { - if (CheckModule(module) != SOFTBUS_OK) { - return SOFTBUS_INVALID_PARAM; - } - - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - return SOFTBUS_ERR; - } - - if (g_threadPool == NULL) { - g_threadPool = ThreadPoolInit(THREADPOOL_THREADNUM, THREADPOOL_QUEUE_NUM); - if (g_threadPool == NULL) { - return SOFTBUS_MALLOC_ERR; - } - } - - int ret = StartThread(module, modeType); + int ret = StartThread(node->module, modeType); if (ret != SOFTBUS_OK && ret != SOFTBUS_ALREADY_EXISTED) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "StartThread failed"); return SOFTBUS_ERR; } - return SOFTBUS_OK; } -static SoftbusBaseListenerInfo *CreateNewListenerInfo(void) +static void InitListenerInfo(SoftbusBaseListenerInfo *listenerInfo) { - SoftbusBaseListenerInfo *listenerInfo = (SoftbusBaseListenerInfo *)SoftBusCalloc(sizeof(SoftbusBaseListenerInfo)); - if (listenerInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Malloc error"); - return NULL; - } listenerInfo->modeType = UNSET_MODE; listenerInfo->fdCount = 0; listenerInfo->listenFd = -1; listenerInfo->listenPort = -1; listenerInfo->status = LISTENER_IDLE; ListInit(&listenerInfo->node); +} - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { - SoftBusFree(listenerInfo); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "lock g_fdSetLock failed"); - return NULL; +uint32_t RequireListenerModule(void) +{ + uint32_t moduleId = CONN_INVALID_LISTENER_MODULE_ID; + if(SoftBusMutexLock(&g_listenerListLock) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + return CONN_INVALID_LISTENER_MODULE_ID; } - if (g_fdSetInit == false) { - SoftBusSocketFdZero(&g_readSet); - SoftBusSocketFdZero(&g_writeSet); - SoftBusSocketFdZero(&g_exceptSet); - g_fdSetInit = true; + + for (uint32_t i = 0; i < UNUSE_BUTT; i++) { + if (g_listenerList[i] != NULL) { + continue; + } + + int32_t ret = CreateSpecifiedListenerModule(i); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:create listener failed! ret=%" PRId32, __func__, ret); + break; + } + moduleId = i; + break; } - SoftBusMutexUnlock(&(g_fdSetLock.lock)); - return listenerInfo; + (void)SoftBusMutexUnlock(&g_listenerListLock); + return moduleId; } static int32_t AddTriggerToSet(int32_t fd, TriggerType triggerType) { int32_t ret = SOFTBUS_OK; - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_ERR; } @@ -562,7 +685,7 @@ static int32_t AddTriggerToSet(int32_t fd, TriggerType triggerType) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid trigger type"); break; } - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); return ret; } @@ -570,7 +693,7 @@ static int32_t AddTriggerToSet(int32_t fd, TriggerType triggerType) static int32_t DelTriggerFromSet(int32_t fd, TriggerType triggerType) { int32_t ret = SOFTBUS_OK; - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_ERR; } @@ -593,207 +716,239 @@ static int32_t DelTriggerFromSet(int32_t fd, TriggerType triggerType) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid trigger type"); break; } - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); return ret; } int32_t StartBaseClient(ListenerModule module) { - if (CheckModule(module) != SOFTBUS_OK) { + SoftbusListenerNode* node = RequestListenerNode(module); + if (node == NULL) { return SOFTBUS_INVALID_PARAM; } - - if (g_fdSetLock.lockInit == false) { - if (SoftBusMutexInit(&g_fdSetLock.lock, NULL) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_fdSetLock init failed."); - return SOFTBUS_ERR; - } - g_fdSetLock.lockInit = true; - } int32_t ret; - g_listenerList[module].module = module; - if (g_listenerList[module].listener == NULL || !g_listenerList[module].lockInit) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BaseListener not set, start failed."); - return SOFTBUS_ERR; - } - if (g_listenerList[module].info == NULL) { - g_listenerList[module].info = CreateNewListenerInfo(); - if (g_listenerList[module].info == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "malloc listenerInfo err"); - return SOFTBUS_MALLOC_ERR; + do { + if (node->listener == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BaseListener not set, start failed."); + ret = SOFTBUS_ERR; + break; } - } - if (g_listenerList[module].info->status != LISTENER_IDLE) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status."); - return SOFTBUS_ERR; - } - g_listenerList[module].info->status = LISTENER_PREPARED; - ret = PrepareBaseListener(module, CLIENT_MODE); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "StartBaseClient %s", - (ret == SOFTBUS_OK) ? "SUCCESS" : "FAILED"); + if (node->info.status != LISTENER_IDLE) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status."); + ret = SOFTBUS_ERR; + break; + } + node->info.status = LISTENER_PREPARED; + ret = PrepareBaseListener(node, CLIENT_MODE); + SoftBusLog( + SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "StartBaseClient %s", (ret == SOFTBUS_OK) ? "SUCCESS" : "FAILED"); + } while (false); + + ReleaseListenerNode(node); return ret; } -int32_t StartBaseListener(ListenerModule module, const char *ip, int32_t port, ModeType modeType) +int32_t StartBaseListener(ListenerModule module, const LocalListenerInfo *info) { - if (CheckModule(module) != SOFTBUS_OK || port < 0 || ip == NULL) { + if (info == NULL || info->socketOption.port < 0) { return SOFTBUS_INVALID_PARAM; } - - if (g_fdSetLock.lockInit == false) { - if (SoftBusMutexInit(&g_fdSetLock.lock, NULL) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_fdSetLock init failed."); - return SOFTBUS_ERR; - } - g_fdSetLock.lockInit = true; + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; } - int32_t ret; - - g_listenerList[module].module = module; - if (g_listenerList[module].listener == NULL || !g_listenerList[module].lockInit) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BaseListener not set, start failed."); - return SOFTBUS_ERR; - } - if (g_listenerList[module].info == NULL) { - g_listenerList[module].info = CreateNewListenerInfo(); - if (g_listenerList[module].info == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "malloc listenerInfo err"); - return SOFTBUS_MALLOC_ERR; + do { + if (node->listener == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BaseListener not set, start failed."); + ret = SOFTBUS_ERR; + break; } - } - if (g_listenerList[module].info->status != LISTENER_IDLE) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status."); - return SOFTBUS_ERR; - } - ret = InitListenFd(module, ip, port); - if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitListenFd failed"); - return ret; - } - g_listenerList[module].info->status = LISTENER_PREPARED; - ret = PrepareBaseListener(module, modeType); + if (node->info.status != LISTENER_IDLE) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status."); + ret = SOFTBUS_ERR; + break; + } + ret = InitListenFd(node, info); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitListenFd failed"); + break; + } + node->info.status = LISTENER_PREPARED; + ret = PrepareBaseListener(node, SERVER_MODE); + if (ret != SOFTBUS_OK) { + break; + } + } while (false); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "StartBaseListener success, fd = %d, module = %d", + node->info.listenPort, module); + int32_t port = node->info.listenPort; + ReleaseListenerNode(node); if (ret != SOFTBUS_OK) { return ret; } - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "StartBaseListener success, fd = %d, module = %d", - g_listenerList[module].info->listenPort, module); - - return g_listenerList[module].info->listenPort; + return port; } int32_t GetSoftbusBaseListener(ListenerModule module, SoftbusBaseListener *listener) { - if (CheckModule(module) != SOFTBUS_OK || listener == NULL) { + if (listener == NULL) { return SOFTBUS_INVALID_PARAM; } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; + } + + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerNode(node); return SOFTBUS_LOCK_ERR; } - if (g_listenerList[module].listener != NULL) { - if (memcpy_s(listener, sizeof(SoftbusBaseListener), g_listenerList[module].listener, + int32_t ret = SOFTBUS_OK; + do { + if (node->listener == NULL) { + ret = SOFTBUS_NOT_FIND; + break; + } + if (memcpy_s(listener, sizeof(SoftbusBaseListener), node->listener, sizeof(SoftbusBaseListener)) != EOK) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_MEM_ERR; + ret = SOFTBUS_MEM_ERR; + break; } - } else { - SoftBusFree(listener); - return SOFTBUS_ERR; - } - SoftBusMutexUnlock(&g_listenerList[module].lock); + }while(false); + (void)SoftBusMutexUnlock(&node->lock); + (void)ReleaseListenerNode(node); return SOFTBUS_OK; } int32_t SetSoftbusBaseListener(ListenerModule module, const SoftbusBaseListener *listener) { - if (CheckModule(module) != SOFTBUS_OK || listener == NULL || + if (listener == NULL || listener->onConnectEvent == NULL || listener->onDataEvent == NULL) { return SOFTBUS_INVALID_PARAM; } - if (!g_listenerList[module].lockInit) { - SoftBusMutexAttr mutexAttr; - mutexAttr.type = SOFTBUS_MUTEX_RECURSIVE; - if (SoftBusMutexInit(&g_listenerList[module].lock, &mutexAttr) != SOFTBUS_OK) { - return SOFTBUS_ERR; - } - g_listenerList[module].lockInit = true; + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "set listener lock failed"); + (void)ReleaseListenerNode(node); return SOFTBUS_LOCK_ERR; } - if (g_listenerList[module].listener == NULL) { - g_listenerList[module].listener = (SoftbusBaseListener *)SoftBusCalloc(sizeof(SoftbusBaseListener)); - if (g_listenerList[module].listener == NULL) { - (void)SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_MALLOC_ERR; + + int32_t ret = SOFTBUS_OK; + do { + if (node->listener == NULL) { + node->listener = (SoftbusBaseListener *)SoftBusCalloc(sizeof(SoftbusBaseListener)); + if (node->listener == NULL) { + ret = SOFTBUS_MALLOC_ERR; + break; + } } - } - if (memcpy_s(g_listenerList[module].listener, sizeof(SoftbusBaseListener), - listener, sizeof(SoftbusBaseListener)) != EOK) { - (void)SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_MEM_ERR; - } - (void)SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_OK; + if (memcpy_s(node->listener, sizeof(SoftbusBaseListener), listener, sizeof(SoftbusBaseListener)) != EOK) { + ret = SOFTBUS_MEM_ERR; + break; + } + } while (false); + (void)SoftBusMutexUnlock(&node->lock); + (void)ReleaseListenerNode(node); + return ret; } int32_t StopBaseListener(ListenerModule module) { - if (CheckModule(module) != SOFTBUS_OK) { - return SOFTBUS_INVALID_PARAM; + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerNode(node); return SOFTBUS_LOCK_ERR; } - SoftbusBaseListenerInfo *listenerInfo = g_listenerList[module].info; - if (listenerInfo == NULL) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_ERR; - } - if (listenerInfo->status != LISTENER_RUNNING) { - listenerInfo->status = LISTENER_IDLE; - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_OK; - } - listenerInfo->status = LISTENER_IDLE; - if (listenerInfo->listenFd > 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "del listen fd from readSet, fd = %d, module = %d.", - listenerInfo->listenFd, module); - DelTriggerFromSet(listenerInfo->listenFd, READ_TRIGGER); - TcpShutDown(listenerInfo->listenFd); - UpdateMaxFd(); - } - listenerInfo->listenFd = -1; - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_OK; + int32_t ret = SOFTBUS_OK; + do { + if (node->info.status != LISTENER_RUNNING) { + break; + } + if (node->info.listenFd > 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "del listen fd from readSet, fd = %d, module = %d.", + node->info.listenFd, module); + DelTriggerFromSet(node->info.listenFd, READ_TRIGGER); + TcpShutDown(node->info.listenFd); + UpdateMaxFd(); + } + node->info.listenFd = -1; + }while(false); + node->info.status = LISTENER_IDLE; + SoftBusMutexUnlock(&node->lock); + ReleaseListenerNode(node); + return ret; } void DestroyBaseListener(ListenerModule module) { - if (CheckModule(module) != SOFTBUS_OK) { + if(module >= UNUSE_BUTT) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); return; } - ResetBaseListener(module); - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32, __func__, module); + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); return; } - if (g_listenerList[module].info != NULL) { - SoftBusFree(g_listenerList[module].info); - g_listenerList[module].info = NULL; + + ret = DoReleaseListener(module); + if(ret != SOFTBUS_OK) { + (void) SoftBusMutexUnlock(&g_listenerListLock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:release listener failed!ret=%" PRId32, __func__, ret); + g_listenerList[module] = NULL; + return; } - if (g_listenerList[module].listener != NULL) { - SoftBusFree(g_listenerList[module].listener); - g_listenerList[module].listener = NULL; + + SoftbusListenerNode *node = g_listenerList[module]; + g_listenerList[module] = NULL; + + (void) SoftBusMutexUnlock(&g_listenerListLock); + + int32_t waitTime = 3000; + const int32_t waitInterval = 100; + while(waitTime > 0) { + ret = SoftBusMutexLock(&node->lock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + break; + } + + if(node->ref > 0) { + SoftBusSleepMs(waitInterval); + waitTime -= waitInterval; + SoftBusMutexUnlock(&node->lock); + continue; + } + + if (node->listener != NULL) { + SoftBusFree(node->listener); + node = NULL; + } + ResetBaseListener(node); + (void)SoftBusMutexUnlock(&node->lock); + (void)SoftBusMutexDestroy(&node->lock); + SoftBusFree(node); } - SoftBusMutexUnlock(&g_listenerList[module].lock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " success", __func__, module); } @@ -839,89 +994,108 @@ static void DelFdNode(SoftbusBaseListenerInfo *info, int32_t fd) int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) { - if (CheckModule(module) != SOFTBUS_OK || fd < 0 || CheckTrigger(triggerType) != SOFTBUS_OK) { + if (fd < 0 || CheckTrigger(triggerType) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid AddTrigger Param"); return SOFTBUS_INVALID_PARAM; } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - return SOFTBUS_LOCK_ERR; - } - SoftbusBaseListenerInfo *info = g_listenerList[module].info; - if (info == NULL || info->fdCount > MAX_LISTEN_EVENTS) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Cannot AddTrigger any more"); - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_ERR; + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; } - if (AddTriggerToSet(fd, triggerType) != SOFTBUS_OK) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_ERR; - } + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerNode(node); + return SOFTBUS_LOCK_ERR; + } + int32_t ret = SOFTBUS_OK; - if (CheckFdIsExist(info, fd)) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd exist"); - return SOFTBUS_OK; - } + do { + if (node->info.fdCount > MAX_LISTEN_EVENTS) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Cannot AddTrigger any more"); + ret = SOFTBUS_ERR; + break; + } - if (AddNewFdNode(info, fd) != SOFTBUS_OK) { - (void)DelTriggerFromSet(fd, triggerType); - SoftBusMutexUnlock(&g_listenerList[module].lock); - return SOFTBUS_ERR; - } - SoftBusMutexUnlock(&g_listenerList[module].lock); + ret = AddTriggerToSet(fd, triggerType); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, + "AddTrigger failed!ret=%" PRId32 " Module=%" PRIu32 "TriggerType=%d", ret, module, triggerType); + break; + } + + if (CheckFdIsExist(&node->info, fd)) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd exist"); + break; + } + + if (AddNewFdNode(&node->info, fd) != SOFTBUS_OK) { + (void)DelTriggerFromSet(fd, triggerType); + ret = SOFTBUS_ERR; + break; + } + } while (false); - if (SoftBusMutexLock(&(g_fdSetLock.lock)) != 0) { + SoftBusMutexUnlock(&node->lock); + ReleaseListenerNode(node); + + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_OK; } g_maxFd = MaxFd(fd, g_maxFd); - SoftBusMutexUnlock(&(g_fdSetLock.lock)); + SoftBusMutexUnlock(&g_fdSetLock); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "AddTrigger fd:%d success, current fdcount:%d, module:%d, triggerType:%d", - fd, info->fdCount, module, triggerType); + fd, node->info.fdCount, module, triggerType); return SOFTBUS_OK; } int32_t DelTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) { - if (CheckModule(module) != SOFTBUS_OK || fd < 0 || CheckTrigger(triggerType)) { + if (fd < 0 || CheckTrigger(triggerType)) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid AddTrigger Param"); return SOFTBUS_INVALID_PARAM; } - if (SoftBusMutexLock(&g_listenerList[module].lock) != SOFTBUS_OK) { + + SoftbusListenerNode *node = RequestListenerNode(module); + if (node == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); + return SOFTBUS_NOT_FIND; + } + + if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerNode(node); return SOFTBUS_LOCK_ERR; } - SoftbusBaseListenerInfo *info = g_listenerList[module].info; - if (info == NULL) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "DelTrigger base listener info is NULL"); - return SOFTBUS_ERR; - } - if (DelTriggerFromSet(fd, triggerType) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, - "del trigger fail: fd = %d, trigger = %d", fd, triggerType); - } + do { + if (DelTriggerFromSet(fd, triggerType) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "del trigger fail: fd = %d, trigger = %d", fd, triggerType); + } - if (SoftBusSocketFdIsset(fd, &g_writeSet) || SoftBusSocketFdIsset(fd, &g_readSet) || - SoftBusSocketFdIsset(fd, &g_exceptSet)) { - SoftBusMutexUnlock(&g_listenerList[module].lock); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, - "DelTrigger [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", - fd, info->fdCount, module, triggerType); - return SOFTBUS_OK; - } + if (SoftBusSocketFdIsset(fd, &g_writeSet) || SoftBusSocketFdIsset(fd, &g_readSet) || + SoftBusSocketFdIsset(fd, &g_exceptSet)) { + SoftBusMutexUnlock(&g_listenerList[module]->lock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, + "DelTrigger [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", fd, node->info.fdCount, module, + triggerType); + break; + } + + DelFdNode(&node->info, fd); + } while (false); - DelFdNode(info, fd); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "DelTrigger and node [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", - fd, info->fdCount, module, triggerType); - SoftBusMutexUnlock(&g_listenerList[module].lock); + fd, node->info.fdCount, module, triggerType); + + SoftBusMutexUnlock(&node->lock); + ReleaseListenerNode(node); UpdateMaxFd(); return SOFTBUS_OK; diff --git a/core/connection/common/src/softbus_socket.c b/core/connection/common/src/softbus_socket.c new file mode 100644 index 0000000000..c1d5c7f9b5 --- /dev/null +++ b/core/connection/common/src/softbus_socket.c @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "softbus_socket.h" + +#include +#include +#include + +#include "softbus_adapter_errcode.h" +#include "softbus_adapter_socket.h" +#include "softbus_errcode.h" +#include "softbus_log.h" + +#define MAX_SOCKET_TYPE 5 +#define SEND_BUF_SIZE 0x200000 // 2M +#define RECV_BUF_SIZE 0x100000 // 1M +#define USER_TIMEOUT_MS 500000 // 500000us + +static const SocketInterface *g_socketInterfaces[MAX_SOCKET_TYPE] = {0}; + +int32_t RegistSocketType(const SocketInterface *interface) +{ + if (interface == NULL || interface->GetSockPort == NULL || interface->OpenClientSocket == NULL || + interface->OpenServerSocket == NULL || interface->AcceptClient == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Bad socket interface!"); + return SOFTBUS_ERR; + } + for (uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { + if (g_socketInterfaces[i] == NULL) { + g_socketInterfaces[i] = interface; + return SOFTBUS_OK; + } + } + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "socket type list is full!"); + return SOFTBUS_ERR; +} + +void UnregistSocketType(const SocketInterface* interface) { + for(uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { + if(g_socketInterfaces[i] == interface) { + g_socketInterfaces[i] = NULL; + return; + } + } +} + +const SocketInterface *GetSocketInterface(ProtocolType protocolType) +{ + for (uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { + if (g_socketInterfaces[i] != NULL && g_socketInterfaces[i]->type == protocolType) { + return g_socketInterfaces[i]; + } + } + return NULL; +} + +static int WaitEvent(int fd, short events, int timeout) +{ + if (fd < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:%d:fd=%d invalid params", __func__, __LINE__, fd); + return -1; + } + SoftBusSockTimeOut tv = {0}; + tv.sec = 0; + tv.usec = timeout; + int rc = 0; + switch (events) { + case SOFTBUS_SOCKET_OUT: { + SoftBusFdSet writeSet; + SoftBusSocketFdZero(&writeSet); + SoftBusSocketFdSet(fd, &writeSet); + rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSelect(fd + 1, NULL, &writeSet, NULL, &tv)); + if (rc < 0) { + break; + } + if (!SoftBusSocketFdIsset(fd, &writeSet)) { + rc = 0; + } + break; + } + case SOFTBUS_SOCKET_IN: { + SoftBusFdSet readSet; + SoftBusSocketFdZero(&readSet); + SoftBusSocketFdSet(fd, &readSet); + rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSelect(fd + 1, &readSet, NULL, NULL, &tv)); + if (rc < 0) { + break; + } + if (!SoftBusSocketFdIsset(fd, &readSet)) { + rc = 0; + } + break; + } + default: + break; + } + return rc; +} +int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock) +{ + if (fd < 0) { + return SOFTBUS_INVALID_PARAM; + } + int32_t flags = fcntl(fd, F_GETFL, 0); + if (flags < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d,fcntl get flag failed, errno=%d", fd, errno); + return SOFTBUS_ERR; + } + if (isNonBlock && ((uint32_t)flags & O_NONBLOCK) == 0) { + flags = (int32_t)((uint32_t)flags | O_NONBLOCK); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d set to nonblock", fd); + } else if (!isNonBlock && ((uint32_t)flags & O_NONBLOCK) != 0) { + flags = (int32_t)((uint32_t)flags & ~O_NONBLOCK); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d set to block", fd); + } else { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d nonblock state is already ok", fd); + return SOFTBUS_OK; + } + return fcntl(fd, F_SETFL, flags); +} + +ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout) +{ + if (fd < 0 || buf == NULL || len == 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d invalid params", fd); + return -1; + } + + if (timeout == 0) { + timeout = USER_TIMEOUT_MS; + } + + int err = WaitEvent(fd, SOFTBUS_SOCKET_OUT, USER_TIMEOUT_MS); + if (err <= 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "wait event error %d", err); + return err; + } + ssize_t bytes = 0; + while (1) { + ssize_t rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSend(fd, &buf[bytes], len - bytes, 0)); + if (rc == SOFTBUS_ADAPTER_SOCKET_EAGAIN) { + continue; + } else if (rc <= 0) { + if (bytes == 0) { + bytes = -1; + } + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "tcp send fail %zd %d", rc, errno); + break; + } + bytes += rc; + if (bytes == (ssize_t)(len)) { + break; + } + + err = WaitEvent(fd, SOFTBUS_SOCKET_OUT, timeout); + if (err == 0) { + continue; + } else if (err < 0) { + if (bytes == 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "send data wait event fail %d", err); + bytes = err; + } + break; + } + } + return bytes; +} + +static ssize_t OnRecvData(int32_t fd, char *buf, size_t len, int timeout, int flags) +{ + if (fd < 0 || buf == NULL || len == 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd[%d] len[%zu] invalid params", fd, len); + return -1; + } + + if (timeout != 0) { + int err = WaitEvent(fd, SOFTBUS_SOCKET_IN, timeout); + if (err < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "recv data wait event err[%d]", err); + return err; + } + } + + ssize_t rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketRecv(fd, buf, len, flags)); + if (rc == SOFTBUS_ADAPTER_SOCKET_EAGAIN) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_WARN, "recv data socket EAGAIN"); + rc = 0; + } else if (rc <= 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "recv data fail errno[%d], rc[%d]", errno, rc); + rc = -1; + } + return rc; +} + +ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout) +{ + return OnRecvData(fd, buf, len, timeout, 0); +} + +void CloseTcpFd(int32_t fd) +{ + if (fd >= 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "close fd=%d", fd); + SoftBusSocketClose(fd); + } +} + +void TcpShutDown(int32_t fd) +{ + if (fd >= 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "shutdown fd=%d", fd); + SoftBusSocketShutDown(fd, SOFTBUS_SHUT_RDWR); + SoftBusSocketClose(fd); + } +} +int32_t ConnGetSocketError(int32_t fd) +{ + return SoftBusSocketGetError(fd); +} + diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index 770ed09d4f..f8da144bc6 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -22,6 +22,7 @@ #include "softbus_adapter_socket.h" #include "softbus_errcode.h" #include "softbus_log.h" +#include "softbus_socket.h" #define SEND_BUF_SIZE 0x200000 // 2M #define RECV_BUF_SIZE 0x100000 // 1M @@ -77,48 +78,6 @@ static void SetClientOption(int fd) #endif } -static int WaitEvent(int fd, short events, int timeout) -{ - if (fd < 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:%d:fd=%d invalid params", __func__, __LINE__, fd); - return -1; - } - SoftBusSockTimeOut tv = {0}; - tv.sec = 0; - tv.usec = timeout; - int rc = 0; - switch (events) { - case SOFTBUS_SOCKET_OUT: { - SoftBusFdSet writeSet; - SoftBusSocketFdZero(&writeSet); - SoftBusSocketFdSet(fd, &writeSet); - rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSelect(fd + 1, NULL, &writeSet, NULL, &tv)); - if (rc < 0) { - break; - } - if (!SoftBusSocketFdIsset(fd, &writeSet)) { - rc = 0; - } - break; - } - case SOFTBUS_SOCKET_IN: { - SoftBusFdSet readSet; - SoftBusSocketFdZero(&readSet); - SoftBusSocketFdSet(fd, &readSet); - rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSelect(fd + 1, &readSet, NULL, NULL, &tv)); - if (rc < 0) { - break; - } - if (!SoftBusSocketFdIsset(fd, &readSet)) { - rc = 0; - } - break; - } - default: - break; - } - return rc; -} static int BindLocalIP(int fd, const char *localIP, uint16_t port) { @@ -223,28 +182,7 @@ int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, return fd; } -int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock) -{ - if (fd < 0) { - return SOFTBUS_INVALID_PARAM; - } - int32_t flags = fcntl(fd, F_GETFL, 0); - if (flags < 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d,fcntl get flag failed, errno=%d", fd, errno); - return SOFTBUS_ERR; - } - if (isNonBlock && ((uint32_t)flags & O_NONBLOCK) == 0) { - flags = (int32_t)((uint32_t)flags | O_NONBLOCK); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d set to nonblock", fd); - } else if (!isNonBlock && ((uint32_t)flags & O_NONBLOCK) != 0) { - flags = (int32_t)((uint32_t)flags & ~O_NONBLOCK); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d set to block", fd); - } else { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "fd=%d nonblock state is already ok", fd); - return SOFTBUS_OK; - } - return fcntl(fd, F_SETFL, flags); -} + int32_t GetTcpSockPort(int32_t fd) { @@ -259,106 +197,6 @@ int32_t GetTcpSockPort(int32_t fd) return SoftBusNtoHs(addr.sinPort); } -ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout) -{ - if (fd < 0 || buf == NULL || len == 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d invalid params", fd); - return -1; - } - - if (timeout == 0) { - timeout = USER_TIMEOUT_MS; - } - - int err = WaitEvent(fd, SOFTBUS_SOCKET_OUT, USER_TIMEOUT_MS); - if (err <= 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "wait event error %d", err); - return err; - } - ssize_t bytes = 0; - while (1) { - ssize_t rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketSend(fd, &buf[bytes], len - bytes, 0)); - if (rc == SOFTBUS_ADAPTER_SOCKET_EAGAIN) { - continue; - } else if (rc <= 0) { - if (bytes == 0) { - bytes = -1; - } - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "tcp send fail %zd %d", rc, errno); - break; - } - bytes += rc; - if (bytes == (ssize_t)(len)) { - break; - } - - err = WaitEvent(fd, SOFTBUS_SOCKET_OUT, timeout); - if (err == 0) { - continue; - } else if (err < 0) { - if (bytes == 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "send data wait event fail %d", err); - bytes = err; - } - break; - } - } - return bytes; -} - -static ssize_t OnRecvData(int32_t fd, char *buf, size_t len, int timeout, int flags) -{ - if (fd < 0 || buf == NULL || len == 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd[%d] len[%zu] invalid params", fd, len); - return -1; - } - - if (timeout != 0) { - int err = WaitEvent(fd, SOFTBUS_SOCKET_IN, timeout); - if (err < 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "tcp recv data wait event err[%d]", err); - return err; - } - } - - ssize_t rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketRecv(fd, buf, len, flags)); - if (rc == SOFTBUS_ADAPTER_SOCKET_EAGAIN) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_WARN, "tcp recv data socket EAGAIN"); - rc = 0; - } else if (rc <= 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "tcp recv data fail errno[%d], rc[%d]", errno, rc); - rc = -1; - } - return rc; -} - -ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout) -{ - return OnRecvData(fd, buf, len, timeout, 0); -} - -void CloseTcpFd(int32_t fd) -{ - if (fd >= 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "close fd=%d", fd); - SoftBusSocketClose(fd); - } -} - -void TcpShutDown(int32_t fd) -{ - if (fd >= 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "shutdown fd=%d", fd); - SoftBusSocketShutDown(fd, SOFTBUS_SHUT_RDWR); - SoftBusSocketClose(fd); - } -} - -int32_t ConnGetSocketError(int32_t fd) -{ - return SoftBusSocketGetError(fd); -} - int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds) { #define KEEP_ALIVE_COUNT 5 diff --git a/core/connection/interface/softbus_base_listener.h b/core/connection/interface/softbus_base_listener.h index 392d11cdb0..107ffe28a6 100644 --- a/core/connection/interface/softbus_base_listener.h +++ b/core/connection/interface/softbus_base_listener.h @@ -17,6 +17,7 @@ #define SOFTBUS_BASE_LISTENER_H #include "common_list.h" +#include "softbus_conn_interface.h" #include "softbus_def.h" #include "softbus_utils.h" @@ -39,29 +40,23 @@ typedef enum { SERVER_MODE, } ModeType; -typedef enum { - PROXY = 0, - AUTH, - AUTH_P2P, - DIRECT_CHANNEL_SERVER_P2P, - DIRECT_CHANNEL_CLIENT, - DIRECT_CHANNEL_SERVER_WIFI, - UNUSE_BUTT, -} ListenerModule; - typedef struct { - int32_t (*onConnectEvent)(int32_t events, int32_t cfd, const char *ip); - int32_t (*onDataEvent)(int32_t events, int32_t fd); + int32_t (*onConnectEvent)(ListenerModule module, int32_t events, int32_t cfd, const ConnectOption *clientAddr); + int32_t (*onDataEvent)(ListenerModule module, int32_t events, int32_t fd); } SoftbusBaseListener; +int32_t InitBaseListener(void); +void DeinitBaseListener(void); + +uint32_t CreateListenerModule(void); +void DestroyBaseListener(ListenerModule module); + int32_t GetSoftbusBaseListener(ListenerModule module, SoftbusBaseListener *listener); int32_t SetSoftbusBaseListener(ListenerModule module, const SoftbusBaseListener *listener); + int32_t StartBaseClient(ListenerModule module); -int32_t StartBaseListener(ListenerModule module, const char *ip, int32_t port, ModeType modeType); +int32_t StartBaseListener(ListenerModule module, const LocalListenerInfo *info); int32_t StopBaseListener(ListenerModule module); -void ResetBaseListener(ListenerModule module); -void ResetBaseListenerSet(ListenerModule module); -void DestroyBaseListener(ListenerModule module); int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType); int32_t DelTrigger(ListenerModule module, int32_t fd, TriggerType triggerType); diff --git a/core/connection/interface/softbus_conn_interface.h b/core/connection/interface/softbus_conn_interface.h index 3355f18605..47912cdd43 100644 --- a/core/connection/interface/softbus_conn_interface.h +++ b/core/connection/interface/softbus_conn_interface.h @@ -18,6 +18,7 @@ #include #include "softbus_common.h" #include "softbus_def.h" +#include "softbus_protocol_def.h" #ifdef __cplusplus #if __cplusplus @@ -54,25 +55,46 @@ typedef enum { CONNECT_TYPE_MAX } ConnectType; +#define CONN_INVALID_LISTENER_MODULE_ID 0xffff +#define CONN_DYNAMIC_LISTENER_MODULE_COUNT 5 + +typedef enum { + PROXY = 0, + AUTH, + AUTH_P2P, + DIRECT_CHANNEL_SERVER_P2P, + DIRECT_CHANNEL_CLIENT, + DIRECT_CHANNEL_SERVER_WIFI, + + LISTENER_MODULE_DYNAMIC_START, + LISTENER_MODULE_DYNAMIC_END = LISTENER_MODULE_DYNAMIC_START + CONN_DYNAMIC_LISTENER_MODULE_COUNT, + UNUSE_BUTT, +} ListenerModule; + +struct BrInfo { + char brMac[BT_MAC_LEN]; +}; +struct BleInfo { + char bleMac[BT_MAC_LEN]; + char deviceIdHash[UDID_HASH_LEN]; +}; +struct SocketInfo { + char addr[MAX_SOCKET_ADDR_LEN]; + ProtocolType protocol; + int32_t port; + int32_t fd; + int32_t moduleId; /* For details, see {@link ListenerModule}. */ +}; + typedef struct { int32_t isAvailable; int32_t isServer; ConnectType type; union { - struct BrInfo { - char brMac[BT_MAC_LEN]; - } brInfo; - struct BleInfo { - char bleMac[BT_MAC_LEN]; - char deviceIdHash[UDID_HASH_LEN]; - } bleInfo; - struct IpInfo { - char ip[IP_LEN]; - int32_t port; - int32_t fd; - int32_t moduleId; /* For details, see {@link ListenerModule}. */ - } ipInfo; - } info; + struct BrInfo brInfo; + struct BleInfo bleInfo; + struct SocketInfo socketInfo; + }; } ConnectionInfo; typedef struct { @@ -108,34 +130,43 @@ typedef struct { void (*OnConnectFailed)(uint32_t requestId, int32_t reason); } ConnectResult; +struct BrOption { + char brMac[BT_MAC_LEN]; + ConnSideType sideType; +}; + +struct BleOption { + char bleMac[BT_MAC_LEN]; + char deviceIdHash[UDID_HASH_LEN]; +}; + +struct SocketOption { + char addr[MAX_SOCKET_ADDR_LEN]; + int32_t port; + int32_t moduleId; /* For details, see {@link ListenerModule}. */ +}; + typedef struct { ConnectType type; union { - struct BrOption { - char brMac[BT_MAC_LEN]; - ConnSideType sideType; - } brOption; - struct BleOption { - char bleMac[BT_MAC_LEN]; - char deviceIdHash[UDID_HASH_LEN]; - } bleOption; - struct IpOption { - char ip[IP_LEN]; - int32_t port; - int32_t moduleId; /* For details, see {@link ListenerModule}. */ - } ipOption; - } info; + struct BrOption brOption; + struct BleOption bleOption; + struct SocketOption socketOption; + }; } ConnectOption; +struct ListenerSocketOption { + char addr[MAX_SOCKET_ADDR_LEN]; + int32_t port; + ProtocolType protocol; + ListenerModule moduleId; /* For details, see {@link ListenerModule}. */ +}; + typedef struct { ConnectType type; union { - struct IpListenerInfo { - char ip[IP_LEN]; - int32_t port; - int32_t moduleId; /* For details, see {@link ListenerModule}. */ - } ipListenerInfo; - } info; + struct ListenerSocketOption socketOption; + }; } LocalListenerInfo; /** diff --git a/core/connection/interface/softbus_protocol_def.h b/core/connection/interface/softbus_protocol_def.h new file mode 100644 index 0000000000..f674a5d5e3 --- /dev/null +++ b/core/connection/interface/softbus_protocol_def.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef SOFTBUS_PROTOCOL_DEF_H +#define SOFTBUS_PROTOCOL_DEF_H + +#include + +// protocol ability +#define PROTOCOL_ABILITY_MESSAGE 0x1 +#define PROTOCOL_ABILITY_BYTES (0x1 << 1) +#define PROTOCOL_ABILITY_STREAM (0x1 << 2) +#define PROTOCOL_ABILITY_FILE (0x1 << 3) +typedef uint32_t LnnProtocolAbility; + +// protocol type +#define LNN_PROTOCOL_BR (0x1) +#define LNN_PROTOCOL_BLE (1L << 1) +#define LNN_PROTOCOL_IP (1L << 2) +#define LNN_PROTOCOL_DFILE (1L << 3) +#define LNN_PROTOCOL_COAP (1L << 4) +#define LNN_PROTOCOL_DMSG (1L << 5) +#define LNN_PROTOCOL_VTP (1L << 6) +#define LNN_PROTOCOL_NIP (1L << 7) +#define LNN_PROTOCOL_ALL ((uint64_t)-1) +typedef uint64_t ProtocolType; + +#define BIND_ADDR_NONE NULL +#define BIND_ADDR_ALL "0" + +#ifndef TEMP_FAILURE_RETRY +#define TEMP_FAILURE_RETRY(expression) \ +( \ + __extension__ \ + ( \ + { \ + long int __result; \ + do __result = (long int) (expression); \ + while (__result == SOFTBUS_ADAPTER_SOCKET_EINTR); \ + __result; \ + } \ + ) \ +) +#endif + + +#endif diff --git a/core/connection/interface/softbus_socket.h b/core/connection/interface/softbus_socket.h new file mode 100644 index 0000000000..63818782fe --- /dev/null +++ b/core/connection/interface/softbus_socket.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef SOFTBUS_SOCKET_H +#define SOFTBUS_SOCKET_H + +#include +#include + +#include "softbus_conn_interface.h" +#include "softbus_protocol_def.h" + +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif + +#ifndef SOFTBUS_TEMP_FAILURE_RETRY +#define SOFTBUS_TEMP_FAILURE_RETRY(expression) \ +( \ + __extension__ \ + ( \ + { \ + long int __result; \ + do __result = (long int) (expression); \ + while (__result == SOFTBUS_ADAPTER_SOCKET_EINTR); \ + __result; \ + } \ + ) \ +) +#endif + +enum { + SOFTBUS_SOCKET_OUT, // writable + SOFTBUS_SOCKET_IN, // readable + SOFTBUS_SOCKET_EXCEPTION, // exception +}; + +typedef struct SocketInterface { + const char* name; + const ProtocolType type; + int32_t (*GetSockPort)(int fd); + int (*OpenServerSocket)(const LocalListenerInfo *option); + int (*OpenClientSocket)(const ConnectOption *option, const char* bindAddr, bool isNonBlock); + int (*AcceptClient)(int fd, ConnectOption *clientAddr, int *cfd); +} SocketInterface; + +const SocketInterface* GetSocketInterface(ProtocolType protocolType); + +int32_t RegistSocketType(const SocketInterface* interface); +void UnregistSocketType(const SocketInterface* interface); + +ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout); +ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout); +void CloseTcpFd(int32_t fd); +void TcpShutDown(int32_t fd); +int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds); + +int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock); +int32_t ConnGetSocketErr(int32_t fd); + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +#endif diff --git a/core/connection/interface/softbus_tcp_socket.h b/core/connection/interface/softbus_tcp_socket.h index 3ee730a2b4..d012f2bb05 100644 --- a/core/connection/interface/softbus_tcp_socket.h +++ b/core/connection/interface/softbus_tcp_socket.h @@ -22,44 +22,20 @@ #include #include "softbus_adapter_errcode.h" +#include "softbus_socket.h" + #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif -#ifndef SOFTBUS_TEMP_FAILURE_RETRY -#define SOFTBUS_TEMP_FAILURE_RETRY(expression) \ -( \ - __extension__ \ - ( \ - { \ - long int __result; \ - do __result = (long int) (expression); \ - while (__result == SOFTBUS_ADAPTER_SOCKET_EINTR); \ - __result; \ - } \ - ) \ -) -#endif - -enum { - SOFTBUS_SOCKET_OUT, // writable - SOFTBUS_SOCKET_IN, // readable - SOFTBUS_SOCKET_EXCEPTION, // exception -}; - int32_t OpenTcpServerSocket(const char *ip, int32_t port); int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, bool isNonBlock); int32_t GetTcpSockPort(int32_t fd); -ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout); -ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout); -void CloseTcpFd(int32_t fd); -void TcpShutDown(int32_t fd); -int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds); + int32_t SetIpTos(int fd, uint32_t tos); -int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock); -int32_t ConnGetSocketErr(int32_t fd); + #ifdef __cplusplus #if __cplusplus diff --git a/core/connection/manager/softbus_conn_manager.c b/core/connection/manager/softbus_conn_manager.c index 6c668fee7b..d9e614b5f8 100644 --- a/core/connection/manager/softbus_conn_manager.c +++ b/core/connection/manager/softbus_conn_manager.c @@ -21,10 +21,11 @@ #include "common_list.h" #include "softbus_adapter_mem.h" #include "softbus_adapter_thread.h" +#include "softbus_base_listener.h" #include "softbus_ble_connection.h" #include "softbus_conn_interface.h" -#include "softbus_def.h" #include "softbus_datahead_transform.h" +#include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" @@ -445,6 +446,12 @@ int32_t ConnServerInit(void) return SOFTBUS_ERR; } + int32_t ret = InitBaseListener(); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitBaseListener failed!ret=%" PRId32 " \r\n", ret); + return ret; + } + g_connManagerCb.OnConnected = ConnManagerConnected; g_connManagerCb.OnDisconnected = ConnManagerDisconnected; g_connManagerCb.OnDataReceived = ConnManagerRecvData; @@ -501,6 +508,8 @@ void ConnServerDeinit(void) g_listenerList = NULL; } + DeinitBaseListener(); + g_isInited = false; } diff --git a/core/connection/p2p/manager/src/p2plink_manager.c b/core/connection/p2p/manager/src/p2plink_manager.c index fd730e5db2..4d6b14756e 100644 --- a/core/connection/p2p/manager/src/p2plink_manager.c +++ b/core/connection/p2p/manager/src/p2plink_manager.c @@ -39,6 +39,9 @@ #include "softbus_log.h" #define OPEN_AUTH_CHAN_DELAY 200 + +#define AUTH_P2P_KEEP_ALIVE_TIME 10 + typedef struct { int64_t authId; int32_t pid; diff --git a/core/connection/tcp/src/softbus_tcp_connect_manager.c b/core/connection/tcp/src/softbus_tcp_connect_manager.c index 08daed8479..eb6d9b1e5e 100644 --- a/core/connection/tcp/src/softbus_tcp_connect_manager.c +++ b/core/connection/tcp/src/softbus_tcp_connect_manager.c @@ -61,7 +61,6 @@ static void DelTcpConnInfo(uint32_t connectionId); static void DelAllConnInfo(ListenerModule moduleId); static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const char *ip); static int32_t TcpOnDataEvent(int32_t events, int32_t fd); -static SoftbusBaseListener *CheckTcpListener(ListenerModule moduleId); int32_t TcpGetConnNum(void) { @@ -113,8 +112,8 @@ static void DelTcpConnInfo(uint32_t connectionId) } LIST_FOR_EACH_ENTRY(item, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { if (item->connectionId == connectionId) { - (void)DelTrigger(item->info.info.ipInfo.moduleId, item->info.info.ipInfo.fd, RW_TRIGGER); - TcpShutDown(item->info.info.ipInfo.fd); + (void)DelTrigger(item->info.socketInfo.moduleId, item->info.socketInfo.fd, RW_TRIGGER); + TcpShutDown(item->info.socketInfo.fd); ListDelete(&item->node); g_tcpConnInfoList->cnt--; (void)SoftBusMutexUnlock(&g_tcpConnInfoList->lock); @@ -163,6 +162,16 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t if (cfd < 0 || ip == NULL) { return SOFTBUS_INVALID_PARAM; } + + if(module == AUTH_P2P) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "recv p2p conned %d", cfd); + if (ConnSetTcpKeepAlive(cfd, AUTH_P2P_KEEP_ALIVE_TIME) != 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "set keepalive fail"); + TcpShutDown(cfd); + return SOFTBUS_ERR; + } + } + TcpConnInfoNode *tcpConnInfoNode = (TcpConnInfoNode *)SoftBusCalloc(sizeof(TcpConnInfoNode)); if (tcpConnInfoNode == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OnConnectEvent malloc TcpConnInfoNode"); @@ -173,12 +182,12 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t tcpConnInfoNode->info.isAvailable = true; tcpConnInfoNode->info.isServer = true; tcpConnInfoNode->info.type = CONNECT_TCP; - if (strcpy_s(tcpConnInfoNode->info.info.ipInfo.ip, IP_LEN, ip) != EOK) { + if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), ip) != EOK) { goto EXIT; } - tcpConnInfoNode->info.info.ipInfo.port = GetTcpSockPort(cfd); - tcpConnInfoNode->info.info.ipInfo.fd = cfd; - tcpConnInfoNode->info.info.ipInfo.moduleId = module; + tcpConnInfoNode->info.socketInfo.port = GetTcpSockPort(cfd); + tcpConnInfoNode->info.socketInfo.fd = cfd; + tcpConnInfoNode->info.socketInfo.moduleId = module; if (AddTrigger(module, cfd, READ_TRIGGER) != SOFTBUS_OK) { goto EXIT; } @@ -239,7 +248,7 @@ static int32_t GetTcpInfoByFd(int32_t fd, TcpConnInfoNode *tcpInfo) TcpConnInfoNode *item = NULL; TcpConnInfoNode *next = NULL; LIST_FOR_EACH_ENTRY_SAFE(item, next, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { - if (item->info.info.ipInfo.fd == fd) { + if (item->info.socketInfo.fd == fd) { (void)memcpy_s(tcpInfo, sizeof(TcpConnInfoNode), item, sizeof(TcpConnInfoNode)); (void)SoftBusMutexUnlock(&g_tcpConnInfoList->lock); return SOFTBUS_OK; @@ -255,7 +264,7 @@ int32_t TcpOnDataEventOut(int32_t fd) (void)memset_s(&tcpInfo, sizeof(tcpInfo), 0, sizeof(tcpInfo)); if (GetTcpInfoByFd(fd, &tcpInfo) != SOFTBUS_OK) { - (void)DelTrigger(tcpInfo.info.info.ipInfo.moduleId, fd, WRITE_TRIGGER); + (void)DelTrigger(tcpInfo.info.socketInfo.moduleId, fd, WRITE_TRIGGER); TcpShutDown(fd); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "TcpOnDataEventSocketOut fail %d", fd); return SOFTBUS_ERR; @@ -264,15 +273,15 @@ int32_t TcpOnDataEventOut(int32_t fd) if (ret != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%d connect fail %d", fd, ret); tcpInfo.result.OnConnectFailed(tcpInfo.requestId, ret); - (void)DelTrigger(tcpInfo.info.info.ipInfo.moduleId, fd, WRITE_TRIGGER); + (void)DelTrigger(tcpInfo.info.socketInfo.moduleId, fd, WRITE_TRIGGER); TcpShutDown(fd); DelTcpConnNode(tcpInfo.connectionId); return SOFTBUS_OK; } SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "notfiy connect ok req %d", tcpInfo.requestId); tcpInfo.result.OnConnectSuccessed(tcpInfo.requestId, tcpInfo.connectionId, &tcpInfo.info); - (void)DelTrigger(tcpInfo.info.info.ipInfo.moduleId, fd, WRITE_TRIGGER); - (void)AddTrigger(tcpInfo.info.info.ipInfo.moduleId, fd, READ_TRIGGER); + (void)DelTrigger(tcpInfo.info.socketInfo.moduleId, fd, WRITE_TRIGGER); + (void)AddTrigger(tcpInfo.info.socketInfo.moduleId, fd, READ_TRIGGER); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "notfiy finish"); return SOFTBUS_OK; } @@ -329,10 +338,10 @@ static void DelAllConnInfo(ListenerModule moduleId) TcpConnInfoNode *item = NULL; TcpConnInfoNode *next = NULL; LIST_FOR_EACH_ENTRY_SAFE(item, next, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { - if (item->info.info.ipInfo.moduleId == (int32_t)moduleId) { - (void)DelTrigger(moduleId, item->info.info.ipInfo.fd, RW_TRIGGER); + if (item->info.socketInfo.moduleId == (int32_t)moduleId) { + (void)DelTrigger(moduleId, item->info.socketInfo.fd, RW_TRIGGER); ListDelete(&item->node); - TcpShutDown(item->info.info.ipInfo.fd); + TcpShutDown(item->info.socketInfo.fd); g_tcpConnCallback->OnDisconnected(item->connectionId, &item->info); SoftBusFree(item); g_tcpConnInfoList->cnt--; @@ -359,7 +368,7 @@ int32_t TcpConnectDeviceCheckArg(const ConnectOption *option, uint32_t requestId result->OnConnectSuccessed == NULL) { return SOFTBUS_ERR; } - if (option == NULL || option->type != CONNECT_TCP || CheckTcpListener(option->info.ipOption.moduleId) == NULL) { + if (option == NULL || option->type != CONNECT_TCP) { result->OnConnectFailed(requestId, SOFTBUS_INVALID_PARAM); return SOFTBUS_ERR; } @@ -372,7 +381,7 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const return SOFTBUS_INVALID_PARAM; } - int32_t fd = OpenTcpClientSocket(option->info.ipOption.ip, "0.0.0.0", (uint16_t)option->info.ipOption.port, false); + int32_t fd = OpenTcpClientSocket(option->socketOption.addr, "0.0.0.0", (uint16_t)option->socketOption.port, false); if (fd < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClient failed."); result->OnConnectFailed(requestId, SOFTBUS_ERR); @@ -386,7 +395,7 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const result->OnConnectFailed(requestId, SOFTBUS_MALLOC_ERR); return SOFTBUS_MALLOC_ERR; } - if (strcpy_s(tcpConnInfoNode->info.info.ipInfo.ip, IP_LEN, option->info.ipOption.ip) != EOK || + if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), option->socketOption.addr) != EOK || memcpy_s(&tcpConnInfoNode->result, sizeof(ConnectResult), result, sizeof(ConnectResult)) != EOK) { TcpShutDown(fd); SoftBusFree(tcpConnInfoNode); @@ -400,16 +409,16 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const tcpConnInfoNode->info.isAvailable = true; tcpConnInfoNode->info.isServer = false; tcpConnInfoNode->info.type = CONNECT_TCP; - tcpConnInfoNode->info.info.ipInfo.port = option->info.ipOption.port; - tcpConnInfoNode->info.info.ipInfo.fd = fd; - tcpConnInfoNode->info.info.ipInfo.moduleId = option->info.ipOption.moduleId; + tcpConnInfoNode->info.socketInfo.port = option->socketOption.port; + tcpConnInfoNode->info.socketInfo.fd = fd; + tcpConnInfoNode->info.socketInfo.moduleId = option->socketOption.moduleId; if (AddTcpConnInfo(tcpConnInfoNode) != SOFTBUS_OK) { TcpShutDown(fd); SoftBusFree(tcpConnInfoNode); result->OnConnectFailed(requestId, SOFTBUS_ERR); return SOFTBUS_ERR; } - if (AddTrigger(option->info.ipOption.moduleId, fd, WRITE_TRIGGER) != SOFTBUS_OK) { + if (AddTrigger(option->socketOption.moduleId, fd, WRITE_TRIGGER) != SOFTBUS_OK) { TcpShutDown(fd); DelTcpConnNode(connectionId); result->OnConnectFailed(requestId, SOFTBUS_ERR); @@ -441,9 +450,9 @@ int32_t TcpDisconnectDeviceNow(const ConnectOption *option) TcpConnInfoNode *item = NULL; TcpConnInfoNode *next = NULL; LIST_FOR_EACH_ENTRY_SAFE(item, next, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { - if (strcmp(option->info.ipOption.ip, item->info.info.ipInfo.ip) == 0) { - (void)DelTrigger(item->info.info.ipInfo.moduleId, item->info.info.ipInfo.fd, RW_TRIGGER); - TcpShutDown(item->info.info.ipInfo.fd); + if (strcmp(option->socketOption.addr, item->info.socketInfo.addr) == 0) { + (void)DelTrigger(item->info.socketInfo.moduleId, item->info.socketInfo.fd, RW_TRIGGER); + TcpShutDown(item->info.socketInfo.fd); ListDelete(&item->node); g_tcpConnInfoList->cnt--; g_tcpConnCallback->OnDisconnected(item->connectionId, &item->info); @@ -476,7 +485,7 @@ int32_t TcpPostBytes(uint32_t connectionId, const char *data, int32_t len, int32 } LIST_FOR_EACH_ENTRY(item, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { if (item->connectionId == connectionId) { - fd = item->info.info.ipInfo.fd; + fd = item->info.socketInfo.fd; break; } } @@ -524,7 +533,7 @@ int32_t TcpGetConnectionInfo(uint32_t connectionId, ConnectionInfo *info) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnectionId:%08x is not exists.", connectionId); return SOFTBUS_ERR; } - +#if 0 static int32_t OnProxyServerConnectEvent(int32_t events, int32_t cfd, const char *ip) { return TcpOnConnectEvent(PROXY, events, cfd, ip); @@ -569,23 +578,23 @@ static SoftbusBaseListener *CheckTcpListener(ListenerModule moduleId) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "unsupport ListenerModule, id = %d.", moduleId); return NULL; } +#endif int32_t TcpStartListening(const LocalListenerInfo *info) { - if (info == NULL || info->type != CONNECT_TCP) { + if (info == NULL || (info->type != CONNECT_TCP && info->type != CONNECT_P2P)) { return SOFTBUS_INVALID_PARAM; } - ListenerModule moduleId = info->info.ipListenerInfo.moduleId; - SoftbusBaseListener *listener = CheckTcpListener(moduleId); - if (listener == NULL) { - return SOFTBUS_INVALID_PARAM; - } - int32_t rc = SetSoftbusBaseListener(moduleId, listener); + static SoftbusBaseListener listener = { + .onConnectEvent = TcpOnConnectEvent, + .onDataEvent = TcpOnDataEvent + }; + int32_t rc = SetSoftbusBaseListener(info->socketOption.moduleId, &listener); if (rc != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Set BaseListener Failed."); return rc; } - return StartBaseListener(moduleId, info->info.ipListenerInfo.ip, info->info.ipListenerInfo.port, SERVER_MODE); + return StartBaseListener(info->socketOption.moduleId, info); } int32_t TcpStopListening(const LocalListenerInfo *info) @@ -594,11 +603,7 @@ int32_t TcpStopListening(const LocalListenerInfo *info) return SOFTBUS_INVALID_PARAM; } - ListenerModule moduleId = info->info.ipListenerInfo.moduleId; - if (CheckTcpListener(moduleId) == NULL) { - return SOFTBUS_INVALID_PARAM; - } - + ListenerModule moduleId = info->socketOption.moduleId; int32_t ret = StopBaseListener(moduleId); if (ret != SOFTBUS_OK) { return ret; diff --git a/core/frame/standard/init/src/softbus_server.cpp b/core/frame/standard/init/src/softbus_server.cpp index 5be4a91c8e..8453ceec77 100644 --- a/core/frame/standard/init/src/softbus_server.cpp +++ b/core/frame/standard/init/src/softbus_server.cpp @@ -132,18 +132,18 @@ int32_t SoftBusServer::OpenAuthSession(const char *sessionName, const Connection connOpt.type = ConvertConnectType(addrInfo->type); switch (connOpt.type) { case CONNECT_TCP: - if (memcpy_s(connOpt.info.ipOption.ip, IP_LEN, addrInfo->info.ip.ip, IP_LEN) != EOK) { + if (memcpy_s(connOpt.socketOption.addr, sizeof(connOpt.socketOption.addr), addrInfo->info.ip.ip, IP_LEN) != EOK) { return SOFTBUS_MEM_ERR; } - connOpt.info.ipOption.port = static_cast(addrInfo->info.ip.port); + connOpt.socketOption.port = static_cast(addrInfo->info.ip.port); break; case CONNECT_BLE: - if (memcpy_s(connOpt.info.bleOption.bleMac, BT_MAC_LEN, addrInfo->info.ble.bleMac, BT_MAC_LEN) != EOK) { + if (memcpy_s(connOpt.bleOption.bleMac, BT_MAC_LEN, addrInfo->info.ble.bleMac, BT_MAC_LEN) != EOK) { return SOFTBUS_MEM_ERR; } break; case CONNECT_BR: - if (memcpy_s(connOpt.info.brOption.brMac, BT_MAC_LEN, addrInfo->info.br.brMac, BT_MAC_LEN) != EOK) { + if (memcpy_s(connOpt.brOption.brMac, BT_MAC_LEN, addrInfo->info.br.brMac, BT_MAC_LEN) != EOK) { return SOFTBUS_MEM_ERR; } break; diff --git a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_message.c b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_message.c index 6baa5ef361..aa173b65e1 100644 --- a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_message.c +++ b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_message.c @@ -102,7 +102,7 @@ static int32_t GetConnectOptionByConnId(uint32_t connId, bool isBle, bool isAuth return SOFTBUS_ERR; } if (isBle && option->type == CONNECT_BR) { - if (GetRemoteUuidByBtMac(option->info.brOption.brMac, uuid, UUID_BUF_LEN) != SOFTBUS_OK) { + if (GetRemoteUuidByBtMac(option->brOption.brMac, uuid, UUID_BUF_LEN) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "get uuid by btmac fail"); return SOFTBUS_ERR; } diff --git a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c index 4efc5c56bd..349d0c5753 100644 --- a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c +++ b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c @@ -336,21 +336,21 @@ int32_t TransProxyGetConnectOption(uint32_t connectionId, ConnectOption *info) info->type = connInfo.type; switch (info->type) { case CONNECT_BR: { - (void)memcpy_s(info->info.brOption.brMac, sizeof(info->info.brOption.brMac), - connInfo.info.brInfo.brMac, sizeof(connInfo.info.brInfo.brMac)); + (void)memcpy_s(info->brOption.brMac, sizeof(info->brOption.brMac), + connInfo.brInfo.brMac, sizeof(connInfo.brInfo.brMac)); break; } case CONNECT_BLE: { - (void)memcpy_s(info->info.bleOption.bleMac, sizeof(info->info.bleOption.bleMac), - connInfo.info.bleInfo.bleMac, sizeof(connInfo.info.bleInfo.bleMac)); - (void)memcpy_s(info->info.bleOption.deviceIdHash, sizeof(info->info.bleOption.deviceIdHash), - connInfo.info.bleInfo.deviceIdHash, sizeof(connInfo.info.bleInfo.deviceIdHash)); + (void)memcpy_s(info->bleOption.bleMac, sizeof(info->bleOption.bleMac), + connInfo.bleInfo.bleMac, sizeof(connInfo.bleInfo.bleMac)); + (void)memcpy_s(info->bleOption.deviceIdHash, sizeof(info->bleOption.deviceIdHash), + connInfo.bleInfo.deviceIdHash, sizeof(connInfo.bleInfo.deviceIdHash)); break; } case CONNECT_TCP: { - (void)memcpy_s(info->info.ipOption.ip, sizeof(info->info.ipOption.ip), - connInfo.info.ipInfo.ip, sizeof(connInfo.info.ipInfo.ip)); - info->info.ipOption.port = connInfo.info.ipInfo.port; + (void)memcpy_s(info->socketOption.addr, sizeof(info->socketOption.addr), + connInfo.socketInfo.addr, sizeof(connInfo.socketInfo.addr)); + info->socketOption.port = connInfo.socketInfo.port; break; } default: { @@ -413,7 +413,7 @@ int32_t TransAddConnItem(ProxyConnInfo *chan) } LIST_FOR_EACH_ENTRY_SAFE(item, tmpItem, &g_proxyConnectionList->list, ProxyConnInfo, node) { - if (strcmp(item->connInfo.info.brOption.brMac, chan->connInfo.info.brOption.brMac) == 0) { + if (strcmp(item->connInfo.brOption.brMac, chan->connInfo.brOption.brMac) == 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "conn ref = %d", item->ref); (void)SoftBusMutexUnlock(&g_proxyConnectionList->lock); if (item->state == PROXY_CHANNEL_STATUS_PYH_CONNECTED) { @@ -504,20 +504,20 @@ static int32_t TransGetConn(const ConnectOption *connInfo, ProxyConnInfo *proxyC } switch (connInfo->type) { case CONNECT_TCP: { - if (strcmp(connInfo->info.ipOption.ip, item->connInfo.info.ipOption.ip) == 0 && - connInfo->info.ipOption.port == item->connInfo.info.ipOption.port) { + if (strcmp(connInfo->socketOption.addr, item->connInfo.socketOption.addr) == 0 && + connInfo->socketOption.port == item->connInfo.socketOption.port) { find = true; } break; } case CONNECT_BR: { - if (strcmp(connInfo->info.brOption.brMac, item->connInfo.info.brOption.brMac) == 0) { + if (strcmp(connInfo->brOption.brMac, item->connInfo.brOption.brMac) == 0) { find = true; } break; } case CONNECT_BLE: - if (strcmp(connInfo->info.bleOption.bleMac, item->connInfo.info.bleOption.bleMac) == 0) { + if (strcmp(connInfo->bleOption.bleMac, item->connInfo.bleOption.bleMac) == 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "strcpy error"); find = true; } @@ -682,7 +682,7 @@ int32_t TransProxyOpenConnChannel(const AppInfo *appInfo, const ConnectOption *c } result.OnConnectFailed = TransOnConnectFailed; result.OnConnectSuccessed = TransOnConnectSuccessed; - connChan->connInfo.info.ipOption.moduleId = PROXY; + connChan->connInfo.socketOption.moduleId = PROXY; ret = ConnConnectDevice(&(connChan->connInfo), reqId, &result); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "connect device err"); diff --git a/core/transmission/trans_channel/tcp_direct/include/trans_tcp_direct_listener.h b/core/transmission/trans_channel/tcp_direct/include/trans_tcp_direct_listener.h index d302577372..a096629a69 100644 --- a/core/transmission/trans_channel/tcp_direct/include/trans_tcp_direct_listener.h +++ b/core/transmission/trans_channel/tcp_direct/include/trans_tcp_direct_listener.h @@ -21,11 +21,9 @@ extern "C" { #endif -int32_t TransTdcStartSessionListener(const char *ip, const int port); +int32_t TransTdcStartSessionListener(ListenerModule module, const LocalListenerInfo *info); -int32_t TransTdcStopSessionListener(void); - -int32_t GetTdcBaseListener(SoftbusBaseListener *listener); +int32_t TransTdcStopSessionListener(ListenerModule module); #ifdef __cplusplus } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c index d1fb685202..a9305a8a3f 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c @@ -32,8 +32,6 @@ #include "trans_tcp_direct_message.h" #include "trans_tcp_direct_sessionconn.h" -static SoftbusBaseListener g_sessionListener; - uint32_t SwitchAuthLinkTypeToFlagType(AuthLinkType type) { switch (type) { @@ -204,8 +202,9 @@ static void TransProcDataRes(ListenerModule module, int32_t ret, int32_t channel TransSrvDelDataBufNode(channelId); } -static int32_t OnDataEvent(int events, int fd) +static int32_t OnDataEvent(ListenerModule module, int events, int fd) { + (void)module; SessionConn *conn = SoftBusCalloc(sizeof(SessionConn)); if (conn == NULL) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OnDataEvent malloc fail."); @@ -255,7 +254,7 @@ static int32_t OnDataEvent(int events, int fd) SoftBusFree(conn); return ret; } - +#if 0 static int32_t OnConnectEventWifi(int32_t events, int32_t cfd, const char *ip) { return OnConnectEvent(DIRECT_CHANNEL_SERVER_WIFI, events, cfd, ip); @@ -275,40 +274,33 @@ static int32_t OnDataEventP2P(int32_t events, int32_t fd) { return OnDataEvent(events, fd); } +#endif -int32_t TransTdcStartSessionListener(const char *ip, const int port) +int32_t TransTdcStartSessionListener(ListenerModule module, const LocalListenerInfo *info) { - if (ip == NULL || port < 0) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "Invalid para."); + if (info == NULL || (info->type != CONNECT_TCP && info->type != CONNECT_P2P) || info->socketOption.port < 0) { + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:Invalid para.", __func__); return SOFTBUS_INVALID_PARAM; } - g_sessionListener.onConnectEvent = OnConnectEventWifi; - g_sessionListener.onDataEvent = OnDataEventWifi; + static SoftbusBaseListener g_sessionListener = { + .onConnectEvent = OnConnectEvent, + .onDataEvent = OnDataEvent + }; - int32_t ret = SetSoftbusBaseListener(DIRECT_CHANNEL_SERVER_WIFI, &g_sessionListener); + int32_t ret = SetSoftbusBaseListener(module, &g_sessionListener); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "Set BaseListener Failed."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:Set BaseListener Failed.", __func__); return ret; } - int serverPort = StartBaseListener(DIRECT_CHANNEL_SERVER_WIFI, ip, port, SERVER_MODE); + int serverPort = StartBaseListener(module, info); return serverPort; } -int32_t TransTdcStopSessionListener(void) +int32_t TransTdcStopSessionListener(ListenerModule module) { TransTdcStopSessionProc(); - int32_t ret = StopBaseListener(DIRECT_CHANNEL_SERVER_WIFI); - DestroyBaseListener(DIRECT_CHANNEL_SERVER_WIFI); + int32_t ret = StopBaseListener(module); + DestroyBaseListener(module); return ret; } - -int32_t GetTdcBaseListener(SoftbusBaseListener *listener) -{ - if (listener == NULL) { - return SOFTBUS_INVALID_PARAM; - } - listener->onConnectEvent = OnConnectEventP2P; - listener->onDataEvent = OnDataEventP2P; - return SOFTBUS_OK; -} \ No newline at end of file diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c index 7a7e490420..96ea017562 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c @@ -167,8 +167,8 @@ void TransTdcDeathCallback(const char *pkgName) static int32_t TransUpdAppInfo(AppInfo *appInfo, const ConnectOption *connInfo) { - appInfo->peerData.port = connInfo->info.ipOption.port; - if (strcpy_s(appInfo->peerData.ip, IP_LEN, connInfo->info.ipOption.ip) != EOK) { + appInfo->peerData.port = connInfo->socketOption.port; + if (strcpy_s(appInfo->peerData.ip, IP_LEN, connInfo->socketOption.addr) != EOK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "TransUpdAppInfo cpy fail"); return SOFTBUS_MEM_ERR; } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c index d1472f06ce..e88778e9b3 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c @@ -219,14 +219,14 @@ static int32_t GetAuthConnectOption(int32_t channelId, uint32_t cipherFlag, Conn SoftBusFree(conn); return SOFTBUS_OK; } - if (strcpy_s(option->info.ipOption.ip, IP_LEN, conn->appInfo.peerData.ip) != 0) { + if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), conn->appInfo.peerData.ip) != 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "strcpy_s peer ip err"); SoftBusFree(conn); return SOFTBUS_ERR; } option->type = CONNECT_TCP; - option->info.ipOption.port = conn->appInfo.peerData.port; + option->socketOption.port = conn->appInfo.peerData.port; SoftBusFree(conn); return SOFTBUS_OK; } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c index 8e9df123d1..3a1ccae535 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c @@ -36,18 +36,23 @@ static char g_p2pSessionIp[IP_LEN] = {0}; static int32_t StartNewP2pListener(const char *ip, int32_t *port) { - SoftbusBaseListener listener = {0}; - int32_t ret; int32_t listenerPort; - GetTdcBaseListener(&listener); - ret = SetSoftbusBaseListener(DIRECT_CHANNEL_SERVER_P2P, &listener); - if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "StartNewP2pListener set listener fail"); - return ret; + LocalListenerInfo info = { + .type = CONNECT_P2P, + .socketOption = { + .addr = "", + .port = *port, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_SERVER_P2P + } + }; + if(strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), ip)!= EOK) { + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:copy addr failed!", __func__); + return SOFTBUS_ERR; } - listenerPort = StartBaseListener(DIRECT_CHANNEL_SERVER_P2P, ip, *port, SERVER_MODE); + listenerPort = TransTdcStartSessionListener(DIRECT_CHANNEL_SERVER_P2P, &info); if (listenerPort < 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "StartNewP2pListener start listener fail"); return SOFTBUS_ERR; diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c index 2fccc633e7..fd477bdd5a 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c @@ -51,7 +51,7 @@ int32_t OpenTcpDirectChannel(const AppInfo *appInfo, const ConnectOption *connIn int32_t newchannelId = newConn->channelId; (void)memcpy_s(&newConn->appInfo, sizeof(AppInfo), appInfo, sizeof(AppInfo)); - int32_t fd = OpenConnTcp(connInfo->info.ipOption.ip, connInfo->info.ipOption.port); + int32_t fd = OpenConnTcp(connInfo->socketOption.addr, connInfo->socketOption.port); if (fd < 0) { SoftBusFree(newConn); SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpDirectChannel connect fail"); diff --git a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c index 2c8a2c0114..d953f32131 100644 --- a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c +++ b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c @@ -608,8 +608,8 @@ static int32_t OpenAuthConnForUdpNegotiation(UdpChannelInfo *channel) static int32_t PrepareAppInfoForUdpOpen(const ConnectOption *connOpt, AppInfo *appInfo, int32_t *channelId) { - appInfo->peerData.port = connOpt->info.ipOption.port; - if (strcpy_s(appInfo->peerData.ip, IP_LEN, connOpt->info.ipOption.ip) != EOK) { + appInfo->peerData.port = connOpt->socketOption.port; + if (strcpy_s(appInfo->peerData.ip, IP_LEN, connOpt->socketOption.addr) != EOK) { return SOFTBUS_MEM_ERR; } diff --git a/sdk/transmission/trans_channel/tcp_direct/include/client_trans_tcp_direct_listener.h b/sdk/transmission/trans_channel/tcp_direct/include/client_trans_tcp_direct_listener.h index 768a5ccf06..3d7c06d02c 100644 --- a/sdk/transmission/trans_channel/tcp_direct/include/client_trans_tcp_direct_listener.h +++ b/sdk/transmission/trans_channel/tcp_direct/include/client_trans_tcp_direct_listener.h @@ -24,6 +24,7 @@ extern "C" { int32_t TransTdcCreateListener(int32_t fd); void TransTdcReleaseFd(int32_t fd); +int32_t TransTdcStopRead(int32_t fd); #ifdef __cplusplus } diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c index 8abd5ca48c..03dc55dc62 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c @@ -33,10 +33,12 @@ typedef struct { SoftBusMutex lock; bool lockInit; } SoftBusTcpListenerLock; + static SoftBusTcpListenerLock g_lock = { .lockInit = false, }; + static void TdcLockInit(void) { if (g_lock.lockInit == false) { @@ -48,16 +50,18 @@ static void TdcLockInit(void) } return; } -static int32_t OnConnectEvent(int events, int cfd, const char *ip) +static int32_t OnConnectEvent(ListenerModule module, int events, int cfd, const ConnectOption *clientAddr) { + (void)module; (void)events; (void)cfd; - (void)ip; + (void)clientAddr; return SOFTBUS_OK; } -static int32_t OnDataEvent(int events, int32_t fd) +static int32_t OnDataEvent(ListenerModule module, int events, int32_t fd) { + (void)module; TcpDirectChannelInfo channel; if (TransTdcGetInfoByFd(fd, &channel) == NULL) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_WARN, "can not match fd.[%d]", fd); @@ -119,3 +123,10 @@ void TransTdcReleaseFd(int32_t fd) DelTrigger(DIRECT_CHANNEL_CLIENT, fd, READ_TRIGGER); TcpShutDown(fd); } + +int32_t TransTdcStopRead(int32_t fd) { + if (fd < 0) { + return SOFTBUS_OK; + } + return DelTrigger(DIRECT_CHANNEL_CLIENT, fd, READ_TRIGGER); +} diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c index eaf2e9f2e6..72df1b847c 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c @@ -278,5 +278,5 @@ int32_t TransDisableSessionListener(int32_t channelId) SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid handle."); return SOFTBUS_ERR; } - return DelTrigger(DIRECT_CHANNEL_CLIENT, channel.detail.fd, READ_TRIGGER); + return TransTdcStopRead(channel.detail.fd); } \ No newline at end of file diff --git a/tests/core/authentication/unittest/auth_test.cpp b/tests/core/authentication/unittest/auth_test.cpp index f4a9383b79..1bf767e9e6 100644 --- a/tests/core/authentication/unittest/auth_test.cpp +++ b/tests/core/authentication/unittest/auth_test.cpp @@ -193,7 +193,7 @@ HWTEST_F(AuthTest, AUTH_ENCRYPT_AND_DECRYPT_Test_001, TestSize.Level0) ConnectOption option; option.type = CONNECT_BR; - ret = memcpy_s(option.info.brOption.brMac, BT_MAC_LEN, SERVER_MAC, BT_MAC_LEN); + ret = memcpy_s(option.brOption.brMac, BT_MAC_LEN, SERVER_MAC, BT_MAC_LEN); EXPECT_TRUE(ret == EOK); uint32_t totalLen = strlen((char *)ENCRYPT_DATA) + AuthGetEncryptHeadLen(); uint8_t *sendBuf = (uint8_t *)SoftBusMalloc(totalLen); @@ -208,7 +208,7 @@ HWTEST_F(AuthTest, AUTH_ENCRYPT_AND_DECRYPT_Test_001, TestSize.Level0) ConnectOption option1; option1.type = CONNECT_BR; - ret = memcpy_s(option1.info.brOption.brMac, BT_MAC_LEN, CLIENT_MAC, BT_MAC_LEN); + ret = memcpy_s(option1.brOption.brMac, BT_MAC_LEN, CLIENT_MAC, BT_MAC_LEN); EXPECT_TRUE(ret == EOK); uint8_t *recvBuf = (uint8_t *)SoftBusMalloc(strlen((char *)ENCRYPT_DATA) + 1); if (recvBuf == NULL) { diff --git a/tests/core/connection/br/connection_br_test.cpp b/tests/core/connection/br/connection_br_test.cpp index 6172e2e134..0b594b0622 100644 --- a/tests/core/connection/br/connection_br_test.cpp +++ b/tests/core/connection/br/connection_br_test.cpp @@ -171,8 +171,8 @@ HWTEST_F(ConnectionBrTest, testConnmanger003, TestSize.Level1) ret = ConnSetConnectCallback(MODULE_TRUST_ENGINE, &connCb); EXPECT_EQ(SOFTBUS_OK, ret); info.type = CONNECT_BR; - (void)memcpy_s(info.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); - printf("brMac: %s\n", info.info.brOption.brMac); + (void)memcpy_s(info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + printf("brMac: %s\n", info.brOption.brMac); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; reqId = ConnGetNewRequestId(MODULE_TRUST_ENGINE); @@ -251,8 +251,8 @@ HWTEST_F(ConnectionBrTest, testConnmanger005, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, ret); optionInfo.type = CONNECT_BR; - (void)memcpy_s(optionInfo.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); - printf("brMac: %s\n", optionInfo.info.brOption.brMac); + (void)memcpy_s(optionInfo.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + printf("brMac: %s\n", optionInfo.brOption.brMac); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; reqId = ConnGetNewRequestId(MODULE_TRUST_ENGINE); @@ -317,7 +317,7 @@ HWTEST_F(ConnectionBrTest, testConnmanger007, TestSize.Level1) ret = ConnSetConnectCallback(MODULE_TRUST_ENGINE, &connCb); EXPECT_EQ(SOFTBUS_OK, ret); info.type = CONNECT_BR; - (void)memcpy_s(info.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + (void)memcpy_s(info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; reqId = ConnGetNewRequestId(MODULE_TRUST_ENGINE); @@ -369,7 +369,7 @@ HWTEST_F(ConnectionBrTest, testConnmanger008, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, ret); optionInfo.type = CONNECT_BR; - (void)memcpy_s(optionInfo.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + (void)memcpy_s(optionInfo.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; int reqId = ConnGetNewRequestId(MODULE_TRUST_ENGINE); @@ -418,8 +418,8 @@ HWTEST_F(ConnectionBrTest, testConnmanger009, TestSize.Level1) ret = ConnSetConnectCallback(MODULE_TRUST_ENGINE, &connCb); EXPECT_EQ(SOFTBUS_OK, ret); info.type = CONNECT_BR; - (void)memcpy_s(info.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); - printf("brMac: %s\n", info.info.brOption.brMac); + (void)memcpy_s(info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + printf("brMac: %s\n", info.brOption.brMac); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; int reqId1 = ConnGetNewRequestId(MODULE_TRUST_ENGINE); @@ -475,7 +475,7 @@ HWTEST_F(ConnectionBrTest, testConnmanger010, TestSize.Level1) ret = ConnSetConnectCallback(MODULE_TRUST_ENGINE, &connCb); EXPECT_EQ(SOFTBUS_OK, ret); info.type = CONNECT_BR; - (void)memcpy_s(info.info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); + (void)memcpy_s(info.brOption.brMac, BT_MAC_LEN, TEST_BR_MAC, BT_MAC_LEN); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index edd463fe81..2a4e2a991d 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -15,6 +15,7 @@ #include #include +#include #include "common_list.h" #include "softbus_base_listener.h" @@ -76,12 +77,12 @@ void SoftbusCommonTest::TearDown(void) g_count = 0; } -int32_t ConnectEvent(int32_t events, int32_t cfd, const char *ip) +int32_t ConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const ConnectOption *clientAddr) { return 0; } -int32_t DataEvent(int32_t events, int32_t fd) +int32_t DataEvent(ListenerModule module, int32_t events, int32_t fd) { return 0; } @@ -110,32 +111,33 @@ HWTEST_F(SoftbusCommonTest, testBaseListener002, TestSize.Level1) { int i; int port = 6666; - for (i = PROXY; i <= UNUSE_BUTT; i++) { + for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_INVALID_PARAM, SetSoftbusBaseListener(static_cast(i), nullptr)); } SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - free(setListener); - return; - } + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + SoftbusBaseListener getListener = {0}; + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "127.0.0.1", + .port = port, + .moduleId = static_cast(i), + .protocol = LNN_PROTOCOL_IP + } + }; ++port; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(port, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), getListener)); - EXPECT_EQ(setListener->onConnectEvent, getListener->onConnectEvent); - EXPECT_EQ(setListener->onDataEvent, getListener->onDataEvent); + EXPECT_EQ(port, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); + EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); + EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); ASSERT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); - DestroyBaseListener(static_cast(i)); - if (getListener != nullptr) { - free(getListener); - } } - EXPECT_EQ(SOFTBUS_INVALID_PARAM, SetSoftbusBaseListener(UNUSE_BUTT, setListener)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, SetSoftbusBaseListener(LISTENER_MODULE_DYNAMIC_START, setListener)); free(setListener); }; @@ -155,13 +157,28 @@ HWTEST_F(SoftbusCommonTest, testBaseListener003, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, nullptr, port, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, "127.0.0.1", -1, SERVER_MODE)); - EXPECT_EQ(port, StartBaseListener(module, "127.0.0.1", port, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, "127.0.0.1", port, SERVER_MODE)); + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = port, + .moduleId = module, + .protocol = LNN_PROTOCOL_IP + } + }; + + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, &info)); + + ASSERT_EQ(strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), "127.0.0.1"), EOK); + info.socketOption.port = -1; + + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, &info)); + info.socketOption.port = port; + EXPECT_EQ(port, StartBaseListener(module, &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); - DestroyBaseListener(module); free(listener); }; @@ -199,7 +216,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) int ret; int module; int port = 6666; - for (module = PROXY; module < UNUSE_BUTT; module++) { + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { SoftbusBaseListener* listener = (SoftbusBaseListener*)malloc(sizeof(SoftbusBaseListener)); if (listener == nullptr) { for (int i = 0; i < module; i++) { @@ -209,16 +226,21 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) } continue; } + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", .port = port, .moduleId = static_cast(module), .protocol = LNN_PROTOCOL_IP} + }; + listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; ret = SetSoftbusBaseListener(static_cast(module), listener); EXPECT_EQ(SOFTBUS_OK, ret); - ret = StartBaseListener(static_cast(module), "127.0.0.1", - port + static_cast(module), SERVER_MODE); + ret = StartBaseListener(static_cast(module), &info); EXPECT_EQ(port + module, ret); free(listener); } - for (module = PROXY; module < UNUSE_BUTT; module++) { + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { ret = StopBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_OK, ret); DestroyBaseListener(static_cast(module)); @@ -240,7 +262,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener006, TestSize.Level1) EXPECT_EQ(SOFTBUS_INVALID_PARAM, AddTrigger(UNUSE_BUTT, fd, static_cast(triggerType))); EXPECT_EQ(SOFTBUS_INVALID_PARAM, DelTrigger(UNUSE_BUTT, fd, static_cast(triggerType))); } - for (module = PROXY; module < UNUSE_BUTT; module++) { + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { for (triggerType = READ_TRIGGER; triggerType <= RW_TRIGGER; triggerType++) { EXPECT_EQ(SOFTBUS_INVALID_PARAM, AddTrigger(static_cast(module), INVALID_FD, static_cast(triggerType))); @@ -261,7 +283,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener007, TestSize.Level1) int module; int triggerType; int fd = 1; - for (module = PROXY; module < UNUSE_BUTT; module++) { + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { for (triggerType = READ_TRIGGER; triggerType <= RW_TRIGGER; triggerType++) { EXPECT_EQ(SOFTBUS_ERR, AddTrigger(static_cast(module), fd, static_cast(triggerType))); @@ -284,13 +306,18 @@ HWTEST_F(SoftbusCommonTest, testBaseListener008, TestSize.Level1) int fd = 1; int port = 6666; - for (module = PROXY; module < UNUSE_BUTT; module++) { + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { SoftbusBaseListener* listener = (SoftbusBaseListener*)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", .port = port, .moduleId = static_cast(module), .protocol = LNN_PROTOCOL_IP} + }; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); for (triggerType = READ_TRIGGER; triggerType <= RW_TRIGGER; triggerType++) { EXPECT_EQ(SOFTBUS_OK, AddTrigger(static_cast(module), fd, static_cast(triggerType))); @@ -332,15 +359,9 @@ HWTEST_F(SoftbusCommonTest, testBaseListener009, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener010, TestSize.Level1) { - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - return; - } - EXPECT_EQ(SOFTBUS_INVALID_PARAM, GetSoftbusBaseListener(static_cast(UNUSE_BUTT), getListener)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, GetSoftbusBaseListener(static_cast(PROXY - 1), getListener)); - if (getListener != nullptr) { - free(getListener); - } + SoftbusBaseListener getListener; + EXPECT_EQ(SOFTBUS_INVALID_PARAM, GetSoftbusBaseListener(static_cast(UNUSE_BUTT), &getListener)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, GetSoftbusBaseListener(static_cast(PROXY - 1), &getListener)); }; /* @@ -400,7 +421,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener013, TestSize.Level1) ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); DestroyBaseListener(static_cast(i)); } @@ -418,13 +439,9 @@ HWTEST_F(SoftbusCommonTest, testBaseListener013, TestSize.Level1) HWTEST_F(SoftbusCommonTest, testBaseListener014, TestSize.Level1) { int i; - SoftbusBaseListener *getListener = nullptr; - for (i = PROXY; i < UNUSE_BUTT; i++) { - getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - return; - } - EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), getListener)); + SoftbusBaseListener getListener = {0}; + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), &getListener)); } }; @@ -439,27 +456,20 @@ HWTEST_F(SoftbusCommonTest, testBaseListener014, TestSize.Level1) HWTEST_F(SoftbusCommonTest, testBaseListener015, TestSize.Level1) { int i; - for (i = PROXY; i <= UNUSE_BUTT; i++) { + for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_INVALID_PARAM, SetSoftbusBaseListener(static_cast(i), nullptr)); } SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - free(setListener); - return; - } + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + SoftbusBaseListener getListener = {0}; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), getListener)); - EXPECT_EQ(setListener->onConnectEvent, getListener->onConnectEvent); - EXPECT_EQ(setListener->onDataEvent, getListener->onDataEvent); + EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); + EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); + EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); DestroyBaseListener(static_cast(i)); - if (getListener != nullptr) { - free(getListener); - } } free(setListener); }; @@ -489,7 +499,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener016, TestSize.Level1) HWTEST_F(SoftbusCommonTest, testBaseListener017, TestSize.Level1) { int i; - for (i = PROXY; i < UNUSE_BUTT; i++) { + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(static_cast(i))); } }; @@ -509,7 +519,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener018, TestSize.Level1) ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(static_cast(i))); @@ -533,7 +543,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener019, TestSize.Level1) ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(static_cast(i))); EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); @@ -554,18 +564,17 @@ HWTEST_F(SoftbusCommonTest, testBaseListener019, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener020, TestSize.Level1) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(PROXY - 1), "127.0.0.1", 666, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(UNUSE_BUTT), "127.0.0.1", 666, SERVER_MODE)); + StartBaseListener(static_cast(PROXY - 1), &info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(PROXY - 1), "127.0.0.1", 666, CLIENT_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(UNUSE_BUTT), "127.0.0.1", 666, CLIENT_MODE)); - EXPECT_EQ( - SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(PROXY - 1), "127.0.0.1", 666, UNSET_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(UNUSE_BUTT), "127.0.0.1", 666, UNSET_MODE)); + StartBaseListener(static_cast(UNUSE_BUTT), &info)); }; /* @@ -578,11 +587,17 @@ HWTEST_F(SoftbusCommonTest, testBaseListener020, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener021, TestSize.Level1) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "", + .port = 666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; int i; - for (i = PROXY; i <= UNUSE_BUTT; i++) { - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), nullptr, 666, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), nullptr, 666, CLIENT_MODE)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), nullptr, 666, UNSET_MODE)); + for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.moduleId = static_cast(i); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), &info)); } }; @@ -596,14 +611,18 @@ HWTEST_F(SoftbusCommonTest, testBaseListener021, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener022, TestSize.Level1) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = -1, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; int i; - for (i = PROXY; i <= UNUSE_BUTT; i++) { - EXPECT_EQ( - SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), "127.0.0.1", -1, SERVER_MODE)); + for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.moduleId = static_cast(i); EXPECT_EQ( - SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), "127.0.0.1", -1, CLIENT_MODE)); - EXPECT_EQ( - SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), "127.0.0.1", -1, UNSET_MODE)); + SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), &info)); } }; @@ -617,11 +636,17 @@ HWTEST_F(SoftbusCommonTest, testBaseListener022, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener023, TestSize.Level1) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = -1, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; int i; - for (i = PROXY; i < UNUSE_BUTT; i++) { - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), "127.0.0.1", 666, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), "127.0.0.1", 666, CLIENT_MODE)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), "127.0.0.1", 666, UNSET_MODE)); + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.moduleId = static_cast(i); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); } }; @@ -635,16 +660,23 @@ HWTEST_F(SoftbusCommonTest, testBaseListener023, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener024, TestSize.Level1) { - int i; - int port = 6666; SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + for (int i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.moduleId = static_cast(i); + info.socketOption.port++; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - ++port; - EXPECT_EQ(port, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); DestroyBaseListener(static_cast(i)); } free(setListener); @@ -660,24 +692,28 @@ HWTEST_F(SoftbusCommonTest, testBaseListener024, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener025, TestSize.Level1) { - int i; - int port = 6666; SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { - ++port; - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - free(setListener); - return; - } + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + + for (int i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.port++; + info.socketOption.moduleId = static_cast(i); + SoftbusBaseListener getListener = {0}; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(port, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); DestroyBaseListener(static_cast(i)); - EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), getListener)); + EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), &getListener)); } free(setListener); }; @@ -707,7 +743,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener026, TestSize.Level1) HWTEST_F(SoftbusCommonTest, testBaseListener027, TestSize.Level1) { int i; - for (i = PROXY; i < UNUSE_BUTT; i++) { + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_ERR, StopBaseListener(static_cast(i))); } EXPECT_EQ(SOFTBUS_INVALID_PARAM, StopBaseListener(UNUSE_BUTT)); @@ -723,27 +759,29 @@ HWTEST_F(SoftbusCommonTest, testBaseListener027, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener028, TestSize.Level1) { - int i; - int port = 6666; SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - free(setListener); - return; - } - ++port; + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + + for (int i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + info.socketOption.port++; + info.socketOption.moduleId = static_cast(i); + SoftbusBaseListener getListener = {0}; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), getListener)); - EXPECT_EQ(setListener->onConnectEvent, getListener->onConnectEvent); - EXPECT_EQ(setListener->onDataEvent, getListener->onDataEvent); - if (getListener != nullptr) { - free(getListener); - } - EXPECT_EQ(port, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); + EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); + EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); + + EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); DestroyBaseListener(static_cast(i)); } @@ -761,27 +799,30 @@ HWTEST_F(SoftbusCommonTest, testBaseListener028, TestSize.Level1) HWTEST_F(SoftbusCommonTest, testBaseListener029, TestSize.Level1) { int i; - int port = 6666; SoftbusBaseListener *setListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(setListener != nullptr); setListener->onConnectEvent = ConnectEvent; setListener->onDataEvent = DataEvent; - for (i = PROXY; i < UNUSE_BUTT; i++) { - SoftbusBaseListener *getListener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - if (getListener == nullptr) { - free(setListener); - return; - } - ++port; + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + + for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { + SoftbusBaseListener getListener = {0}; + info.socketOption.port++; + info.socketOption.moduleId = static_cast(i); EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), getListener)); - EXPECT_EQ(setListener->onConnectEvent, getListener->onConnectEvent); - EXPECT_EQ(setListener->onDataEvent, getListener->onDataEvent); - if (getListener != nullptr) { - free(getListener); - } + EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); + EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); + EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); + EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); DestroyBaseListener(static_cast(i)); @@ -802,15 +843,25 @@ HWTEST_F(SoftbusCommonTest, testBaseListener030, TestSize.Level1) { int module; int fd = 1; - int port = 6666; - for (module = PROXY; module < UNUSE_BUTT; module++) { + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + + for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { + info.socketOption.port++; + info.socketOption.moduleId = static_cast(module); + SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(module), &info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, AddTrigger(static_cast(module), fd, static_cast(READ_TRIGGER - 1))); @@ -837,18 +888,24 @@ HWTEST_F(SoftbusCommonTest, testBaseListener030, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener031, TestSize.Level1) { - int module = PROXY; - int port = 6666; + ListenerModule module = PROXY; + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = 6666, + .moduleId = module, + .protocol = LNN_PROTOCOL_IP} + }; SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(module, &info)); - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); + DestroyBaseListener(module); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); free(listener); }; @@ -862,31 +919,47 @@ HWTEST_F(SoftbusCommonTest, testBaseListener031, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) { - int port = 6666; + const int port = 6666; + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; SoftbusBaseListener *listener1 = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener1 != nullptr); listener1->onConnectEvent = ConnectEvent; listener1->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(PROXY, listener1)); - EXPECT_EQ(PROXY + port, StartBaseListener(PROXY, "127.0.0.1", PROXY + port, SERVER_MODE)); + EXPECT_EQ(port, StartBaseListener(PROXY, &info)); SoftbusBaseListener *listener2 = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener2 != nullptr); listener2->onConnectEvent = ConnectEvent; listener2->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(AUTH, listener2)); - EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, "127.0.0.1", AUTH + port, SERVER_MODE)); + + info.socketOption.moduleId = AUTH; + info.socketOption.port = AUTH + port; + EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, &info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(PROXY)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); DestroyBaseListener(PROXY); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(PROXY, "127.0.0.1", PROXY + port, SERVER_MODE)); - EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, "127.0.0.1", AUTH + port, SERVER_MODE)); + + info.socketOption.moduleId = PROXY; + info.socketOption.port = PROXY + port; + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(PROXY, &info)); + + info.socketOption.moduleId = AUTH; + info.socketOption.port = AUTH + port; + EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, &info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); DestroyBaseListener(AUTH); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(AUTH, "127.0.0.1", AUTH + port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(AUTH, &info)); free(listener1); free(listener2); }; @@ -901,17 +974,26 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener033, TestSize.Level1) { - int module = PROXY; - int port = 6666; + ListenerModule module = PROXY; + const int port = 6666; + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; + SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); + EXPECT_EQ(port, StartBaseListener(module, &info)); - DestroyBaseListener(static_cast(module)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + DestroyBaseListener(module); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); free(listener); }; @@ -925,17 +1007,25 @@ HWTEST_F(SoftbusCommonTest, testBaseListener033, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testBaseListener034, TestSize.Level1) { - int module = PROXY; + ListenerModule module = PROXY; int triggerType = READ_TRIGGER; int fd = 1; - int port = 6666; + const int port = 6666; + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); DestroyBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_ERR, AddTrigger(static_cast(module), fd, static_cast(triggerType))); @@ -955,189 +1045,25 @@ HWTEST_F(SoftbusCommonTest, testBaseListener035, TestSize.Level1) int module = PROXY; int triggerType = READ_TRIGGER; int fd = 1; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - DestroyBaseListener(static_cast(module)); - EXPECT_EQ(SOFTBUS_ERR, DelTrigger(static_cast(module), fd, static_cast(triggerType))); - free(listener); -}; - -/* - * @tc.name: testBaseListener036 - * @tc.desc: Test StartBaseListener after ResetBaseListener. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: NonZero - * @tc.type: FUNC - * @tc.require: The StartBaseListener operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener036, TestSize.Level1) -{ - int module = PROXY; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - ResetBaseListener(static_cast(module)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); - free(listener); -}; - -/* - * @tc.name: testBaseListener037 - * @tc.desc: Test StopBaseListener after ResetBaseListener. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: Zero - * @tc.type: FUNC - * @tc.require: The StopBaseListener operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener037, TestSize.Level1) -{ - int module = PROXY; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - ResetBaseListener(static_cast(module)); - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - - DestroyBaseListener(static_cast(module)); - free(listener); -}; - -/* - * @tc.name: testBaseListener038 - * @tc.desc: Test AddTrigger DelTrigger after ResetBaseListener. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: Zero - * @tc.type: FUNC - * @tc.require: The AddTrigger and DelTrigger operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener038, TestSize.Level1) -{ - int module = PROXY; - int triggerType = READ_TRIGGER; - int fd = 1; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + const int port = 6666; - ResetBaseListener(static_cast(module)); - EXPECT_EQ(SOFTBUS_OK, AddTrigger(static_cast(module), fd, static_cast(triggerType))); - EXPECT_EQ(SOFTBUS_OK, DelTrigger(static_cast(module), fd, static_cast(triggerType))); - - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); - free(listener); -}; - -/* - * @tc.name: testBaseListener039 - * @tc.desc: Test StartBaseListener after ResetBaseListenerSet. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: NonZero - * @tc.type: FUNC - * @tc.require: The StartBaseListener operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener039, TestSize.Level1) -{ - int module = PROXY; - int port = 6666; + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = PROXY, + .protocol = LNN_PROTOCOL_IP} + }; SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener != nullptr); listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - ResetBaseListenerSet(static_cast(module)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); + EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); - free(listener); -}; - -/* - * @tc.name: testBaseListener040 - * @tc.desc: Test StopBaseListener after ResetBaseListenerSet. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: Zero - * @tc.type: FUNC - * @tc.require: The StopBaseListener operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener040, TestSize.Level1) -{ - int module = PROXY; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - ResetBaseListenerSet(static_cast(module)); - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - - DestroyBaseListener(static_cast(module)); - free(listener); -}; - -/* - * @tc.name: testBaseListener041 - * @tc.desc: Test AddTrigger DelTrigger after ResetBaseListenerSet. - * @tc.in: Test module, Test number, Test Levels. - * @tc.out: Zero - * @tc.type: FUNC - * @tc.require: The AddTrigger and DelTrigger operates normally. - */ -HWTEST_F(SoftbusCommonTest, testBaseListener041, TestSize.Level1) -{ - int module = PROXY; - int triggerType = READ_TRIGGER; - int fd = 1; - int port = 6666; - - SoftbusBaseListener *listener = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); - ASSERT_TRUE(listener != nullptr); - listener->onConnectEvent = ConnectEvent; - listener->onDataEvent = DataEvent; - EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), "127.0.0.1", port, SERVER_MODE)); - - ResetBaseListenerSet(static_cast(module)); - EXPECT_EQ(SOFTBUS_OK, AddTrigger(static_cast(module), fd, static_cast(triggerType))); - EXPECT_EQ(SOFTBUS_OK, DelTrigger(static_cast(module), fd, static_cast(triggerType))); - - EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); DestroyBaseListener(static_cast(module)); + EXPECT_EQ(SOFTBUS_ERR, DelTrigger(static_cast(module), fd, static_cast(triggerType))); free(listener); }; diff --git a/tests/core/connection/manager/connection_manager_test.cpp b/tests/core/connection/manager/connection_manager_test.cpp index 521912e9f4..db0e1b8cd5 100644 --- a/tests/core/connection/manager/connection_manager_test.cpp +++ b/tests/core/connection/manager/connection_manager_test.cpp @@ -458,7 +458,7 @@ HWTEST_F(SoftbusConnmangerFuncTest, testConnmanger008, TestSize.Level1) ConnectResult connRet; ConnectOption info; info.type = CONNECT_BLE; - (void)memcpy_s(info.info.bleOption.bleMac, BT_MAC_LEN, testBleMac, BT_MAC_LEN); + (void)memcpy_s(info.bleOption.bleMac, BT_MAC_LEN, testBleMac, BT_MAC_LEN); connRet.OnConnectFailed = ConnectFailedCB; connRet.OnConnectSuccessed = ConnectSuccessedCB; uint32_t reqId = ConnGetNewRequestId(MODULE_TRUST_ENGINE); diff --git a/tests/core/connection/tcp/tcp_manager_test.cpp b/tests/core/connection/tcp/tcp_manager_test.cpp index 519b0b4645..7c22c1b921 100644 --- a/tests/core/connection/tcp/tcp_manager_test.cpp +++ b/tests/core/connection/tcp/tcp_manager_test.cpp @@ -189,9 +189,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager002, TestSize.Level1) uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_BR; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); @@ -237,9 +237,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager005, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = PROXY; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = PROXY; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -263,15 +263,15 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager006, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_TCP; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); EXPECT_EQ(port, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_OK, TcpConnectDevice(&option, requestId, &g_result)); @@ -297,15 +297,15 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager007, TestSize.Level1) int serverPort = 6667; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = clientPort; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = clientPort; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option = {}; option.type = CONNECT_TCP; - option.info.ipOption.port = serverPort; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = serverPort; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); ConnPktHead head = {0}; head.len = strlen(g_data); @@ -346,15 +346,15 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager008, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_TCP; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int32_t maxConnNum; int32_t i = 0; @@ -388,15 +388,15 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager009, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_TCP; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int maxDataLen; if (SoftbusGetConfig(SOFTBUS_INT_CONN_TCP_MAX_LENGTH, @@ -440,9 +440,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager010, TestSize.Level1) uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_BLE; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); @@ -451,7 +451,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager010, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = AUTH; + option.socketOption.moduleId = AUTH; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -459,7 +459,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager010, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = AUTH_P2P; + option.socketOption.moduleId = AUTH_P2P; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -483,9 +483,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager011, TestSize.Level1) uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_BLE; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); @@ -494,7 +494,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager011, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = DIRECT_CHANNEL_CLIENT; + option.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -502,7 +502,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager011, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -525,9 +525,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager012, TestSize.Level1) uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_P2P; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = PROXY; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = PROXY; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); @@ -536,7 +536,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager012, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = AUTH; + option.socketOption.moduleId = AUTH; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -544,7 +544,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager012, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = AUTH_P2P; + option.socketOption.moduleId = AUTH_P2P; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -568,9 +568,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager013, TestSize.Level1) uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_P2P; - option.info.ipOption.port = port; - option.info.ipOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; - (void)strcpy_s(option.info.ipOption.ip, IP_LEN, Ip); + option.socketOption.port = port; + option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); @@ -579,7 +579,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager013, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = DIRECT_CHANNEL_CLIENT; + option.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -587,7 +587,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager013, TestSize.Level1) ret = TcpConnectDevice(&option, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); - option.info.ipOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; ret = TcpConnectDevice(nullptr, requestId, &g_result); EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret); ret = TcpConnectDevice(&option, requestId, nullptr); @@ -609,9 +609,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager014, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -636,9 +636,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager015, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -664,9 +664,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager016, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -691,9 +691,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager017, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_CLIENT; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -718,9 +718,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager018, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BR; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -745,9 +745,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager019, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = PROXY; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = PROXY; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -773,9 +773,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager020, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -800,9 +800,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager021, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1023,9 +1023,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager030, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1050,9 +1050,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager031, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_CLIENT; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1077,9 +1077,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager032, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_BLE; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1104,9 +1104,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager033, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = PROXY; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = PROXY; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1132,9 +1132,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager034, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1159,9 +1159,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager035, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = AUTH_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = AUTH_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1187,9 +1187,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager036, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_P2P; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1214,9 +1214,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager037, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_CLIENT; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1241,9 +1241,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager038, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_P2P; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStopListening(nullptr)); @@ -1268,10 +1268,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager039, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); uint32_t tos = 65535; int rc = SetIpTos(fd, tos); EXPECT_EQ(rc, SOFTBUS_OK); @@ -1290,10 +1290,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager040, TestSize.Level1) int port = 6667; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - EXPECT_TRUE(OpenTcpServerSocket(info.info.ipListenerInfo.ip, info.info.ipListenerInfo.port) > 0); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + EXPECT_TRUE(OpenTcpServerSocket(info.socketOption.addr, info.socketOption.port) > 0); } /* @@ -1309,12 +1309,12 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager041, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_EQ(SetIpTos(fd, 65535), SOFTBUS_OK); - EXPECT_TRUE(OpenTcpClientSocket(info.info.ipListenerInfo.ip, Ip, port, true) > 0); + EXPECT_TRUE(OpenTcpClientSocket(info.socketOption.addr, Ip, port, true) > 0); }; /* @@ -1330,10 +1330,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager042, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_TRUE(fd > 0); EXPECT_EQ(SetIpTos(fd, 65535), SOFTBUS_OK); EXPECT_TRUE(ConnToggleNonBlockMode(fd, true) == 0); @@ -1352,10 +1352,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_TRUE(GetTcpSockPort(fd) > 0); }; @@ -1372,10 +1372,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager044, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpClientSocket("127.0.0.1", info.info.ipListenerInfo.ip, port, false); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); const char * buf = "SendDataTest"; EXPECT_EQ(SendTcpData(fd, buf, 13, 0), -1); }; @@ -1393,10 +1393,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager045, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); CloseTcpFd(fd); EXPECT_TRUE(fd >= 0); }; @@ -1414,10 +1414,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager046, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpClientSocket("127.0.0.1", info.info.ipListenerInfo.ip, port, false); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); const char * buf = "SendDataTest"; EXPECT_EQ(SendTcpData(fd, buf, 13, 0xffff), -1); }; @@ -1435,10 +1435,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager047, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); TcpShutDown(fd); EXPECT_TRUE(fd >= 0); }; @@ -1456,9 +1456,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager048, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(ConnSetTcpKeepAlive(-100, 65535), -1); }; @@ -1475,10 +1475,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager049, TestSize.Level1) int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; - info.info.ipListenerInfo.port = port; - info.info.ipListenerInfo.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - (void)strcpy_s(info.info.ipListenerInfo.ip, IP_LEN, Ip); - int fd = OpenTcpServerSocket(info.info.ipListenerInfo.ip, port); + info.socketOption.port = port; + info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); + int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_EQ(ConnSetTcpKeepAlive(fd, 100), SOFTBUS_OK); }; } diff --git a/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp b/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp index 681d2efd08..bd84d3027d 100644 --- a/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp +++ b/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp @@ -23,6 +23,7 @@ #include "trans_tcp_direct_listener.h" #include "trans_tcp_direct_manager.h" #include "trans_tcp_direct_message.h" +#include "softbus_protocol_def.h" #define TEST_ASSERT_TRUE(ret) \ if (ret) { \ @@ -70,15 +71,40 @@ void TransTcpDirectTest::TearDownTestCase(void) HWTEST_F(TransTcpDirectTest, StartSessionListenerTest001, TestSize.Level1) { int ret = 0; - char const *ip = "192.168.8.119"; - int port = 6000; - ret = TransTdcStartSessionListener(NULL, port); + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = 6000, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI + } + }; + ret = TransTdcStartSessionListener(UNUSE_BUTT, &info); TEST_ASSERT_TRUE(ret != 0); - ret = TransTdcStartSessionListener(ip, -1); + LocalListenerInfo info2 = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "192.168.8.119", + .port = -1, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI + } + }; + ret = TransTdcStartSessionListener(DIRECT_CHANNEL_SERVER_WIFI, &info2); TEST_ASSERT_TRUE(ret != 0); - ret = TransTdcStartSessionListener(NULL, -1); + LocalListenerInfo info3 = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = -1, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI + } + }; + ret = TransTdcStartSessionListener(DIRECT_CHANNEL_SERVER_WIFI, &info3); TEST_ASSERT_TRUE(ret != 0); } @@ -91,7 +117,7 @@ HWTEST_F(TransTcpDirectTest, StartSessionListenerTest001, TestSize.Level1) HWTEST_F(TransTcpDirectTest, StoptSessionListenerTest001, TestSize.Level1) { int ret = 0; - ret = TransTdcStopSessionListener(); + ret = TransTdcStopSessionListener(DIRECT_CHANNEL_SERVER_WIFI); TEST_ASSERT_TRUE(ret != 0); } @@ -109,8 +135,8 @@ HWTEST_F(TransTcpDirectTest, OpenTcpDirectChannelTest001, TestSize.Level1) (void)memset_s(&appInfo, sizeof(AppInfo), 0, sizeof(AppInfo)); (void)memset_s(&connInfo, sizeof(ConnectOption), 0, sizeof(ConnectOption)); connInfo.type = CONNECT_TCP; - connInfo.info.ipOption.port = 6000; - if (strcpy_s(connInfo.info.ipOption.ip, sizeof(connInfo.info.ipOption.ip), "192.168.8.1") != EOK) { + connInfo.socketOption.port = 6000; + if (strcpy_s(connInfo.socketOption.addr, sizeof(connInfo.socketOption.addr), "192.168.8.1") != EOK) { return; } int fd = 1; -- Gitee From 7e649349da7d8a9581757a4d4cc343e8d4118c16 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Fri, 8 Jul 2022 03:04:56 +0000 Subject: [PATCH 02/16] refact StartBaseListener Signed-off-by: duxbbo Change-Id: I8a84811f1f413332e93bf4004d7eb5f37bad0bb5 --- core/authentication/src/auth_socket.c | 2 +- .../common/src/softbus_base_listener.c | 5 +- .../interface/softbus_base_listener.h | 2 +- .../tcp/src/softbus_tcp_connect_manager.c | 2 +- .../src/trans_tcp_direct_listener.c | 2 +- .../common/softbus_conn_common_test.cpp | 63 +++++++++---------- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index c4e018eabc..07f15205fc 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -369,7 +369,7 @@ int32_t OpenAuthServer(void) return AUTH_ERROR_CODE; } - localPort = StartBaseListener(AUTH, &info); + localPort = StartBaseListener(&info); if (localPort <= 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth StartBaseListener failed!"); return AUTH_ERROR_CODE; diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index dbcc54becf..09e997a0af 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -751,11 +751,12 @@ int32_t StartBaseClient(ListenerModule module) return ret; } -int32_t StartBaseListener(ListenerModule module, const LocalListenerInfo *info) +int32_t StartBaseListener(const LocalListenerInfo *info) { - if (info == NULL || info->socketOption.port < 0) { + if (info == NULL || (info->type != CONNECT_TCP && info->type != CONNECT_P2P) || info->socketOption.port < 0) { return SOFTBUS_INVALID_PARAM; } + ListenerModule module = info->socketOption.moduleId; SoftbusListenerNode *node = RequestListenerNode(module); if (node == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: no listner with module %" PRIu32, __func__, module); diff --git a/core/connection/interface/softbus_base_listener.h b/core/connection/interface/softbus_base_listener.h index 107ffe28a6..dc82b91e5e 100644 --- a/core/connection/interface/softbus_base_listener.h +++ b/core/connection/interface/softbus_base_listener.h @@ -55,7 +55,7 @@ int32_t GetSoftbusBaseListener(ListenerModule module, SoftbusBaseListener *liste int32_t SetSoftbusBaseListener(ListenerModule module, const SoftbusBaseListener *listener); int32_t StartBaseClient(ListenerModule module); -int32_t StartBaseListener(ListenerModule module, const LocalListenerInfo *info); +int32_t StartBaseListener(const LocalListenerInfo *info); int32_t StopBaseListener(ListenerModule module); int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType); diff --git a/core/connection/tcp/src/softbus_tcp_connect_manager.c b/core/connection/tcp/src/softbus_tcp_connect_manager.c index eb6d9b1e5e..812b557770 100644 --- a/core/connection/tcp/src/softbus_tcp_connect_manager.c +++ b/core/connection/tcp/src/softbus_tcp_connect_manager.c @@ -594,7 +594,7 @@ int32_t TcpStartListening(const LocalListenerInfo *info) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Set BaseListener Failed."); return rc; } - return StartBaseListener(info->socketOption.moduleId, info); + return StartBaseListener(info); } int32_t TcpStopListening(const LocalListenerInfo *info) diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c index a9305a8a3f..ec020928a1 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c @@ -293,7 +293,7 @@ int32_t TransTdcStartSessionListener(ListenerModule module, const LocalListenerI SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:Set BaseListener Failed.", __func__); return ret; } - int serverPort = StartBaseListener(module, info); + int serverPort = StartBaseListener(info); return serverPort; } diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index 2a4e2a991d..304ae036c5 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -131,7 +131,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener002, TestSize.Level1) }; ++port; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(port, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); @@ -168,15 +168,15 @@ HWTEST_F(SoftbusCommonTest, testBaseListener003, TestSize.Level1) } }; - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, &info)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); ASSERT_EQ(strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), "127.0.0.1"), EOK); info.socketOption.port = -1; - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(module, &info)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); info.socketOption.port = port; - EXPECT_EQ(port, StartBaseListener(module, &info)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); + EXPECT_EQ(port, StartBaseListener(&info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); free(listener); @@ -236,7 +236,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) listener->onDataEvent = DataEvent; ret = SetSoftbusBaseListener(static_cast(module), listener); EXPECT_EQ(SOFTBUS_OK, ret); - ret = StartBaseListener(static_cast(module), &info); + ret = StartBaseListener(&info); EXPECT_EQ(port + module, ret); free(listener); } @@ -317,7 +317,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener008, TestSize.Level1) .socketOption = {.addr = "127.0.0.1", .port = port, .moduleId = static_cast(module), .protocol = LNN_PROTOCOL_IP} }; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); + EXPECT_EQ(port, StartBaseListener(&info)); for (triggerType = READ_TRIGGER; triggerType <= RW_TRIGGER; triggerType++) { EXPECT_EQ(SOFTBUS_OK, AddTrigger(static_cast(module), fd, static_cast(triggerType))); @@ -568,13 +568,12 @@ HWTEST_F(SoftbusCommonTest, testBaseListener020, TestSize.Level1) .type = CONNECT_TCP, .socketOption = {.addr = "127.0.0.1", .port = 666, - .moduleId = PROXY, + .moduleId = static_cast(PROXY - 1), .protocol = LNN_PROTOCOL_IP} }; - EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(PROXY - 1), &info)); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, - StartBaseListener(static_cast(UNUSE_BUTT), &info)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); + info.socketOption.moduleId = static_cast(UNUSE_BUTT); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); }; /* @@ -597,7 +596,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener021, TestSize.Level1) int i; for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { info.socketOption.moduleId = static_cast(i); - EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); } }; @@ -622,7 +621,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener022, TestSize.Level1) for (i = PROXY; i <= LISTENER_MODULE_DYNAMIC_START; i++) { info.socketOption.moduleId = static_cast(i); EXPECT_EQ( - SOFTBUS_INVALID_PARAM, StartBaseListener(static_cast(i), &info)); + SOFTBUS_INVALID_PARAM, StartBaseListener(&info)); } }; @@ -646,7 +645,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener023, TestSize.Level1) int i; for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { info.socketOption.moduleId = static_cast(i); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); } }; @@ -676,7 +675,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener024, TestSize.Level1) info.socketOption.moduleId = static_cast(i); info.socketOption.port++; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); DestroyBaseListener(static_cast(i)); } free(setListener); @@ -710,8 +709,8 @@ HWTEST_F(SoftbusCommonTest, testBaseListener025, TestSize.Level1) info.socketOption.moduleId = static_cast(i); SoftbusBaseListener getListener = {0}; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); DestroyBaseListener(static_cast(i)); EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), &getListener)); } @@ -781,7 +780,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener028, TestSize.Level1) EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); - EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); DestroyBaseListener(static_cast(i)); } @@ -822,7 +821,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener029, TestSize.Level1) EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(static_cast(i), &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); DestroyBaseListener(static_cast(i)); @@ -861,7 +860,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener030, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(info.socketOption.port, StartBaseListener(static_cast(module), &info)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, AddTrigger(static_cast(module), fd, static_cast(READ_TRIGGER - 1))); @@ -901,11 +900,11 @@ HWTEST_F(SoftbusCommonTest, testBaseListener031, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); - EXPECT_EQ(info.socketOption.port, StartBaseListener(module, &info)); + EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); DestroyBaseListener(module); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener); }; @@ -933,7 +932,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) listener1->onConnectEvent = ConnectEvent; listener1->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(PROXY, listener1)); - EXPECT_EQ(port, StartBaseListener(PROXY, &info)); + EXPECT_EQ(port, StartBaseListener(&info)); SoftbusBaseListener *listener2 = (SoftbusBaseListener *)malloc(sizeof(SoftbusBaseListener)); ASSERT_TRUE(listener2 != nullptr); @@ -943,7 +942,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) info.socketOption.moduleId = AUTH; info.socketOption.port = AUTH + port; - EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, &info)); + EXPECT_EQ(AUTH + port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(PROXY)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); @@ -951,15 +950,15 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) info.socketOption.moduleId = PROXY; info.socketOption.port = PROXY + port; - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(PROXY, &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); info.socketOption.moduleId = AUTH; info.socketOption.port = AUTH + port; - EXPECT_EQ(AUTH + port, StartBaseListener(AUTH, &info)); + EXPECT_EQ(AUTH + port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); DestroyBaseListener(AUTH); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(AUTH, &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener1); free(listener2); }; @@ -990,10 +989,10 @@ HWTEST_F(SoftbusCommonTest, testBaseListener033, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); - EXPECT_EQ(port, StartBaseListener(module, &info)); + EXPECT_EQ(port, StartBaseListener(&info)); DestroyBaseListener(module); - EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(module, &info)); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener); }; @@ -1025,7 +1024,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener034, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); + EXPECT_EQ(port, StartBaseListener(&info)); DestroyBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_ERR, AddTrigger(static_cast(module), fd, static_cast(triggerType))); @@ -1060,7 +1059,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener035, TestSize.Level1) listener->onConnectEvent = ConnectEvent; listener->onDataEvent = DataEvent; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); - EXPECT_EQ(port, StartBaseListener(static_cast(module), &info)); + EXPECT_EQ(port, StartBaseListener(&info)); DestroyBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_ERR, DelTrigger(static_cast(module), fd, static_cast(triggerType))); -- Gitee From a64429208f6bf41871619a917154b014461b043d Mon Sep 17 00:00:00 2001 From: duxbbo Date: Mon, 11 Jul 2022 10:08:21 +0000 Subject: [PATCH 03/16] conn support muti protocol Signed-off-by: duxbbo Change-Id: Ie9d0c0c6484fa83eac89eb84f9da23bfd4ff0e41 --- core/authentication/src/auth_common.c | 5 +- core/authentication/src/auth_manager.c | 3 +- core/authentication/src/auth_socket.c | 48 ++- .../utils/src/lnn_connection_addr_utils.c | 5 + .../include}/softbus_tcp_socket.h | 5 +- .../common/src/softbus_base_listener.c | 315 +++++++++++++----- core/connection/common/src/softbus_socket.c | 88 +++-- .../common/src/softbus_tcp_socket.c | 88 ++++- .../interface/softbus_conn_interface.h | 1 + core/connection/interface/softbus_socket.h | 16 +- .../connection/manager/softbus_conn_manager.c | 9 +- .../tcp/src/softbus_tcp_connect_manager.c | 63 ++-- .../standard/init/src/softbus_server.cpp | 1 + .../ipc/small/trans_client_proxy.c | 2 +- .../proxy/src/softbus_proxychannel_session.c | 4 +- .../src/softbus_proxychannel_transceiver.c | 4 +- .../src/trans_tcp_direct_listener.c | 44 +-- .../tcp_direct/src/trans_tcp_direct_manager.c | 4 +- .../tcp_direct/src/trans_tcp_direct_message.c | 8 +- .../tcp_direct/src/trans_tcp_direct_p2p.c | 21 +- .../tcp_direct/src/trans_tcp_direct_wifi.c | 19 +- .../src/client_trans_tcp_direct_listener.c | 4 +- .../src/client_trans_tcp_direct_manager.c | 2 +- .../src/client_trans_tcp_direct_message.c | 5 +- .../trans_channel/udp/file/src/file_adapter.c | 16 +- .../common/softbus_conn_common_test.cpp | 40 +-- .../core/connection/tcp/tcp_manager_test.cpp | 114 +++++-- .../unittest/trans_tcp_direct_test.cpp | 13 +- 28 files changed, 629 insertions(+), 318 deletions(-) rename core/connection/{interface => common/include}/softbus_tcp_socket.h (84%) diff --git a/core/authentication/src/auth_common.c b/core/authentication/src/auth_common.c index 20ab1cfec2..57434fce02 100644 --- a/core/authentication/src/auth_common.c +++ b/core/authentication/src/auth_common.c @@ -154,6 +154,7 @@ int32_t AuthConvertConnInfo(ConnectOption *option, const ConnectionInfo *connInf return SOFTBUS_ERR; } option->socketOption.port = connInfo->socketInfo.port; + option->socketOption.protocol = connInfo->socketInfo.protocol; break; } default: { @@ -177,6 +178,7 @@ int32_t ConvertAuthConnInfoToOption(const AuthConnInfo *info, ConnectOption *opt return SOFTBUS_MEM_ERR; } option->socketOption.port = info->info.ipInfo.port; + option->socketOption.protocol = LNN_PROTOCOL_IP; break; case AUTH_LINK_TYPE_BR: option->type = CONNECT_BR; @@ -201,6 +203,7 @@ int32_t ConvertAuthConnInfoToOption(const AuthConnInfo *info, ConnectOption *opt return SOFTBUS_MEM_ERR; } option->socketOption.port = info->info.ipInfo.port; + option->socketOption.protocol = LNN_PROTOCOL_IP; option->socketOption.moduleId = AUTH_P2P; break; default: @@ -254,7 +257,7 @@ bool CompareConnectOption(const ConnectOption *option1, const ConnectOption *opt } switch (option1->type) { case CONNECT_TCP: - if (option2->type == CONNECT_TCP && + if (option2->type == CONNECT_TCP && option2->socketOption.protocol == option1->socketOption.protocol && strcmp(option1->socketOption.addr, option2->socketOption.addr) == 0) { return true; } diff --git a/core/authentication/src/auth_manager.c b/core/authentication/src/auth_manager.c index 7e8b9c11d7..5c1d36d0bf 100644 --- a/core/authentication/src/auth_manager.c +++ b/core/authentication/src/auth_manager.c @@ -308,7 +308,7 @@ static bool CheckConnectionInfo(const ConnectOption *option, const ConnectionInf { switch (option->type) { case CONNECT_TCP: { - if (info->type == CONNECT_TCP && + if (info->type == CONNECT_TCP && option->socketOption.protocol == info->socketInfo.protocol && strcmp(option->socketOption.addr, info->socketInfo.addr) == 0) { return true; } @@ -1351,6 +1351,7 @@ int32_t CreateServerIpAuth(int32_t cfd, const char *ip, int32_t port) return SOFTBUS_ERR; } option.socketOption.port = port; + option.socketOption.protocol = LNN_PROTOCOL_IP; auth->option = option; ListNodeInsert(&g_authServerHead, &auth->node); (void)SoftBusMutexUnlock(&g_authLock); diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index 07f15205fc..eb56a8f965 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -25,7 +25,7 @@ #include "softbus_datahead_transform.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #define AUTH_DEFAULT_PORT (-1) #define AUTH_HEART_TIME (10 * 60) @@ -35,13 +35,14 @@ static SoftbusBaseListener g_ethListener = {0}; int32_t AuthOpenTcpChannel(const ConnectOption *option, bool isNonBlock) { char localIp[IP_MAX_LEN] = {0}; - if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, localIp, IP_MAX_LEN) != SOFTBUS_OK) { + if (LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, localIp, sizeof(localIp)) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth get local ip failed"); return SOFTBUS_ERR; } - int fd = OpenTcpClientSocket(option->socketOption.addr, localIp, option->socketOption.port, isNonBlock); + + int fd = OpenClientSocket(option, localIp, isNonBlock); if (fd < 0) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth OpenTcpClientSocket failed"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth OpenClientSocket failed"); return SOFTBUS_ERR; } if (AddTrigger(AUTH, fd, isNonBlock ? WRITE_TRIGGER : READ_TRIGGER) != SOFTBUS_OK) { @@ -173,7 +174,7 @@ static void AuthIpDataProcess(int32_t fd, const ConnPktHead *head) data = ipData; remainLen = head->len; do { - len = RecvTcpData(fd, data, remainLen, 0); + len = ConnRecvSocketData(fd, data, remainLen, 0); if (len <= 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth recv data len not correct, len %d", len); break; @@ -220,8 +221,12 @@ static int32_t TrySyncDeviceUuid(int32_t fd) return SOFTBUS_OK; } -static int32_t AuthOnDataEvent(int32_t events, int32_t fd) +static int32_t AuthOnDataEvent(ListenerModule module, int32_t events, int32_t fd) { + if (module != AUTH) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid module %d", __func__, module); + return SOFTBUS_INVALID_PARAM; + } if (events == SOFTBUS_SOCKET_OUT) { return TrySyncDeviceUuid(fd); } else if (events != SOFTBUS_SOCKET_IN) { @@ -231,11 +236,11 @@ static int32_t AuthOnDataEvent(int32_t events, int32_t fd) ssize_t len; ConnPktHead head = {0}; - len = RecvTcpData(fd, (void *)&head, headSize, 0); + len = ConnRecvSocketData(fd, (void *)&head, headSize, 0); UnpackConnPktHead(&head); if (len < (int32_t)headSize) { if (len < 0) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth RecvTcpData failed, DelTrigger"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnRecvSocketData failed, DelTrigger"); (void)DelTrigger(AUTH, fd, READ_TRIGGER); AuthNotifyDisconn(fd); } @@ -301,9 +306,9 @@ int32_t AuthSocketSendData(AuthManager *auth, const AuthDataHead *head, const ui SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "auth start post eth data, authId is %" PRId64 ", fd is %d, moduleId is %d, len is %u", auth->authId, auth->fd, head->module, len); - ssize_t byte = SendTcpData(auth->fd, connPostData, postDataLen, 0); + ssize_t byte = ConnSendSocketData(auth->fd, connPostData, postDataLen, 0); if (byte != (ssize_t)postDataLen) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "SendTcpData failed"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "ConnSendSocketData failed"); SoftBusFree(connPostData); return SOFTBUS_ERR; } @@ -311,17 +316,27 @@ int32_t AuthSocketSendData(AuthManager *auth, const AuthDataHead *head, const ui return SOFTBUS_OK; } -static int32_t AuthOnConnectEvent(int32_t events, int32_t cfd, const char *ip) +static int32_t AuthOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const ConnectOption *clientAddr) { + if (module != AUTH) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid module %d", __func__, module); + return SOFTBUS_INVALID_PARAM; + } if (events == SOFTBUS_SOCKET_EXCEPTION) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth Exception occurred"); return SOFTBUS_ERR; } - if (cfd < 0 || ip == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid parameter"); + if (cfd < 0 || clientAddr == NULL) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid parameter", __func__); return SOFTBUS_INVALID_PARAM; } - int32_t port = GetTcpSockPort(cfd); + + const SocketInterface* socketInterface = GetSocketInterface(LNN_PROTOCOL_IP); + if(socketInterface == NULL) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!type=%d", LNN_PROTOCOL_IP); + return SOFTBUS_ERR; + } + int32_t port = socketInterface->GetSockPort(cfd); if (port <= 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth GetTcpSockPort failed"); return SOFTBUS_ERR; @@ -330,7 +345,7 @@ static int32_t AuthOnConnectEvent(int32_t events, int32_t cfd, const char *ip) SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth AddTrigger failed"); return SOFTBUS_ERR; } - if (CreateServerIpAuth(cfd, ip, port) != SOFTBUS_OK) { + if (CreateServerIpAuth(cfd, clientAddr->socketOption.addr, port) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth CreateServerIpAuth failed"); AuthCloseTcpFd(cfd); return SOFTBUS_ERR; @@ -380,7 +395,7 @@ int32_t OpenAuthServer(void) void AuthCloseTcpFd(int32_t fd) { (void)DelTrigger(AUTH, fd, RW_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); } void CloseAuthServer(void) @@ -389,5 +404,4 @@ void CloseAuthServer(void) if (StopBaseListener(AUTH) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth StopBaseListener failed"); } - DestroyBaseListener(AUTH); } diff --git a/core/bus_center/utils/src/lnn_connection_addr_utils.c b/core/bus_center/utils/src/lnn_connection_addr_utils.c index b621484df9..c40702997e 100644 --- a/core/bus_center/utils/src/lnn_connection_addr_utils.c +++ b/core/bus_center/utils/src/lnn_connection_addr_utils.c @@ -71,6 +71,7 @@ bool LnnConvertAddrToOption(const ConnectionAddr *addr, ConnectOption *option) return false; } option->socketOption.port = addr->info.ip.port; + option->socketOption.protocol = LNN_PROTOCOL_IP; return true; } SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "not supported type: %d", addr->type); @@ -102,6 +103,10 @@ bool LnnConvertOptionToAddr(ConnectionAddr *addr, const ConnectOption *option, C return true; } if (option->type == CONNECT_TCP) { + if(option->socketOption.protocol != LNN_PROTOCOL_IP) { + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "only ip is supportted"); + return false; + } addr->type = hintType; if (strncpy_s(addr->info.ip.ip, IP_LEN, option->socketOption.addr, strlen(option->socketOption.addr)) != EOK) { diff --git a/core/connection/interface/softbus_tcp_socket.h b/core/connection/common/include/softbus_tcp_socket.h similarity index 84% rename from core/connection/interface/softbus_tcp_socket.h rename to core/connection/common/include/softbus_tcp_socket.h index d012f2bb05..1da4325470 100644 --- a/core/connection/interface/softbus_tcp_socket.h +++ b/core/connection/common/include/softbus_tcp_socket.h @@ -22,6 +22,7 @@ #include #include "softbus_adapter_errcode.h" +#include "softbus_protocol_def.h" #include "softbus_socket.h" #ifdef __cplusplus @@ -30,9 +31,7 @@ extern "C" { #endif #endif -int32_t OpenTcpServerSocket(const char *ip, int32_t port); -int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, bool isNonBlock); -int32_t GetTcpSockPort(int32_t fd); +const SocketInterface *GetTcpProtocol(void); int32_t SetIpTos(int fd, uint32_t tos); diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index 09e997a0af..a54d9eac19 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -39,18 +39,17 @@ #define THREADPOOL_THREADNUM 1 #define THREADPOOL_QUEUE_NUM 10 -typedef enum { - LISTENER_IDLE, - LISTENER_PREPARED, - LISTENER_RUNNING, - LISTENER_ERROR, -} ListenerStatus; - typedef struct { ListNode node; int32_t fd; } FdNode; +enum BaseListenerStatus { + LISTENER_IDLE = 0, + LISTENER_RUNNING, + LISTENER_CLOSEING, +}; + typedef struct { ListNode node; int32_t listenFd; @@ -58,13 +57,13 @@ typedef struct { int32_t listenPort; int32_t fdCount; ModeType modeType; - ListenerStatus status; + enum BaseListenerStatus status; } SoftbusBaseListenerInfo; typedef struct { ListenerModule module; SoftbusBaseListener *listener; - SocketInterface *socketIf; + const SocketInterface *socketIf; SoftbusBaseListenerInfo info; uint32_t ref; SoftBusMutex lock; @@ -73,6 +72,10 @@ typedef struct { static SoftbusListenerNode *g_listenerList[UNUSE_BUTT] = {0}; static SoftBusMutex g_listenerListLock; + +static SoftBusMutex g_threadLock; +static int32_t g_threadRefCount = 0; + static ThreadPool *g_threadPool = NULL; static SoftBusFdSet g_readSet; static SoftBusFdSet g_writeSet; @@ -80,10 +83,12 @@ static SoftBusFdSet g_exceptSet; static int32_t g_maxFd; static SoftBusMutex g_fdSetLock; -static void ResetBaseListener(SoftbusListenerNode* node); +static void ReleaseListenerSockets(SoftbusListenerNode* node); static void UpdateMaxFd(void); static void ClearListenerFdList(const ListNode *cfdList); static void InitListenerInfo(SoftbusBaseListenerInfo *listenerInfo); +static int32_t ShutdownBaseListener(SoftbusListenerNode *node); +static int32_t StopListenerThread(SoftbusListenerNode *node); static SoftbusListenerNode* RequestListenerNode(ListenerModule module) { if (module >= UNUSE_BUTT) { @@ -98,13 +103,17 @@ static SoftbusListenerNode* RequestListenerNode(ListenerModule module) { SoftbusListenerNode *node = g_listenerList[module]; do { - if(node != NULL) { + if(node == NULL) { + break; + } + if(node->info.status == LISTENER_CLOSEING) { + node = NULL; break; } ret = SoftBusMutexLock(&node->lock); if(ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock node failed!.", __func__); - SoftBusMutexUnlock(&node->lock); + node = NULL; break; } node->ref++; @@ -115,18 +124,17 @@ static SoftbusListenerNode* RequestListenerNode(ListenerModule module) { return node; } -static void ResetBaseListener(SoftbusListenerNode* node) +static void ReleaseListenerSockets(SoftbusListenerNode* node) { if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return; } if (node->info.listenFd >= 0) { - TcpShutDown(node->info.listenFd); + ConnShutdownSocket(node->info.listenFd); } node->info.listenFd = -1; node->info.listenPort = -1; - node->info.status = LISTENER_IDLE; node->info.modeType = UNSET_MODE; node->info.fdCount = 0; ClearListenerFdList(&(node->info.node)); @@ -135,16 +143,35 @@ static void ResetBaseListener(SoftbusListenerNode* node) } // Node: get g_listenerListLock first -static int32_t DoReleaseListener(ListenerModule module) +static int32_t ReleaseListenerRef(ListenerModule module) { SoftbusListenerNode *node = g_listenerList[module]; + if(node == NULL) { + return SOFTBUS_NOT_FIND; + } int32_t ret = SoftBusMutexLock(&node->lock); if (ret != SOFTBUS_OK) { SoftBusMutexUnlock(&node->lock); return ret; } node->ref--; - SoftBusMutexUnlock(&node->lock); + + if(node->ref == 0) { + g_listenerList[module] = NULL; + + if (node->listener != NULL) { + SoftBusFree(node->listener); + node = NULL; + } + ReleaseListenerSockets(node); + (void)StopListenerThread(node); + (void)SoftBusMutexUnlock(&node->lock); + (void)SoftBusMutexDestroy(&node->lock); + SoftBusFree(node); + } else { + (void)SoftBusMutexUnlock(&node->lock); + } + return SOFTBUS_OK; } @@ -159,7 +186,7 @@ static void ReleaseListenerNode(SoftbusListenerNode *node) { return; } - ret = DoReleaseListener(node->module); + ret = ReleaseListenerRef(node->module); if(ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: release node failed!.", __func__); } @@ -169,7 +196,6 @@ static void ReleaseListenerNode(SoftbusListenerNode *node) { // Node: get g_listenerListLock first static int32_t CreateSpecifiedListenerModule(ListenerModule module) { - SoftbusListenerNode *node = (SoftbusListenerNode *)SoftBusCalloc(sizeof(SoftbusListenerNode)); if (node == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:oom!", __func__); @@ -219,6 +245,14 @@ int32_t InitBaseListener(void) return ret; } + ret = SoftBusMutexInit(&g_threadLock, NULL); + if ( ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_threadLock init failed.ret=%" PRId32, ret); + (void)SoftBusMutexDestroy(&g_listenerListLock); + (void)SoftBusMutexDestroy(&g_fdSetLock); + return ret; + } + g_threadPool = ThreadPoolInit(THREADPOOL_THREADNUM, THREADPOOL_QUEUE_NUM); if (g_threadPool == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Init thread pool failed."); @@ -246,8 +280,18 @@ int32_t InitBaseListener(void) void DeinitBaseListener(void) { - // todo: ADD RELEASE here - int32_t ret = SOFTBUS_OK; + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); + return; + } + + for (uint32_t i = 0; i < UNUSE_BUTT; i++) { + (void)ShutdownBaseListener(g_listenerList[i]); + (void)ReleaseListenerRef((ListenerModule)i); + g_listenerList[i] = NULL; + } + if(g_threadPool != NULL) { ret = ThreadPoolDestroy(g_threadPool); if(ret != SOFTBUS_OK) { @@ -255,8 +299,10 @@ void DeinitBaseListener(void) } } - SoftBusMutexDestroy(&g_listenerListLock); - SoftBusMutexDestroy(&g_fdSetLock); + (void)SoftBusMutexUnlock(&g_listenerListLock); + (void)SoftBusMutexDestroy(&g_listenerListLock); + (void)SoftBusMutexDestroy(&g_fdSetLock); + (void)SoftBusMutexDestroy(&g_threadLock); } static int32_t FdCopy(const SoftBusFdSet *dest, const SoftBusFdSet *src) @@ -343,15 +389,14 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * return SOFTBUS_INVALID_PARAM; } - const SocketInterface* socketIf = GetSocketInterface(info->socketOption.protocol); - if(socketIf == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no such protocol(%d)", info->socketOption.protocol); + if(node->socketIf == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no protocol inited!"); return SOFTBUS_INVALID_PARAM; } int32_t ret = SOFTBUS_OK; do { - int32_t rc = socketIf->OpenServerSocket(info); + int32_t rc = node->socketIf->OpenServerSocket(info); if (rc < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpServer failed, rc=%d", rc); return SOFTBUS_TCP_SOCKET_ERR; @@ -360,22 +405,22 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * rc = SoftBusSocketListen(node->info.listenFd, DEFAULT_BACKLOG); if (rc != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listen failed, rc=%d", rc); - ResetBaseListener(node); + ReleaseListenerSockets(node); ret = SOFTBUS_TCP_SOCKET_ERR; break; } node->info.fdCount = 1; - node->info.listenPort = socketIf->GetSockPort(node->info.listenFd); + node->info.listenPort = node->socketIf->GetSockPort(node->info.listenFd); if (strcpy_s(node->info.addr, sizeof(node->info.addr), info->socketOption.addr) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy addr failed"); - ResetBaseListener(node); + ReleaseListenerSockets(node); ret = SOFTBUS_MEM_ERR; break; } if (node->info.listenPort < 0) { SoftBusLog( SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "GetSockPort failed, listenPort_=%d", node->info.listenPort); - ResetBaseListener(node); + ReleaseListenerSockets(node); ret = SOFTBUS_ERR; break; } @@ -383,7 +428,7 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - ResetBaseListener(node); + ReleaseListenerSockets(node); return SOFTBUS_ERR; } SoftBusSocketFdSet(node->info.listenFd, &g_readSet); @@ -418,7 +463,7 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) int32_t cfd; ConnectOption clientAddr = {0}; int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(node->socketIf->AcceptClient(fd, &clientAddr, &cfd)); - if (ret < 0) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, cfd=%d, module=%d, fd=%d", cfd, node->module, fd); break; @@ -603,23 +648,109 @@ static int32_t SelectThread(void) } } -static int32_t StartThread(ListenerModule module, ModeType modeType) +static int32_t StopListenerThread(SoftbusListenerNode *node) { - SoftbusBaseListenerInfo *listenerInfo = &g_listenerList[module]->info; - listenerInfo->modeType = modeType; - listenerInfo->status = LISTENER_RUNNING; + int32_t ret = SoftBusMutexLock(&node->lock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed!ret=%" PRId32, __func__, ret); + return ret; + } + + do { + if(node->info.status != LISTENER_RUNNING) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:node not running.status=%d", __func__, node->info.status); + break; + } + + ret = SoftBusMutexLock(&g_threadLock); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock g_threadLock failed!ret=%" PRId32, __func__, ret); + break; + } + + --g_threadRefCount; + + if(g_threadRefCount <= 0) { + ret = ThreadPoolRemoveJob(g_threadPool, (uintptr_t)0); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:remove job failed!ret=%" PRId32, __func__, ret); + (void)SoftBusMutexUnlock(&g_threadLock); + break; + } + } + + (void)SoftBusMutexUnlock(&g_threadLock); - return ThreadPoolAddJob(g_threadPool, (int32_t(*)(void *))SelectThread, - NULL, PERSISTENT, (uintptr_t)0); + node->info.status = LISTENER_IDLE; + node->info.modeType = UNSET_MODE; + + } while(false); + (void)SoftBusMutexUnlock(&node->lock); + return ret; } -static int32_t PrepareBaseListener(SoftbusListenerNode *node, ModeType modeType) +static int32_t StartListenerThread(SoftbusListenerNode *node, ModeType modeType) { - int ret = StartThread(node->module, modeType); - if (ret != SOFTBUS_OK && ret != SOFTBUS_ALREADY_EXISTED) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "StartThread failed"); - return SOFTBUS_ERR; + int32_t ret = SoftBusMutexLock(&node->lock); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed!ret=%" PRId32, __func__, ret); + return ret; } + + do { + if (node->info.status != LISTENER_IDLE) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad status(%d)", __func__, node->info.status); + ret = SOFTBUS_ERR; + break; + } + + ret = SoftBusMutexLock(&g_threadLock); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock g_threadLock failed!ret=%" PRId32, __func__, ret); + break; + } + + if (g_threadRefCount > 0) { + g_threadRefCount++; + (void)SoftBusMutexUnlock(&g_threadLock); + break; + } + + ret = ThreadPoolAddJob(g_threadPool, (int32_t(*)(void *))SelectThread, NULL, PERSISTENT, (uintptr_t)0); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:start thread failed!ret=%" PRId32, __func__, ret); + (void)SoftBusMutexUnlock(&g_threadLock); + break; + } + + g_threadRefCount++; + (void)SoftBusMutexUnlock(&g_threadLock); + + node->info.modeType = modeType; + node->info.status = LISTENER_RUNNING; + } while (false); + + (void)SoftBusMutexUnlock(&node->lock); + return ret; +} + +static int32_t ShutdownBaseListener(SoftbusListenerNode *node) { + if(node == NULL) { + return SOFTBUS_NOT_FIND; + } + + int32_t ret = SoftBusMutexLock(&node->lock); + if (ret != SOFTBUS_OK) { + SoftBusMutexUnlock(&node->lock); + return ret; + } + + ret = StopListenerThread(node); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: stop listener failed!ret=%" PRId32 , __func__, ret); + } + node->info.status = LISTENER_CLOSEING; + SoftBusMutexUnlock(&node->lock); return SOFTBUS_OK; } @@ -740,8 +871,7 @@ int32_t StartBaseClient(ListenerModule module) ret = SOFTBUS_ERR; break; } - node->info.status = LISTENER_PREPARED; - ret = PrepareBaseListener(node, CLIENT_MODE); + ret = StartListenerThread(node, CLIENT_MODE); SoftBusLog( SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "StartBaseClient %s", (ret == SOFTBUS_OK) ? "SUCCESS" : "FAILED"); } while (false); @@ -770,18 +900,25 @@ int32_t StartBaseListener(const LocalListenerInfo *info) break; } if (node->info.status != LISTENER_IDLE) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status.status=%d", node->info.status); + ret = SOFTBUS_ERR; + break; + } + node->socketIf = GetSocketInterface(info->socketOption.protocol); + if(node->socketIf == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no such protocol.protocol=%d", info->socketOption.protocol); ret = SOFTBUS_ERR; break; } ret = InitListenFd(node, info); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitListenFd failed"); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitListenFd failed!ret=%" PRId32, ret); break; } - node->info.status = LISTENER_PREPARED; - ret = PrepareBaseListener(node, SERVER_MODE); + ret = StartListenerThread(node, SERVER_MODE); if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Start listener thread failed!ret=%" PRId32, ret); + ReleaseListenerSockets(node); break; } } while (false); @@ -880,24 +1017,48 @@ int32_t StopBaseListener(ListenerModule module) int32_t ret = SOFTBUS_OK; do { - if (node->info.status != LISTENER_RUNNING) { - break; - } if (node->info.listenFd > 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "del listen fd from readSet, fd = %d, module = %d.", node->info.listenFd, module); DelTriggerFromSet(node->info.listenFd, READ_TRIGGER); - TcpShutDown(node->info.listenFd); + ConnShutdownSocket(node->info.listenFd); UpdateMaxFd(); } node->info.listenFd = -1; - }while(false); - node->info.status = LISTENER_IDLE; + + ret = StopListenerThread(node); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "stop listen thread failed!ret = %" PRId32 ", module = %d.", + ret, module); + break; + } + } while (false); SoftBusMutexUnlock(&node->lock); ReleaseListenerNode(node); return ret; } +static int32_t WaitBaseListenerDestroy(ListenerModule module, int32_t waitTimeOut) { + const int32_t waitInterval = 100; + while(waitTimeOut > 0) { + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + return SOFTBUS_LOCK_ERR; + } + + if(g_listenerList[module] != NULL) { + SoftBusMutexUnlock(&g_listenerListLock); + SoftBusSleepMs(waitInterval); + waitTimeOut -= waitInterval; + continue; + } + (void)SoftBusMutexUnlock(&g_listenerListLock); + return SOFTBUS_OK; + } + return SOFTBUS_TIMOUT; +} + void DestroyBaseListener(ListenerModule module) { if(module >= UNUSE_BUTT) { @@ -911,45 +1072,25 @@ void DestroyBaseListener(ListenerModule module) return; } - ret = DoReleaseListener(module); + ret = ShutdownBaseListener(g_listenerList[module]); if(ret != SOFTBUS_OK) { (void) SoftBusMutexUnlock(&g_listenerListLock); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:release listener failed!ret=%" PRId32, __func__, ret); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:shutdown listener failed!ret=%" PRId32, __func__, ret); g_listenerList[module] = NULL; return; } - SoftbusListenerNode *node = g_listenerList[module]; - g_listenerList[module] = NULL; - + ret = ReleaseListenerRef(module); + if(ret != SOFTBUS_OK) { + (void) SoftBusMutexUnlock(&g_listenerListLock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:release listener failed!ret=%" PRId32, __func__, ret); + g_listenerList[module] = NULL; + return; + } (void) SoftBusMutexUnlock(&g_listenerListLock); - int32_t waitTime = 3000; - const int32_t waitInterval = 100; - while(waitTime > 0) { - ret = SoftBusMutexLock(&node->lock); - if(ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - break; - } - - if(node->ref > 0) { - SoftBusSleepMs(waitInterval); - waitTime -= waitInterval; - SoftBusMutexUnlock(&node->lock); - continue; - } - - if (node->listener != NULL) { - SoftBusFree(node->listener); - node = NULL; - } - ResetBaseListener(node); - (void)SoftBusMutexUnlock(&node->lock); - (void)SoftBusMutexDestroy(&node->lock); - SoftBusFree(node); - } - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " success", __func__, module); + ret = WaitBaseListenerDestroy(module, 30000); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " finished. ret=%" PRId32, __func__, module, ret); } diff --git a/core/connection/common/src/softbus_socket.c b/core/connection/common/src/softbus_socket.c index c1d5c7f9b5..9250b581b4 100644 --- a/core/connection/common/src/softbus_socket.c +++ b/core/connection/common/src/softbus_socket.c @@ -15,14 +15,16 @@ #include "softbus_socket.h" +#include #include +#include #include -#include #include "softbus_adapter_errcode.h" #include "softbus_adapter_socket.h" #include "softbus_errcode.h" #include "softbus_log.h" +#include "softbus_tcp_socket.h" #define MAX_SOCKET_TYPE 5 #define SEND_BUF_SIZE 0x200000 // 2M @@ -30,41 +32,89 @@ #define USER_TIMEOUT_MS 500000 // 500000us static const SocketInterface *g_socketInterfaces[MAX_SOCKET_TYPE] = {0}; +static SoftBusMutex g_socketsMutex; -int32_t RegistSocketType(const SocketInterface *interface) +int32_t RegistSocketProtocol(const SocketInterface *interface) { if (interface == NULL || interface->GetSockPort == NULL || interface->OpenClientSocket == NULL || interface->OpenServerSocket == NULL || interface->AcceptClient == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Bad socket interface!"); return SOFTBUS_ERR; } + int ret = SoftBusMutexLock(&g_socketsMutex); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); + return ret; + } + + ret = SOFTBUS_ERR; for (uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { if (g_socketInterfaces[i] == NULL) { g_socketInterfaces[i] = interface; - return SOFTBUS_OK; + ret = SOFTBUS_OK; + break; } } - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "socket type list is full!"); - return SOFTBUS_ERR; -} - -void UnregistSocketType(const SocketInterface* interface) { - for(uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { - if(g_socketInterfaces[i] == interface) { - g_socketInterfaces[i] = NULL; - return; - } + (void) SoftBusMutexUnlock(&g_socketsMutex); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "socket type list is full!"); } + return ret; } const SocketInterface *GetSocketInterface(ProtocolType protocolType) { + int ret = SoftBusMutexLock(&g_socketsMutex); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); + return NULL; + } + const SocketInterface *result = NULL; for (uint8_t i = 0; i < MAX_SOCKET_TYPE; i++) { if (g_socketInterfaces[i] != NULL && g_socketInterfaces[i]->type == protocolType) { - return g_socketInterfaces[i]; + result = g_socketInterfaces[i]; + break; } } - return NULL; + (void) SoftBusMutexUnlock(&g_socketsMutex); + return result; +} + +int32_t ConnInitSockets(void) { + int32_t ret = SoftBusMutexInit(&g_socketsMutex, NULL); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: init mutex failed!ret=%" PRId32, __func__, ret); + return ret; + } + + (void)memset_s(g_socketInterfaces, sizeof(g_socketInterfaces), 0, sizeof(g_socketInterfaces)); + + ret = RegistSocketProtocol(GetTcpProtocol()); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: regist tcp failed!!ret=%" PRId32, __func__, ret); + (void)SoftBusMutexDestroy(&g_socketsMutex); + return ret; + } + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: tcp registed!", __func__); + return ret; +} + +void ConnDeinitSockets(void) +{ + (void)memset_s(g_socketInterfaces, sizeof(g_socketInterfaces), 0, sizeof(g_socketInterfaces)); + (void)SoftBusMutexDestroy(&g_socketsMutex); +} + +int32_t OpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock) { + if(option == NULL || bindAddr == NULL) { + return SOFTBUS_ERR; + } + const SocketInterface* socketInterface = GetSocketInterface(option->socketOption.protocol); + if(socketInterface == NULL) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!protocol=%d", option->socketOption.protocol); + return SOFTBUS_ERR; + } + return socketInterface->OpenClientSocket(option, bindAddr, isNonBlock); } static int WaitEvent(int fd, short events, int timeout) @@ -132,7 +182,7 @@ int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock) return fcntl(fd, F_SETFL, flags); } -ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout) +ssize_t ConnSendSocketData(int32_t fd, const char *buf, size_t len, int32_t timeout) { if (fd < 0 || buf == NULL || len == 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d invalid params", fd); @@ -205,12 +255,12 @@ static ssize_t OnRecvData(int32_t fd, char *buf, size_t len, int timeout, int fl return rc; } -ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout) +ssize_t ConnRecvSocketData(int32_t fd, char *buf, size_t len, int32_t timeout) { return OnRecvData(fd, buf, len, timeout, 0); } -void CloseTcpFd(int32_t fd) +void ConnCloseSocket(int32_t fd) { if (fd >= 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "close fd=%d", fd); @@ -218,7 +268,7 @@ void CloseTcpFd(int32_t fd) } } -void TcpShutDown(int32_t fd) +void ConnShutdownSocket(int32_t fd) { if (fd >= 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "shutdown fd=%d", fd); diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index f8da144bc6..323d42d779 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -112,9 +112,18 @@ int32_t SetIpTos(int fd, uint32_t tos) return SOFTBUS_OK; } -int32_t OpenTcpServerSocket(const char *ip, int32_t port) +static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) { - if (ip == NULL || port < 0) { + if(option == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:null ptr!", __func__); + return -1; + } + if(option->type != CONNECT_TCP && option->type != CONNECT_P2P ) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad type!type=%d", __func__, option->type); + return -1; + } + if (option->socketOption.port < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad port!port=%d", __func__, option->socketOption.port); return -1; } @@ -127,19 +136,27 @@ int32_t OpenTcpServerSocket(const char *ip, int32_t port) } SetServerOption(fd); - ret = BindLocalIP(fd, ip, (uint16_t)port); + ret = BindLocalIP(fd, option->socketOption.addr, (uint16_t)option->socketOption.port); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); - TcpShutDown(fd); + ConnShutdownSocket(fd); return -1; } return fd; } -int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, bool isNonBlock) +int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool isNonBlock) { - if ((peerIp == NULL) || (port <= 0)) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClientSocket invalid para, port=%d", port); + if(option == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:null ptr!", __func__); + return -1; + } + if(option->type != CONNECT_TCP && option->type != CONNECT_P2P ) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad type!type=%d", __func__, option->type); + return -1; + } + if (option->socketOption.port <= 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClientSocket invalid para, port=%d", option->socketOption.port); return -1; } @@ -158,10 +175,18 @@ int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, SetClientOption(fd); if (myIp != NULL) { - ret = BindLocalIP(fd, myIp, 0); + const char* bindAddr = NULL; + if(strcmp(myIp, BIND_ADDR_ALL) == 0) { + bindAddr = "0.0.0.0"; + } else { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:using specified bind addr", __func__); + bindAddr = myIp; + } + + ret = BindLocalIP(fd, bindAddr, 0); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); - TcpShutDown(fd); + ConnShutdownSocket(fd); return -1; } } @@ -170,21 +195,19 @@ int32_t OpenTcpClientSocket(const char *peerIp, const char *myIp, int32_t port, SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "memset failed"); } addr.sinFamily = SOFTBUS_AF_INET; - SoftBusInetPtoN(SOFTBUS_AF_INET, peerIp, &addr.sinAddr); - addr.sinPort = SoftBusHtoNs((uint16_t)port); + SoftBusInetPtoN(SOFTBUS_AF_INET, option->socketOption.addr, &addr.sinAddr); + addr.sinPort = SoftBusHtoNs((uint16_t)option->socketOption.port); int rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketConnect(fd, (SoftBusSockAddr *)&addr, sizeof(addr))); if ((rc != SOFTBUS_ADAPTER_OK) && (rc != SOFTBUS_ADAPTER_SOCKET_EINPROGRESS) && (rc != SOFTBUS_ADAPTER_SOCKET_EAGAIN)) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d,connect rc=%d", fd, rc); - TcpShutDown(fd); + ConnShutdownSocket(fd); return -1; } return fd; } - - -int32_t GetTcpSockPort(int32_t fd) +static int32_t GetTcpSockPort(int32_t fd) { SoftBusSockAddrIn addr; int32_t addrLen = sizeof(addr); @@ -240,3 +263,38 @@ int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds) } return 0; } + +static int32_t AcceptTcpClient(int fd, ConnectOption *clientAddr, int *cfd) { + SoftBusSockAddrIn addr; + if (memset_s(&addr, sizeof(addr), 0, sizeof(addr)) != EOK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:memset failed", __func__); + return SOFTBUS_MEM_ERR; + } + uint32_t addrLen = sizeof(addr); + int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketAccept(fd, (SoftBusSockAddr *)&addr, (int32_t *)&addrLen, cfd)); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, ret=%" PRId32 "cfd=%d, fd=%d", ret, *cfd, fd); + return ret; + } + + if(clientAddr != NULL) { + clientAddr->type = CONNECT_TCP; + SoftBusInetNtoP(SOFTBUS_AF_INET, &addr.sinAddr, clientAddr->socketOption.addr, sizeof(clientAddr->socketOption.addr)); + clientAddr->socketOption.port = 0; + clientAddr->socketOption.moduleId = 0; + } + return SOFTBUS_OK; +} + +static SocketInterface g_ipSocketInterface = { + .name = "TCP", + .type = LNN_PROTOCOL_IP, + .GetSockPort = GetTcpSockPort, + .OpenClientSocket = OpenTcpClientSocket, + .OpenServerSocket = OpenTcpServerSocket, + .AcceptClient = AcceptTcpClient, +}; + +const SocketInterface *GetTcpProtocol(void) { + return &g_ipSocketInterface; +} diff --git a/core/connection/interface/softbus_conn_interface.h b/core/connection/interface/softbus_conn_interface.h index 47912cdd43..c881c057de 100644 --- a/core/connection/interface/softbus_conn_interface.h +++ b/core/connection/interface/softbus_conn_interface.h @@ -144,6 +144,7 @@ struct SocketOption { char addr[MAX_SOCKET_ADDR_LEN]; int32_t port; int32_t moduleId; /* For details, see {@link ListenerModule}. */ + ProtocolType protocol; }; typedef struct { diff --git a/core/connection/interface/softbus_socket.h b/core/connection/interface/softbus_socket.h index 63818782fe..42376b138a 100644 --- a/core/connection/interface/softbus_socket.h +++ b/core/connection/interface/softbus_socket.h @@ -58,15 +58,19 @@ typedef struct SocketInterface { int (*AcceptClient)(int fd, ConnectOption *clientAddr, int *cfd); } SocketInterface; +int32_t ConnInitSockets(void); +void ConnDeinitSockets(void); + const SocketInterface* GetSocketInterface(ProtocolType protocolType); -int32_t RegistSocketType(const SocketInterface* interface); -void UnregistSocketType(const SocketInterface* interface); +int32_t RegistSocketProtocol(const SocketInterface* interface); + +int32_t OpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock); -ssize_t SendTcpData(int32_t fd, const char *buf, size_t len, int32_t timeout); -ssize_t RecvTcpData(int32_t fd, char *buf, size_t len, int32_t timeout); -void CloseTcpFd(int32_t fd); -void TcpShutDown(int32_t fd); +ssize_t ConnSendSocketData(int32_t fd, const char *buf, size_t len, int32_t timeout); +ssize_t ConnRecvSocketData(int32_t fd, char *buf, size_t len, int32_t timeout); +void ConnCloseSocket(int32_t fd); +void ConnShutdownSocket(int32_t fd); int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds); int32_t ConnToggleNonBlockMode(int32_t fd, bool isNonBlock); diff --git a/core/connection/manager/softbus_conn_manager.c b/core/connection/manager/softbus_conn_manager.c index d9e614b5f8..abea87a74a 100644 --- a/core/connection/manager/softbus_conn_manager.c +++ b/core/connection/manager/softbus_conn_manager.c @@ -29,6 +29,7 @@ #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" +#include "softbus_socket.h" #include "softbus_tcp_connect_manager.h" #include "softbus_utils.h" @@ -446,7 +447,13 @@ int32_t ConnServerInit(void) return SOFTBUS_ERR; } - int32_t ret = InitBaseListener(); + int32_t ret = ConnInitSockets(); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnInitSockets failed!ret=%" PRId32 " \r\n", ret); + return ret; + } + + ret = InitBaseListener(); if(ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitBaseListener failed!ret=%" PRId32 " \r\n", ret); return ret; diff --git a/core/connection/tcp/src/softbus_tcp_connect_manager.c b/core/connection/tcp/src/softbus_tcp_connect_manager.c index 812b557770..9d3a12e162 100644 --- a/core/connection/tcp/src/softbus_tcp_connect_manager.c +++ b/core/connection/tcp/src/softbus_tcp_connect_manager.c @@ -28,7 +28,7 @@ #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_type_def.h" #include "softbus_utils.h" @@ -59,8 +59,8 @@ static ConnectFuncInterface g_tcpInterface; static int32_t AddTcpConnInfo(TcpConnInfoNode *item); static void DelTcpConnInfo(uint32_t connectionId); static void DelAllConnInfo(ListenerModule moduleId); -static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const char *ip); -static int32_t TcpOnDataEvent(int32_t events, int32_t fd); +static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const ConnectOption *clientAddr); +static int32_t TcpOnDataEvent(ListenerModule module, int32_t events, int32_t fd); int32_t TcpGetConnNum(void) { @@ -113,7 +113,7 @@ static void DelTcpConnInfo(uint32_t connectionId) LIST_FOR_EACH_ENTRY(item, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { if (item->connectionId == connectionId) { (void)DelTrigger(item->info.socketInfo.moduleId, item->info.socketInfo.fd, RW_TRIGGER); - TcpShutDown(item->info.socketInfo.fd); + ConnShutdownSocket(item->info.socketInfo.fd); ListDelete(&item->node); g_tcpConnInfoList->cnt--; (void)SoftBusMutexUnlock(&g_tcpConnInfoList->lock); @@ -153,13 +153,13 @@ static void DelTcpConnNode(uint32_t connectionId) return; } -static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const char *ip) +static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t cfd, const ConnectOption *clientAddr) { if (events == SOFTBUS_SOCKET_EXCEPTION) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Exception occurred"); return SOFTBUS_ERR; } - if (cfd < 0 || ip == NULL) { + if (cfd < 0 || clientAddr == NULL) { return SOFTBUS_INVALID_PARAM; } @@ -167,11 +167,17 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "recv p2p conned %d", cfd); if (ConnSetTcpKeepAlive(cfd, AUTH_P2P_KEEP_ALIVE_TIME) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "set keepalive fail"); - TcpShutDown(cfd); + ConnShutdownSocket(cfd); return SOFTBUS_ERR; } } + const SocketInterface* socketInterface = GetSocketInterface(clientAddr->socketOption.protocol); + if(socketInterface == NULL) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!protocol=%d", clientAddr->socketOption.protocol); + return SOFTBUS_ERR; + } + TcpConnInfoNode *tcpConnInfoNode = (TcpConnInfoNode *)SoftBusCalloc(sizeof(TcpConnInfoNode)); if (tcpConnInfoNode == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OnConnectEvent malloc TcpConnInfoNode"); @@ -182,10 +188,11 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t tcpConnInfoNode->info.isAvailable = true; tcpConnInfoNode->info.isServer = true; tcpConnInfoNode->info.type = CONNECT_TCP; - if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), ip) != EOK) { + if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), + clientAddr->socketOption.addr) != EOK) { goto EXIT; } - tcpConnInfoNode->info.socketInfo.port = GetTcpSockPort(cfd); + tcpConnInfoNode->info.socketInfo.port = socketInterface->GetSockPort(cfd); tcpConnInfoNode->info.socketInfo.fd = cfd; tcpConnInfoNode->info.socketInfo.moduleId = module; if (AddTrigger(module, cfd, READ_TRIGGER) != SOFTBUS_OK) { @@ -200,7 +207,7 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t EXIT: SoftBusFree(tcpConnInfoNode); (void)DelTrigger(module, cfd, READ_TRIGGER); - TcpShutDown(cfd); + ConnShutdownSocket(cfd); return SOFTBUS_ERR; } @@ -222,7 +229,7 @@ static char *RecvData(const ConnPktHead *head, int32_t fd, uint32_t len) goto EXIT; } while (recvLen < len) { - ssize_t n = RecvTcpData(fd, data + headSize + recvLen, len - recvLen, g_tcpTimeOut); + ssize_t n = ConnRecvSocketData(fd, data + headSize + recvLen, len - recvLen, g_tcpTimeOut); if (n < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "receiveData: error occurred![recvLen=%d][len=%d]", recvLen, len); @@ -265,7 +272,7 @@ int32_t TcpOnDataEventOut(int32_t fd) if (GetTcpInfoByFd(fd, &tcpInfo) != SOFTBUS_OK) { (void)DelTrigger(tcpInfo.info.socketInfo.moduleId, fd, WRITE_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "TcpOnDataEventSocketOut fail %d", fd); return SOFTBUS_ERR; } @@ -274,7 +281,7 @@ int32_t TcpOnDataEventOut(int32_t fd) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%d connect fail %d", fd, ret); tcpInfo.result.OnConnectFailed(tcpInfo.requestId, ret); (void)DelTrigger(tcpInfo.info.socketInfo.moduleId, fd, WRITE_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); DelTcpConnNode(tcpInfo.connectionId); return SOFTBUS_OK; } @@ -291,7 +298,7 @@ int32_t TcpOnDataEventIn(int32_t fd) uint32_t connectionId = CalTcpConnectionId(fd); ConnPktHead head; uint32_t headSize = sizeof(ConnPktHead); - ssize_t bytes = RecvTcpData(fd, (char *)&head, headSize, g_tcpTimeOut); + ssize_t bytes = ConnRecvSocketData(fd, (char *)&head, headSize, g_tcpTimeOut); UnpackConnPktHead(&head); if (bytes <= 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "TcpOnDataEvent Disconnect fd:%d", fd); @@ -311,8 +318,9 @@ int32_t TcpOnDataEventIn(int32_t fd) return SOFTBUS_OK; } -int32_t TcpOnDataEvent(int32_t events, int32_t fd) +int32_t TcpOnDataEvent(ListenerModule module, int32_t events, int32_t fd) { + (void)module; if (events == SOFTBUS_SOCKET_IN) { return TcpOnDataEventIn(fd); } @@ -341,7 +349,7 @@ static void DelAllConnInfo(ListenerModule moduleId) if (item->info.socketInfo.moduleId == (int32_t)moduleId) { (void)DelTrigger(moduleId, item->info.socketInfo.fd, RW_TRIGGER); ListDelete(&item->node); - TcpShutDown(item->info.socketInfo.fd); + ConnShutdownSocket(item->info.socketInfo.fd); g_tcpConnCallback->OnDisconnected(item->connectionId, &item->info); SoftBusFree(item); g_tcpConnInfoList->cnt--; @@ -381,7 +389,7 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const return SOFTBUS_INVALID_PARAM; } - int32_t fd = OpenTcpClientSocket(option->socketOption.addr, "0.0.0.0", (uint16_t)option->socketOption.port, false); + int32_t fd = OpenClientSocket(option, BIND_ADDR_ALL, false); if (fd < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClient failed."); result->OnConnectFailed(requestId, SOFTBUS_ERR); @@ -391,13 +399,13 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const TcpConnInfoNode *tcpConnInfoNode = (TcpConnInfoNode *)SoftBusCalloc(sizeof(TcpConnInfoNode)); if (tcpConnInfoNode == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "malloc TcpConnInfoNode failed"); - TcpShutDown(fd); + ConnShutdownSocket(fd); result->OnConnectFailed(requestId, SOFTBUS_MALLOC_ERR); return SOFTBUS_MALLOC_ERR; } if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), option->socketOption.addr) != EOK || memcpy_s(&tcpConnInfoNode->result, sizeof(ConnectResult), result, sizeof(ConnectResult)) != EOK) { - TcpShutDown(fd); + ConnShutdownSocket(fd); SoftBusFree(tcpConnInfoNode); result->OnConnectFailed(requestId, SOFTBUS_ERR); return SOFTBUS_ERR; @@ -413,13 +421,13 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const tcpConnInfoNode->info.socketInfo.fd = fd; tcpConnInfoNode->info.socketInfo.moduleId = option->socketOption.moduleId; if (AddTcpConnInfo(tcpConnInfoNode) != SOFTBUS_OK) { - TcpShutDown(fd); + ConnShutdownSocket(fd); SoftBusFree(tcpConnInfoNode); result->OnConnectFailed(requestId, SOFTBUS_ERR); return SOFTBUS_ERR; } if (AddTrigger(option->socketOption.moduleId, fd, WRITE_TRIGGER) != SOFTBUS_OK) { - TcpShutDown(fd); + ConnShutdownSocket(fd); DelTcpConnNode(connectionId); result->OnConnectFailed(requestId, SOFTBUS_ERR); return SOFTBUS_ERR; @@ -449,10 +457,12 @@ int32_t TcpDisconnectDeviceNow(const ConnectOption *option) } TcpConnInfoNode *item = NULL; TcpConnInfoNode *next = NULL; - LIST_FOR_EACH_ENTRY_SAFE(item, next, &g_tcpConnInfoList->list, TcpConnInfoNode, node) { - if (strcmp(option->socketOption.addr, item->info.socketInfo.addr) == 0) { + LIST_FOR_EACH_ENTRY_SAFE(item, next, &g_tcpConnInfoList->list, TcpConnInfoNode, node) + { + if (option->socketOption.protocol == item->info.socketInfo.protocol && + strcmp(option->socketOption.addr, item->info.socketInfo.addr) == 0) { (void)DelTrigger(item->info.socketInfo.moduleId, item->info.socketInfo.fd, RW_TRIGGER); - TcpShutDown(item->info.socketInfo.fd); + ConnShutdownSocket(item->info.socketInfo.fd); ListDelete(&item->node); g_tcpConnInfoList->cnt--; g_tcpConnCallback->OnDisconnected(item->connectionId, &item->info); @@ -496,7 +506,7 @@ int32_t TcpPostBytes(uint32_t connectionId, const char *data, int32_t len, int32 "TcpPostBytes failed, connectionId:%08x not found.", connectionId); return SOFTBUS_ERR; } - int32_t bytes = SendTcpData(fd, data, len, flag); + int32_t bytes = ConnSendSocketData(fd, data, len, flag); SoftBusFree((void*)data); if (bytes != len) { return SOFTBUS_TCPCONNECTION_SOCKET_ERR; @@ -544,7 +554,7 @@ static int32_t OnAuthP2pServerConnectEvent(int32_t events, int32_t cfd, const ch SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "recv p2p conned %d", cfd); if (ConnSetTcpKeepAlive(cfd, AUTH_P2P_KEEP_ALIVE_TIME) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "set keepalive fail"); - TcpShutDown(cfd); + ConnShutdownSocket(cfd); return SOFTBUS_ERR; } return TcpOnConnectEvent(AUTH_P2P, events, cfd, ip); @@ -609,7 +619,6 @@ int32_t TcpStopListening(const LocalListenerInfo *info) return ret; } DelAllConnInfo(moduleId); - DestroyBaseListener(moduleId); return SOFTBUS_OK; } diff --git a/core/frame/standard/init/src/softbus_server.cpp b/core/frame/standard/init/src/softbus_server.cpp index 8453ceec77..02252156bc 100644 --- a/core/frame/standard/init/src/softbus_server.cpp +++ b/core/frame/standard/init/src/softbus_server.cpp @@ -136,6 +136,7 @@ int32_t SoftBusServer::OpenAuthSession(const char *sessionName, const Connection return SOFTBUS_MEM_ERR; } connOpt.socketOption.port = static_cast(addrInfo->info.ip.port); + connOpt.socketOption.protocol = LNN_PROTOCOL_IP; break; case CONNECT_BLE: if (memcpy_s(connOpt.bleOption.bleMac, BT_MAC_LEN, addrInfo->info.ble.bleMac, BT_MAC_LEN) != EOK) { diff --git a/core/transmission/ipc/small/trans_client_proxy.c b/core/transmission/ipc/small/trans_client_proxy.c index b6409402f0..1af20832c3 100644 --- a/core/transmission/ipc/small/trans_client_proxy.c +++ b/core/transmission/ipc/small/trans_client_proxy.c @@ -23,7 +23,7 @@ #include "softbus_errcode.h" #include "softbus_ipc_def.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" static int32_t GetSvcIdentityByPkgName(const char *pkgName, SvcIdentity *svc) { diff --git a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_session.c b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_session.c index a8ffc8d114..a289f356e1 100644 --- a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_session.c +++ b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_session.c @@ -28,7 +28,7 @@ #include "softbus_proxychannel_manager.h" #include "softbus_proxychannel_message.h" #include "softbus_proxychannel_transceiver.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_transmission_interface.h" #include "softbus_utils.h" #include "trans_pending_pkt.h" @@ -852,7 +852,7 @@ static int32_t TransProxyLastSliceProcess(SliceProcessor *processor, const Slice static int TransProxySubPacketProc(const char *pkgName, int32_t channelId, const SliceHead *head, const char *data, uint32_t len) { - if (data == NULL || len <= 0) { + if (data == NULL || len == 0) { return SOFTBUS_INVALID_PARAM; } if (g_channelSliceProcessorList == NULL) { diff --git a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c index 349d0c5753..a71edf52ec 100644 --- a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c +++ b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_transceiver.c @@ -351,6 +351,7 @@ int32_t TransProxyGetConnectOption(uint32_t connectionId, ConnectOption *info) (void)memcpy_s(info->socketOption.addr, sizeof(info->socketOption.addr), connInfo.socketInfo.addr, sizeof(connInfo.socketInfo.addr)); info->socketOption.port = connInfo.socketInfo.port; + info->socketOption.protocol = connInfo.socketInfo.protocol; break; } default: { @@ -504,7 +505,8 @@ static int32_t TransGetConn(const ConnectOption *connInfo, ProxyConnInfo *proxyC } switch (connInfo->type) { case CONNECT_TCP: { - if (strcmp(connInfo->socketOption.addr, item->connInfo.socketOption.addr) == 0 && + if (connInfo->socketOption.protocol == item->connInfo.socketOption.protocol && + strcmp(connInfo->socketOption.addr, item->connInfo.socketOption.addr) == 0 && connInfo->socketOption.port == item->connInfo.socketOption.port) { find = true; } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c index ec020928a1..b23c708fb7 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_listener.c @@ -28,7 +28,7 @@ #include "softbus_errcode.h" #include "softbus_log.h" #include "softbus_message_open_channel.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "trans_tcp_direct_message.h" #include "trans_tcp_direct_sessionconn.h" @@ -151,13 +151,13 @@ static int32_t CreateSessionConnNode(ListenerModule module, int events, int fd, return SOFTBUS_OK; } -static int32_t OnConnectEvent(ListenerModule module, int events, int cfd, const char *ip) +static int32_t OnConnectEvent(ListenerModule module, int events, int cfd, const ConnectOption *clientAddr) { if (events == SOFTBUS_SOCKET_EXCEPTION) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "Exception occurred"); return SOFTBUS_ERR; } - if (cfd < 0 || ip == NULL) { + if (cfd < 0 || clientAddr == NULL) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param, cfd = %d", cfd); return SOFTBUS_INVALID_PARAM; } @@ -166,15 +166,15 @@ static int32_t OnConnectEvent(ListenerModule module, int events, int cfd, const int32_t ret = TransSrvAddDataBufNode(channelId, cfd); // fd != channelId if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "create srv data buf node failed."); - TcpShutDown(cfd); + ConnShutdownSocket(cfd); return ret; } - ret = CreateSessionConnNode(module, events, cfd, channelId, ip); + ret = CreateSessionConnNode(module, events, cfd, channelId, clientAddr->socketOption.addr); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "create session conn node fail, delete data buf node."); TransSrvDelDataBufNode(channelId); - TcpShutDown(cfd); + ConnShutdownSocket(cfd); return ret; } return SOFTBUS_OK; @@ -183,7 +183,7 @@ static int32_t OnConnectEvent(ListenerModule module, int events, int cfd, const static void CloseTcpDirectFd(int fd) { #ifndef __LITEOS_M__ - CloseTcpFd(fd); + ConnCloseSocket(fd); #else (void)fd; #endif @@ -193,7 +193,7 @@ static void TransProcDataRes(ListenerModule module, int32_t ret, int32_t channel { if (ret != SOFTBUS_OK) { DelTrigger(module, fd, READ_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); NotifyChannelOpenFailed(channelId); } else { CloseTcpDirectFd(fd); @@ -216,7 +216,7 @@ static int32_t OnDataEvent(ListenerModule module, int events, int fd) DelTrigger(conn->listenMod, fd, WRITE_TRIGGER); DelTrigger(conn->listenMod, fd, EXCEPT_TRIGGER); SoftBusFree(conn); - TcpShutDown(fd); + ConnShutdownSocket(fd); return SOFTBUS_ERR; } int32_t ret = SOFTBUS_ERR; @@ -239,7 +239,7 @@ static int32_t OnDataEvent(ListenerModule module, int events, int fd) if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "start verify session fail."); DelTrigger(conn->listenMod, fd, READ_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); NotifyChannelOpenFailed(conn->channelId); TransDelSessionConnById(conn->channelId); TransSrvDelDataBufNode(conn->channelId); @@ -247,34 +247,13 @@ static int32_t OnDataEvent(ListenerModule module, int events, int fd) } else if (events == SOFTBUS_SOCKET_EXCEPTION) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "exception occurred."); DelTrigger(conn->listenMod, fd, EXCEPT_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); TransDelSessionConnById(conn->channelId); TransSrvDelDataBufNode(conn->channelId); } SoftBusFree(conn); return ret; } -#if 0 -static int32_t OnConnectEventWifi(int32_t events, int32_t cfd, const char *ip) -{ - return OnConnectEvent(DIRECT_CHANNEL_SERVER_WIFI, events, cfd, ip); -} - -static int32_t OnDataEventWifi(int32_t events, int32_t fd) -{ - return OnDataEvent(events, fd); -} - -static int32_t OnConnectEventP2P(int32_t events, int32_t cfd, const char *ip) -{ - return OnConnectEvent(DIRECT_CHANNEL_SERVER_P2P, events, cfd, ip); -} - -static int32_t OnDataEventP2P(int32_t events, int32_t fd) -{ - return OnDataEvent(events, fd); -} -#endif int32_t TransTdcStartSessionListener(ListenerModule module, const LocalListenerInfo *info) { @@ -301,6 +280,5 @@ int32_t TransTdcStopSessionListener(ListenerModule module) { TransTdcStopSessionProc(); int32_t ret = StopBaseListener(module); - DestroyBaseListener(module); return ret; } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c index 96ea017562..794b4088ef 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_manager.c @@ -26,7 +26,7 @@ #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "trans_tcp_direct_callback.h" #include "trans_tcp_direct_message.h" #include "trans_tcp_direct_p2p.h" @@ -49,7 +49,7 @@ static void OnSesssionOpenFailProc(const SessionConn *node) if (fd >= 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "fd[%d] is shutdown", fd); DelTrigger(node->listenMod, fd, RW_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); } } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c index e88778e9b3..6f255c6a72 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_message.c @@ -29,7 +29,7 @@ #include "softbus_errcode.h" #include "softbus_log.h" #include "softbus_message_open_channel.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "trans_tcp_direct_callback.h" #include "trans_tcp_direct_manager.h" #include "trans_tcp_direct_sessionconn.h" @@ -224,9 +224,9 @@ static int32_t GetAuthConnectOption(int32_t channelId, uint32_t cipherFlag, Conn SoftBusFree(conn); return SOFTBUS_ERR; } - option->type = CONNECT_TCP; option->socketOption.port = conn->appInfo.peerData.port; + option->socketOption.protocol = LNN_PROTOCOL_IP; SoftBusFree(conn); return SOFTBUS_OK; } @@ -389,7 +389,7 @@ int32_t TransTdcPostBytes(int32_t channelId, TdcPacketHead *packetHead, const ch } int fd = conn->appInfo.fd; SoftBusFree(conn); - if (SendTcpData(fd, buffer, bufferLen, 0) != (int)bufferLen) { + if (ConnSendSocketData(fd, buffer, bufferLen, 0) != (int)bufferLen) { SoftBusFree(buffer); return SOFTBUS_ERR; } @@ -763,7 +763,7 @@ int32_t TransTdcSrvRecvData(ListenerModule module, int32_t channelId) SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "srv can not find data buf node."); return SOFTBUS_ERR; } - int32_t ret = RecvTcpData(node->fd, node->w, node->size - (node->w - node->data), 0); + int32_t ret = ConnRecvSocketData(node->fd, node->w, node->size - (node->w - node->data), 0); if (ret < 0) { SoftBusMutexUnlock(&g_tcpSrvDataList->lock); SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "recv tcp data fail."); diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c index 3a1ccae535..fe2d217e35 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c @@ -25,7 +25,7 @@ #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "trans_tcp_direct_json.h" #include "trans_tcp_direct_listener.h" #include "trans_tcp_direct_message.h" @@ -405,7 +405,24 @@ static int32_t OnVerifyP2pReply(int64_t authId, int64_t seq, const cJSON *json) SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "OnVerifyP2pReply peer wifi: ip, port=%d", conn->appInfo.peerData.port); - fd = OpenTcpClientSocket(conn->appInfo.peerData.ip, NULL, conn->appInfo.peerData.port, true); + ConnectOption options = { + .type = CONNECT_P2P, + .socketOption = { + .addr = {0}, + .port = conn->appInfo.peerData.port, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_CLIENT + } + }; + + ret = strcpy_s(options.socketOption.addr, sizeof(options.socketOption.addr), conn->appInfo.peerData.ip); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "%s: strcpy_s failed!ret = %" PRId32, __func__, ret); + ReleaseSessonConnLock(); + goto EXIT_ERR; + } + + fd = OpenClientSocket(&options, BIND_ADDR_ALL, true); if (fd <= 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OnVerifyP2pReply conn fail: fd=%d", fd); ReleaseSessonConnLock(); diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c index fd477bdd5a..db84ce0910 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c @@ -20,23 +20,10 @@ #include "softbus_adapter_mem.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "trans_tcp_direct_message.h" #include "trans_tcp_direct_sessionconn.h" -static int32_t OpenConnTcp(const char *peerIp, int32_t peerPort) -{ - if (peerIp == NULL || peerPort < 0) { - return SOFTBUS_INVALID_PARAM; - } - int32_t fd = OpenTcpClientSocket(peerIp, NULL, peerPort, false); - if (fd < 0) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenConnTcp connect fail: fd=%d", fd); - return DISABLE_FD; - } - return fd; -} - int32_t OpenTcpDirectChannel(const AppInfo *appInfo, const ConnectOption *connInfo, int32_t *channelId) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpDirectChannel"); @@ -51,7 +38,7 @@ int32_t OpenTcpDirectChannel(const AppInfo *appInfo, const ConnectOption *connIn int32_t newchannelId = newConn->channelId; (void)memcpy_s(&newConn->appInfo, sizeof(AppInfo), appInfo, sizeof(AppInfo)); - int32_t fd = OpenConnTcp(connInfo->socketOption.addr, connInfo->socketOption.port); + int32_t fd = OpenClientSocket(connInfo, BIND_ADDR_ALL, false); if (fd < 0) { SoftBusFree(newConn); SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpDirectChannel connect fail"); @@ -77,6 +64,6 @@ int32_t OpenTcpDirectChannel(const AppInfo *appInfo, const ConnectOption *connIn return SOFTBUS_ERR; } *channelId = newchannelId; - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpDirectChannel end: channelId=%d", newchannelId); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "OpenTcpDirectChannel end: channelId=%d", newchannelId); return SOFTBUS_OK; } \ No newline at end of file diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c index 03dc55dc62..3f6a1d5e6e 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c @@ -25,7 +25,7 @@ #include "softbus_base_listener.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_type_def.h" #include "trans_pending_pkt.h" @@ -121,7 +121,7 @@ void TransTdcReleaseFd(int32_t fd) return; } DelTrigger(DIRECT_CHANNEL_CLIENT, fd, READ_TRIGGER); - TcpShutDown(fd); + ConnShutdownSocket(fd); } int32_t TransTdcStopRead(int32_t fd) { diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c index 72df1b847c..06205171c9 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_manager.c @@ -24,7 +24,7 @@ #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_utils.h" #include "trans_pending_pkt.h" #include "trans_server_proxy.h" diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_message.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_message.c index b386dac755..6c2c13fdd5 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_message.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_message.c @@ -28,6 +28,7 @@ #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" +#include "softbus_socket.h" #include "softbus_tcp_socket.h" #include "softbus_utils.h" #include "trans_pending_pkt.h" @@ -169,7 +170,7 @@ static int32_t TransTdcProcessPostData(const TcpDirectChannelInfo *channel, cons SoftBusFree(buf); return SOFTBUS_TCP_SOCKET_ERR; } - ssize_t ret = SendTcpData(channel->detail.fd, buf, outLen + DC_DATA_HEAD_SIZE, 0); + ssize_t ret = ConnSendSocketData(channel->detail.fd, buf, outLen + DC_DATA_HEAD_SIZE, 0); if (ret != (ssize_t)outLen + DC_DATA_HEAD_SIZE) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "failed to send tcp data. ret: %d", ret); SoftBusFree(buf); @@ -474,7 +475,7 @@ int32_t TransTdcRecvData(int32_t channelId) SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "can not find data buf node."); return SOFTBUS_ERR; } - int32_t ret = RecvTcpData(node->fd, node->w, node->size - (node->w - node->data), 0); + int32_t ret = ConnRecvSocketData(node->fd, node->w, node->size - (node->w - node->data), 0); if (ret <= 0) { SoftBusMutexUnlock(&g_tcpDataList->lock); SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "recv tcp data fail."); diff --git a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c index 01ab6b40c3..391e39742d 100644 --- a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c +++ b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c @@ -22,7 +22,7 @@ #include "softbus_adapter_socket.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" static int SetReuseAddr(int fd, int on) @@ -69,7 +69,7 @@ static int OpenTcpServer(const char *ip, int port) rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketBind(fd, (SoftBusSockAddr *)&addr, sizeof(addr))); if (rc != SOFTBUS_ADAPTER_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpServer Bind error"); - TcpShutDown(fd); + ConnShutdownSocket(fd); return SOFTBUS_ERR; } return fd; @@ -87,10 +87,16 @@ int32_t StartNStackXDFileServer(const char *myIP, const uint8_t *key, SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "failed to start tcp server for getting port"); return SOFTBUS_ERR; } - int port = GetTcpSockPort(fd); + const SocketInterface * ip = GetSocketInterface(LNN_PROTOCOL_IP); + if(ip == NULL) { + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "no ip supportted"); + ConnShutdownSocket(fd); + return SOFTBUS_NOT_FIND; + } + int port = ip->GetSockPort(fd); if (port < 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "failed to get port from tcp socket"); - TcpShutDown(fd); + ConnShutdownSocket(fd); return SOFTBUS_ERR; } *filePort = port; @@ -102,7 +108,7 @@ int32_t StartNStackXDFileServer(const char *myIP, const uint8_t *key, socklen_t addrLen = sizeof(struct sockaddr_in); int sessionId = NSTACKX_DFileServer(&localAddr, addrLen, key, keyLen, msgReceiver); - TcpShutDown(fd); + ConnShutdownSocket(fd); if (sessionId < 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "failed to start dfile server."); return SOFTBUS_ERR; diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index 304ae036c5..a691f9439f 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -22,7 +22,7 @@ #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_tcp_socket.h" +#include "softbus_socket.h" #include "softbus_thread_pool.h" #include "softbus_utils.h" @@ -201,7 +201,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener004, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, StartBaseClient(module)); EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(module)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); - DestroyBaseListener(module); free(listener); }; @@ -222,7 +221,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) for (int i = 0; i < module; i++) { ret = StopBaseListener(static_cast(i)); EXPECT_EQ(SOFTBUS_OK, ret); - DestroyBaseListener(static_cast(i)); } continue; } @@ -243,7 +241,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) for (module = PROXY; module < LISTENER_MODULE_DYNAMIC_START; module++) { ret = StopBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_OK, ret); - DestroyBaseListener(static_cast(module)); } }; @@ -329,7 +326,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener008, TestSize.Level1) fd, static_cast(triggerType))); } EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); free(listener); } }; @@ -423,7 +419,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener013, TestSize.Level1) setListener->onDataEvent = DataEvent; for (i = PROXY; i < LISTENER_MODULE_DYNAMIC_START; i++) { EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -469,7 +464,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener015, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, GetSoftbusBaseListener(static_cast(i), &getListener)); EXPECT_EQ(setListener->onConnectEvent, getListener.onConnectEvent); EXPECT_EQ(setListener->onDataEvent, getListener.onDataEvent); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -523,7 +517,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener018, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(static_cast(i))); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -549,7 +542,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener019, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, StartBaseClient(static_cast(i))); EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(SOFTBUS_ERR, StartBaseClient(static_cast(i))); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -676,7 +668,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener024, TestSize.Level1) info.socketOption.port++; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -711,7 +702,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener025, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(i), setListener)); EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); - DestroyBaseListener(static_cast(i)); EXPECT_EQ(SOFTBUS_ERR, GetSoftbusBaseListener(static_cast(i), &getListener)); } free(setListener); @@ -782,7 +772,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener028, TestSize.Level1) EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); - DestroyBaseListener(static_cast(i)); } free(setListener); }; @@ -824,7 +813,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener029, TestSize.Level1) EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(i))); - DestroyBaseListener(static_cast(i)); EXPECT_EQ(SOFTBUS_ERR, StopBaseListener(static_cast(i))); } free(setListener); @@ -872,7 +860,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener030, TestSize.Level1) DelTrigger(static_cast(module), fd, static_cast(RW_TRIGGER + 1))); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(static_cast(module))); - DestroyBaseListener(static_cast(module)); free(listener); } }; @@ -903,7 +890,7 @@ HWTEST_F(SoftbusCommonTest, testBaseListener031, TestSize.Level1) EXPECT_EQ(info.socketOption.port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(module)); - DestroyBaseListener(module); + EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener); }; @@ -946,7 +933,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, StopBaseListener(PROXY)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); - DestroyBaseListener(PROXY); info.socketOption.moduleId = PROXY; info.socketOption.port = PROXY + port; @@ -957,7 +943,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener032, TestSize.Level1) EXPECT_EQ(AUTH + port, StartBaseListener(&info)); EXPECT_EQ(SOFTBUS_OK, StopBaseListener(AUTH)); - DestroyBaseListener(AUTH); EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener1); free(listener2); @@ -991,7 +976,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener033, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(module, listener)); EXPECT_EQ(port, StartBaseListener(&info)); - DestroyBaseListener(module); EXPECT_EQ(SOFTBUS_ERR, StartBaseListener(&info)); free(listener); }; @@ -1026,7 +1010,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener034, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); EXPECT_EQ(port, StartBaseListener(&info)); - DestroyBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_ERR, AddTrigger(static_cast(module), fd, static_cast(triggerType))); free(listener); }; @@ -1061,7 +1044,6 @@ HWTEST_F(SoftbusCommonTest, testBaseListener035, TestSize.Level1) EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); EXPECT_EQ(port, StartBaseListener(&info)); - DestroyBaseListener(static_cast(module)); EXPECT_EQ(SOFTBUS_ERR, DelTrigger(static_cast(module), fd, static_cast(triggerType))); free(listener); }; @@ -1079,16 +1061,16 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket001, TestSize.Level1) ASSERT_TRUE(ret == SOFTBUS_OK); int port = GetTcpSockPort(fd); EXPECT_EQ(port, g_port); - CloseTcpFd(fd); + ConnCloseSocket(fd); fd = OpenTcpServerSocket(nullptr, g_port); ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(fd); + ConnCloseSocket(fd); fd = OpenTcpServerSocket("127.0.0.1", -1); ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(fd); + ConnCloseSocket(fd); }; /* @@ -1102,15 +1084,15 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket002, TestSize.Level1) int fd = OpenTcpClientSocket(nullptr, "127.0.0.1", g_port, false); int ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(fd); + ConnCloseSocket(fd); fd = OpenTcpClientSocket(nullptr, nullptr, g_port, false); ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(fd); + ConnCloseSocket(fd); fd = OpenTcpClientSocket("127.0.0.1", "127.0.0.1", -1, false); ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(fd); + ConnCloseSocket(fd); }; /* @@ -1129,7 +1111,7 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket003, TestSize.Level1) /* * @tc.name: testTcpSocket004 -* @tc.desc: test SendTcpData invalid fd +* @tc.desc: test ConnSendSocketData invalid fd * @tc.type: FUNC * @tc.require: */ @@ -1138,9 +1120,9 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket004, TestSize.Level1) int clientFd = OpenTcpClientSocket(nullptr, "127.5.0.1", g_port, false); int ret = (clientFd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - ssize_t bytes = SendTcpData(clientFd, "Hello world", 11, 0); + ssize_t bytes = ConnSendSocketData(clientFd, "Hello world", 11, 0); EXPECT_EQ(bytes, -1); - TcpShutDown(clientFd); + ConnShutdownSocket(clientFd); }; /* diff --git a/tests/core/connection/tcp/tcp_manager_test.cpp b/tests/core/connection/tcp/tcp_manager_test.cpp index 7c22c1b921..58c1bf894f 100644 --- a/tests/core/connection/tcp/tcp_manager_test.cpp +++ b/tests/core/connection/tcp/tcp_manager_test.cpp @@ -264,6 +264,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager006, TestSize.Level1) LocalListenerInfo info = {}; info.type = CONNECT_TCP; info.socketOption.port = port; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; @@ -271,6 +272,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager006, TestSize.Level1) option.type = CONNECT_TCP; option.socketOption.port = port; option.socketOption.moduleId = PROXY; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); EXPECT_EQ(port, TcpStartListening(&info)); @@ -298,12 +300,14 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager007, TestSize.Level1) LocalListenerInfo info = {}; info.type = CONNECT_TCP; info.socketOption.port = clientPort; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option = {}; option.type = CONNECT_TCP; option.socketOption.port = serverPort; + option.socketOption.protocol = LNN_PROTOCOL_IP; option.socketOption.moduleId = PROXY; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); @@ -347,6 +351,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager008, TestSize.Level1) LocalListenerInfo info = {}; info.type = CONNECT_TCP; info.socketOption.port = port; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; @@ -354,6 +359,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager008, TestSize.Level1) option.type = CONNECT_TCP; option.socketOption.port = port; option.socketOption.moduleId = PROXY; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int32_t maxConnNum; @@ -389,12 +395,14 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager009, TestSize.Level1) LocalListenerInfo info = {}; info.type = CONNECT_TCP; info.socketOption.port = port; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); uint32_t requestId = 1; ConnectOption option; option.type = CONNECT_TCP; option.socketOption.port = port; + option.socketOption.protocol = LNN_PROTOCOL_IP; option.socketOption.moduleId = PROXY; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); @@ -442,6 +450,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager010, TestSize.Level1) option.type = CONNECT_BLE; option.socketOption.port = port; option.socketOption.moduleId = PROXY; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); @@ -485,6 +494,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager011, TestSize.Level1) option.type = CONNECT_BLE; option.socketOption.port = port; option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); @@ -527,6 +537,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager012, TestSize.Level1) option.type = CONNECT_P2P; option.socketOption.port = port; option.socketOption.moduleId = PROXY; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); @@ -570,6 +581,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager013, TestSize.Level1) option.type = CONNECT_P2P; option.socketOption.port = port; option.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + option.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); int ret; ret = TcpConnectDevice(nullptr, requestId, &g_result); @@ -611,6 +623,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager014, TestSize.Level1) info.type = CONNECT_BR; info.socketOption.port = port; info.socketOption.moduleId = AUTH; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -638,6 +651,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager015, TestSize.Level1) info.type = CONNECT_BR; info.socketOption.port = port; info.socketOption.moduleId = AUTH_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -666,6 +680,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager016, TestSize.Level1) info.type = CONNECT_BR; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -693,6 +708,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager017, TestSize.Level1) info.type = CONNECT_BR; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -720,6 +736,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager018, TestSize.Level1) info.type = CONNECT_BR; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -747,6 +764,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager019, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = PROXY; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -775,6 +793,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager020, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = AUTH; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -802,6 +821,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager021, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = AUTH_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -829,22 +849,22 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager022, TestSize.Level1) int clientfd = OpenTcpClientSocket(nullptr, "127.0.0.1", port, false); int ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(clientfd); + ConnCloseSocket(clientfd); clientfd = OpenTcpClientSocket(nullptr, nullptr, port, false); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(clientfd); + ConnCloseSocket(clientfd); clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", -1, false); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - CloseTcpFd(clientfd); + ConnCloseSocket(clientfd); clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); - CloseTcpFd(clientfd); + ConnCloseSocket(clientfd); }; /* @@ -868,7 +888,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager023, TestSize.Level1) ASSERT_TRUE(ret == SOFTBUS_OK); port = GetTcpSockPort(fd); EXPECT_EQ(port, i_port); - CloseTcpFd(fd); + ConnCloseSocket(fd); }; /* @@ -890,7 +910,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager024, TestSize.Level1) fd = -1; ret = SetIpTos(fd, tos); EXPECT_EQ(SOFTBUS_TCP_SOCKET_ERR, ret); - CloseTcpFd(fd); + ConnCloseSocket(fd); }; @@ -911,39 +931,39 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager025, TestSize.Level1) int port = 6666; fd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); EXPECT_EQ(SOFTBUS_OK, ConnToggleNonBlockMode(fd, isNonBlock)); - CloseTcpFd(fd); + ConnCloseSocket(fd); }; /* * @tc.name: testTcpManager026 -* @tc.desc: Test SendTcpData invalid fd. +* @tc.desc: Test ConnSendSocketData invalid fd. * @tc.in: Test module, Test number, Test Levels. * @tc.out: NonZero * @tc.type: FUNC -* @tc.require: The SendTcpData operates normally. +* @tc.require: The ConnSendSocketData operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager026, TestSize.Level1) { int port = 6666; int clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, false); - ssize_t bytes = SendTcpData(clientfd, "Hello world", 11, 0); + ssize_t bytes = ConnSendSocketData(clientfd, "Hello world", 11, 0); EXPECT_EQ(bytes, -1); - TcpShutDown(clientfd); + ConnShutdownSocket(clientfd); clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); - bytes = SendTcpData(clientfd, "Hello world", 11, 0); + bytes = ConnSendSocketData(clientfd, "Hello world", 11, 0); EXPECT_EQ(bytes, -1); - TcpShutDown(clientfd); + ConnShutdownSocket(clientfd); }; /* * @tc.name: testTcpManager027 -* @tc.desc: Test SendTcpData invalid buf len. +* @tc.desc: Test ConnSendSocketData invalid buf len. * @tc.in: Test module, Test number, Test Levels. * @tc.out: NonZero * @tc.type: FUNC -* @tc.require: The OpenTcpClientSocket and SendTcpData operates normally. +* @tc.require: The OpenTcpClientSocket and ConnSendSocketData operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager027, TestSize.Level1) { @@ -952,24 +972,24 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager027, TestSize.Level1) int ret = (clientfd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); - int bytes = SendTcpData(clientfd, nullptr, 10, 0); + int bytes = ConnSendSocketData(clientfd, nullptr, 10, 0); EXPECT_EQ(bytes, -1); - bytes = SendTcpData(clientfd, "hello world!", 0, 0); + bytes = ConnSendSocketData(clientfd, "hello world!", 0, 0); EXPECT_EQ(bytes, -1); - bytes = SendTcpData(clientfd, "hello world!", 12, 0); + bytes = ConnSendSocketData(clientfd, "hello world!", 12, 0); EXPECT_EQ(bytes, -1); - TcpShutDown(clientfd); + ConnShutdownSocket(clientfd); }; /* * @tc.name: testTcpManager028 -* @tc.desc: Test RecvTcpData invalid param. +* @tc.desc: Test ConnRecvSocketData invalid param. * @tc.in: Test module, Test number, Test Levels. * @tc.out: NonZero * @tc.type: FUNC -* @tc.require: The RecvTcpData operates normally. +* @tc.require: The ConnRecvSocketData operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager028, TestSize.Level1) { @@ -981,14 +1001,14 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager028, TestSize.Level1) return; } int fd = -1; - EXPECT_EQ(SOFTBUS_ERR, RecvTcpData(fd, data, sizeof(ConnPktHead) + head.len, 0)); + EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, sizeof(ConnPktHead) + head.len, 0)); int port = 6666; fd = OpenTcpClientSocket(nullptr, "127.0.0.1", port, true); - EXPECT_EQ(SOFTBUS_ERR, RecvTcpData(fd, nullptr, sizeof(ConnPktHead) + head.len, 0)); - EXPECT_EQ(SOFTBUS_ERR, RecvTcpData(fd, data, 0, 0)); - EXPECT_EQ(SOFTBUS_ERR, RecvTcpData(fd, data, sizeof(ConnPktHead) + head.len, 0)); - CloseTcpFd(fd); + EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, nullptr, sizeof(ConnPktHead) + head.len, 0)); + EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, 0, 0)); + EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, sizeof(ConnPktHead) + head.len, 0)); + ConnCloseSocket(fd); }; /* @@ -1006,7 +1026,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager029, TestSize.Level1) int ret = (clientfd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); EXPECT_TRUE(ConnGetSocketError(clientfd) != 0); - CloseTcpFd(clientfd); + ConnCloseSocket(clientfd); }; @@ -1025,6 +1045,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager030, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1052,6 +1073,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager031, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1079,6 +1101,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager032, TestSize.Level1) info.type = CONNECT_BLE; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1106,6 +1129,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager033, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = PROXY; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1134,6 +1158,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager034, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = AUTH; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1161,6 +1186,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager035, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = AUTH_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1189,6 +1215,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager036, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_P2P; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1216,6 +1243,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager037, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_CLIENT; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1243,6 +1271,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager038, TestSize.Level1) info.type = CONNECT_P2P; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(nullptr)); EXPECT_EQ(SOFTBUS_INVALID_PARAM, TcpStartListening(&info)); @@ -1270,6 +1299,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager039, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); uint32_t tos = 65535; @@ -1292,6 +1322,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager040, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_TRUE(OpenTcpServerSocket(info.socketOption.addr, info.socketOption.port) > 0); } @@ -1311,6 +1342,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager041, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_EQ(SetIpTos(fd, 65535), SOFTBUS_OK); @@ -1332,6 +1364,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager042, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_TRUE(fd > 0); @@ -1354,6 +1387,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_TRUE(GetTcpSockPort(fd) > 0); @@ -1361,11 +1395,11 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) /* * @tc.name: testTcpManager044 -* @tc.desc: test SendTcpData SendData successful yes or no. +* @tc.desc: test ConnSendSocketData SendData successful yes or no. * @tc.in: Test module, Test number, Test Levels. * @tc.out: NonZero * @tc.type: FUNC -* @tc.require: The SendTcpData operates normally. +* @tc.require: The ConnSendSocketData operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager044, TestSize.Level1) { @@ -1374,10 +1408,11 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager044, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); const char * buf = "SendDataTest"; - EXPECT_EQ(SendTcpData(fd, buf, 13, 0), -1); + EXPECT_EQ(ConnSendSocketData(fd, buf, 13, 0), -1); }; /* @@ -1395,19 +1430,20 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager045, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); - CloseTcpFd(fd); + ConnCloseSocket(fd); EXPECT_TRUE(fd >= 0); }; /* * @tc.name: testTcpManager046 -* @tc.desc: Test SendTcpData param is invalid yes or no. +* @tc.desc: Test ConnSendSocketData param is invalid yes or no. * @tc.in: Test module, Test number, Test Levels. * @tc.out: Nonzero * @tc.type: FUNC -* @tc.require: The SendTcpData operates normally. +* @tc.require: The ConnSendSocketData operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager046, TestSize.Level1) { @@ -1416,19 +1452,20 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager046, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); const char * buf = "SendDataTest"; - EXPECT_EQ(SendTcpData(fd, buf, 13, 0xffff), -1); + EXPECT_EQ(ConnSendSocketData(fd, buf, 13, 0xffff), -1); }; /* * @tc.name: testTcpManager047 -* @tc.desc: Test CloseTcpFd function successful yes or no. +* @tc.desc: Test ConnCloseSocket function successful yes or no. * @tc.in: Test module, Test number, Test Levels. * @tc.out: Zero * @tc.type: FUNC -* @tc.require: The TcpShutDown and OpenTcpClientSocket operates normally. +* @tc.require: The ConnShutdownSocket and OpenTcpClientSocket operates normally. */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager047, TestSize.Level1) { @@ -1437,9 +1474,10 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager047, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); - TcpShutDown(fd); + ConnShutdownSocket(fd); EXPECT_TRUE(fd >= 0); }; @@ -1458,6 +1496,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager048, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); EXPECT_EQ(ConnSetTcpKeepAlive(-100, 65535), -1); }; @@ -1477,6 +1516,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager049, TestSize.Level1) info.type = CONNECT_TCP; info.socketOption.port = port; info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; + info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); int fd = OpenTcpServerSocket(info.socketOption.addr, port); EXPECT_EQ(ConnSetTcpKeepAlive(fd, 100), SOFTBUS_OK); diff --git a/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp b/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp index bd84d3027d..1207c4aa1c 100644 --- a/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp +++ b/tests/core/transmission/trans_channel/tcp_direct/unittest/trans_tcp_direct_test.cpp @@ -131,11 +131,16 @@ HWTEST_F(TransTcpDirectTest, OpenTcpDirectChannelTest001, TestSize.Level1) { int ret = 0; AppInfo appInfo; - ConnectOption connInfo; + ConnectOption connInfo = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6000, + .protocol = LNN_PROTOCOL_IP, + .moduleId = MODULE_MESSAGE_SERVICE + } + }; (void)memset_s(&appInfo, sizeof(AppInfo), 0, sizeof(AppInfo)); - (void)memset_s(&connInfo, sizeof(ConnectOption), 0, sizeof(ConnectOption)); - connInfo.type = CONNECT_TCP; - connInfo.socketOption.port = 6000; if (strcpy_s(connInfo.socketOption.addr, sizeof(connInfo.socketOption.addr), "192.168.8.1") != EOK) { return; } -- Gitee From ad8373b3b8cf367f855823853bd0f642bfae98c9 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 12 Jul 2022 08:59:48 +0000 Subject: [PATCH 04/16] fix bugs Signed-off-by: duxbbo Change-Id: I2e3859d3e2b15bcb1c80376a0a4d72239ef9366b --- core/authentication/src/auth_manager.c | 12 ++-- core/authentication/src/auth_p2p.c | 2 +- core/authentication/src/auth_socket.c | 6 +- .../lane_hub/lane_manager/src/lnn_lane_link.c | 4 +- .../lnn/net_ledger/common/src/lnn_node_info.c | 14 ++-- .../src/lnn_distributed_net_ledger.c | 2 +- .../softbus_sequence_verification.c | 2 +- .../common/src/softbus_base_listener.c | 65 +++++++++++-------- core/connection/common/src/softbus_socket.c | 2 +- .../common/src/softbus_tcp_socket.c | 7 +- core/connection/interface/softbus_socket.h | 2 +- .../p2p/message/src/p2plink_message.c | 4 +- .../negotiation/src/p2plink_channel_freq.c | 6 +- .../negotiation/src/p2plink_json_payload.c | 8 +-- .../p2p/negotiation/src/p2plink_negotiation.c | 2 +- .../tcp/src/softbus_tcp_connect_manager.c | 58 ++--------------- core/discovery/coap/src/disc_coap.c | 4 +- .../discovery/coap/src/disc_nstackx_adapter.c | 2 +- .../small/init/src/bus_center_server_stub.c | 10 +-- core/frame/small/init/src/disc_server_stub.c | 2 +- .../tcp_direct/src/trans_tcp_direct_p2p.c | 2 +- .../tcp_direct/src/trans_tcp_direct_wifi.c | 2 +- .../src/trans_udp_channel_manager.c | 12 ++-- .../src/trans_udp_negotiation.c | 2 +- .../src/trans_udp_negotiation_exchange.c | 8 +-- .../common/src/softbus_client_frame_manager.c | 33 +++++++++- sdk/frame/small/src/bus_center_client_stub.c | 16 ++--- sdk/frame/small/src/disc_client_stub.c | 10 +-- sdk/frame/small/src/trans_client_stub.c | 8 +-- .../udp/common/src/client_trans_udp_manager.c | 2 +- .../udp/file/src/client_trans_file.c | 2 +- .../trans_channel/udp/file/src/file_adapter.c | 4 +- .../udp/stream/src/client_trans_stream.c | 2 +- 33 files changed, 152 insertions(+), 165 deletions(-) diff --git a/core/authentication/src/auth_manager.c b/core/authentication/src/auth_manager.c index 5c1d36d0bf..16ffe480b2 100644 --- a/core/authentication/src/auth_manager.c +++ b/core/authentication/src/auth_manager.c @@ -174,7 +174,7 @@ static void HandleAuthDisconnectDevice(uint32_t connectionId) static void AuthHandler(SoftBusMessage *msg) { if (msg == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "auth message: what = %d.", msg->what); @@ -1977,7 +1977,7 @@ static AuthManager *GetAuthManagerInner(int64_t authId) int32_t AuthGetConnInfo(int64_t authId, AuthConnInfo *info) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (SoftBusMutexLock(&g_authLock) != 0) { @@ -2040,7 +2040,7 @@ static bool IsAuthLinkTypeMatched(AuthLinkType type, const AuthManager *auth) int32_t AuthGetConnectOptionByP2pMac(const char *mac, AuthLinkType type, ConnectOption *option) { if (mac == NULL || strlen(mac) == 0 || option == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } AuthManager *item = NULL; @@ -2074,7 +2074,7 @@ int32_t GetActiveAuthConnInfo(const char *uuid, ConnectType type, AuthConnInfo * { ConnectOption option = {0}; if (uuid == NULL || strlen(uuid) == 0 || connInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (AuthGetActiveConnectOption(uuid, type, &option) != SOFTBUS_OK) { @@ -2088,7 +2088,7 @@ int32_t GetActiveAuthConnInfo(const char *uuid, ConnectType type, AuthConnInfo * int32_t AuthGetActiveConnectOption(const char *uuid, ConnectType type, ConnectOption *option) { if (uuid == NULL || strlen(uuid) == 0 || option == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } AuthManager *item = NULL; @@ -2125,7 +2125,7 @@ int32_t AuthGetActiveConnectOption(const char *uuid, ConnectType type, ConnectOp int32_t AuthGetActiveBleConnectOption(const char *uuid, bool isServerSide, ConnectOption *option) { if (uuid == NULL || uuid[0] == '\0' || option == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } AuthManager *item = NULL; diff --git a/core/authentication/src/auth_p2p.c b/core/authentication/src/auth_p2p.c index ef387439b5..4ce0149bd4 100644 --- a/core/authentication/src/auth_p2p.c +++ b/core/authentication/src/auth_p2p.c @@ -144,7 +144,7 @@ int32_t AuthP2pInit(void) int32_t AuthGetPreferConnInfo(const char *uuid, AuthConnInfo *connInfo) { if (uuid == NULL || connInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index eb56a8f965..e82402c1b4 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -40,9 +40,9 @@ int32_t AuthOpenTcpChannel(const ConnectOption *option, bool isNonBlock) return SOFTBUS_ERR; } - int fd = OpenClientSocket(option, localIp, isNonBlock); + int fd = ConnOpenClientSocket(option, localIp, isNonBlock); if (fd < 0) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth OpenClientSocket failed"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnOpenClientSocket failed"); return SOFTBUS_ERR; } if (AddTrigger(AUTH, fd, isNonBlock ? WRITE_TRIGGER : READ_TRIGGER) != SOFTBUS_OK) { @@ -240,7 +240,7 @@ static int32_t AuthOnDataEvent(ListenerModule module, int32_t events, int32_t fd UnpackConnPktHead(&head); if (len < (int32_t)headSize) { if (len < 0) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnRecvSocketData failed, DelTrigger"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnRecvSocketData failed, DelTrigger. recv len=%zd", len); (void)DelTrigger(AUTH, fd, READ_TRIGGER); AuthNotifyDisconn(fd); } diff --git a/core/bus_center/lnn/lane_hub/lane_manager/src/lnn_lane_link.c b/core/bus_center/lnn/lane_hub/lane_manager/src/lnn_lane_link.c index 9328b53d48..d46a7d7c7d 100644 --- a/core/bus_center/lnn/lane_hub/lane_manager/src/lnn_lane_link.c +++ b/core/bus_center/lnn/lane_hub/lane_manager/src/lnn_lane_link.c @@ -506,7 +506,7 @@ static int32_t CheckP2pRoleConflict(const char *networkId) int32_t LnnConnectP2p(const char *networkId, int32_t pid, LnnLaneP2pInfo *p2pInfo) { if (networkId == NULL || p2pInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (g_pendingList == NULL) { @@ -523,7 +523,7 @@ int32_t LnnConnectP2p(const char *networkId, int32_t pid, LnnLaneP2pInfo *p2pInf int32_t LnnDisconnectP2p(const char *networkId, int32_t pid) { if (networkId == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (g_pendingList == NULL) { diff --git a/core/bus_center/lnn/net_ledger/common/src/lnn_node_info.c b/core/bus_center/lnn/net_ledger/common/src/lnn_node_info.c index 2e46c51eb2..4e16fa1e71 100644 --- a/core/bus_center/lnn/net_ledger/common/src/lnn_node_info.c +++ b/core/bus_center/lnn/net_ledger/common/src/lnn_node_info.c @@ -227,7 +227,7 @@ int32_t LnnSetProxyPort(NodeInfo *info, int32_t port) int32_t LnnSetP2pRole(NodeInfo *info, int32_t p2pRole) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } info->p2pInfo.p2pRole = p2pRole; @@ -237,7 +237,7 @@ int32_t LnnSetP2pRole(NodeInfo *info, int32_t p2pRole) int32_t LnnGetP2pRole(const NodeInfo *info) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return 0; } return info->p2pInfo.p2pRole; @@ -246,7 +246,7 @@ int32_t LnnGetP2pRole(const NodeInfo *info) int32_t LnnSetP2pMac(NodeInfo *info, const char *p2pMac) { if (info == NULL || p2pMac == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (strcpy_s(info->p2pInfo.p2pMac, sizeof(info->p2pInfo.p2pMac), p2pMac) != EOK) { @@ -259,7 +259,7 @@ int32_t LnnSetP2pMac(NodeInfo *info, const char *p2pMac) const char *LnnGetP2pMac(const NodeInfo *info) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return NULL; } return info->p2pInfo.p2pMac; @@ -268,7 +268,7 @@ const char *LnnGetP2pMac(const NodeInfo *info) int32_t LnnSetP2pGoMac(NodeInfo *info, const char *goMac) { if (info == NULL || goMac == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -282,7 +282,7 @@ int32_t LnnSetP2pGoMac(NodeInfo *info, const char *goMac) const char *LnnGetP2pGoMac(const NodeInfo *info) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return NULL; } return info->p2pInfo.goMac; @@ -291,7 +291,7 @@ const char *LnnGetP2pGoMac(const NodeInfo *info) uint64_t LnnGetSupportedProtocols(NodeInfo *info) { if (info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return 0; } return info->supportedProtocols; diff --git a/core/bus_center/lnn/net_ledger/distributed_ledger/src/lnn_distributed_net_ledger.c b/core/bus_center/lnn/net_ledger/distributed_ledger/src/lnn_distributed_net_ledger.c index b02e3b94a8..815978b5d2 100644 --- a/core/bus_center/lnn/net_ledger/distributed_ledger/src/lnn_distributed_net_ledger.c +++ b/core/bus_center/lnn/net_ledger/distributed_ledger/src/lnn_distributed_net_ledger.c @@ -1001,7 +1001,7 @@ bool LnnSetDLP2pInfo(const char *networkId, const P2pInfo *info) { NodeInfo *node = NULL; if (networkId == NULL || info == NULL) { - SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return false; } if (SoftBusMutexLock(&g_distributedNetLedger.lock) != 0) { diff --git a/core/common/security/sequence_verification/softbus_sequence_verification.c b/core/common/security/sequence_verification/softbus_sequence_verification.c index 10edd67648..30578de849 100644 --- a/core/common/security/sequence_verification/softbus_sequence_verification.c +++ b/core/common/security/sequence_verification/softbus_sequence_verification.c @@ -157,7 +157,7 @@ static bool IsPassFlipNegativeCheck(SeqVerifyInfo *seqVerifyInfo, int32_t recvSe bool IsPassSeqCheck(SeqVerifyInfo *seqVerifyInfo, int32_t recvSeq) { if (seqVerifyInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return false; } bool isDifferentSign = IsDifferentSign(seqVerifyInfo->minSeq, seqVerifyInfo->maxSeq); diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index a54d9eac19..d6851182d6 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -22,6 +22,7 @@ #include "softbus_adapter_errcode.h" #include "softbus_adapter_mem.h" #include "softbus_adapter_socket.h" +#include "softbus_conn_interface.h" #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" @@ -29,7 +30,6 @@ #include "softbus_thread_pool.h" #include "softbus_utils.h" - #define MAX_LISTEN_EVENTS 1024 #define TIMEOUT 10000 #define DEFAULT_BACKLOG 4 @@ -52,8 +52,8 @@ enum BaseListenerStatus { typedef struct { ListNode node; + LocalListenerInfo listenerInfo; int32_t listenFd; - char addr[MAX_SOCKET_ADDR_LEN]; int32_t listenPort; int32_t fdCount; ModeType modeType; @@ -411,12 +411,6 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * } node->info.fdCount = 1; node->info.listenPort = node->socketIf->GetSockPort(node->info.listenFd); - if (strcpy_s(node->info.addr, sizeof(node->info.addr), info->socketOption.addr) != EOK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy addr failed"); - ReleaseListenerSockets(node); - ret = SOFTBUS_MEM_ERR; - break; - } if (node->info.listenPort < 0) { SoftBusLog( SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "GetSockPort failed, listenPort_=%d", node->info.listenPort); @@ -424,16 +418,24 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * ret = SOFTBUS_ERR; break; } + if(memcpy_s(&node->info.listenerInfo, sizeof(node->info.listenerInfo), info, sizeof(*info)) != EOK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy server option failed!"); + ReleaseListenerSockets(node); + ret = SOFTBUS_MEM_ERR; + break; + } } while (false); - if (SoftBusMutexLock(&g_fdSetLock) != 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - ReleaseListenerSockets(node); - return SOFTBUS_ERR; + if (node->info.listenFd > 0) { + if (SoftBusMutexLock(&g_fdSetLock) != 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerSockets(node); + return SOFTBUS_ERR; + } + SoftBusSocketFdSet(node->info.listenFd, &g_readSet); + g_maxFd = MaxFd(node->info.listenFd, g_maxFd); + SoftBusMutexUnlock(&g_fdSetLock); } - SoftBusSocketFdSet(node->info.listenFd, &g_readSet); - g_maxFd = MaxFd(node->info.listenFd, g_maxFd); - SoftBusMutexUnlock(&g_fdSetLock); return ret; } @@ -461,7 +463,15 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) break; } int32_t cfd; - ConnectOption clientAddr = {0}; + ConnectOption clientAddr = { + .type = node->info.listenerInfo.type, + .socketOption = { + .addr = {0}, + .port = 0, + .protocol = 0, + .moduleId = node->module + } + }; int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(node->socketIf->AcceptClient(fd, &clientAddr, &cfd)); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, @@ -536,7 +546,7 @@ static void ProcessNodeData( } if (node->info.status != LISTENER_RUNNING) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!", node->module); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!status = %d", node->module, node->info.status); SoftBusMutexUnlock(&node->lock); return; } @@ -571,16 +581,11 @@ static void ProcessNodeData( static void ProcessData(SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusFdSet *exceptSet) { for (int i = 0; i < UNUSE_BUTT; i++) { - if (g_listenerList[i] == NULL) { - continue; - } SoftbusListenerNode *node = RequestListenerNode(i); if(node == NULL) { continue; } - ProcessNodeData(node, readSet, writeSet, exceptSet); - ReleaseListenerNode(node); } } @@ -611,8 +616,9 @@ EXIT: return SOFTBUS_MEM_ERR; } -static int32_t SelectThread(void) +static int32_t SelectThread(void* data) { + (void)data; SoftBusSockTimeOut tv = {0}; tv.sec = 0; tv.usec = TIMEOUT; @@ -725,10 +731,12 @@ static int32_t StartListenerThread(SoftbusListenerNode *node, ModeType modeType) g_threadRefCount++; (void)SoftBusMutexUnlock(&g_threadLock); + } while (false); + if(ret == SOFTBUS_OK) { node->info.modeType = modeType; node->info.status = LISTENER_RUNNING; - } while (false); + } (void)SoftBusMutexUnlock(&node->lock); return ret; @@ -884,6 +892,7 @@ int32_t StartBaseClient(ListenerModule module) int32_t StartBaseListener(const LocalListenerInfo *info) { if (info == NULL || (info->type != CONNECT_TCP && info->type != CONNECT_P2P) || info->socketOption.port < 0) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: bad input", __func__); return SOFTBUS_INVALID_PARAM; } ListenerModule module = info->socketOption.moduleId; @@ -900,24 +909,24 @@ int32_t StartBaseListener(const LocalListenerInfo *info) break; } if (node->info.status != LISTENER_IDLE) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "listener is not in idle status.status=%d", node->info.status); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:listener is not in idle status.status=%d",__func__, node->info.status); ret = SOFTBUS_ERR; break; } node->socketIf = GetSocketInterface(info->socketOption.protocol); if(node->socketIf == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no such protocol.protocol=%d", info->socketOption.protocol); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:no such protocol.protocol=%d",__func__, info->socketOption.protocol); ret = SOFTBUS_ERR; break; } ret = InitListenFd(node, info); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitListenFd failed!ret=%" PRId32, ret); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:InitListenFd failed!ret=%" PRId32,__func__, ret); break; } ret = StartListenerThread(node, SERVER_MODE); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Start listener thread failed!ret=%" PRId32, ret); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Start listener thread failed!ret=%" PRId32,__func__, ret); ReleaseListenerSockets(node); break; } diff --git a/core/connection/common/src/softbus_socket.c b/core/connection/common/src/softbus_socket.c index 9250b581b4..630901ac89 100644 --- a/core/connection/common/src/softbus_socket.c +++ b/core/connection/common/src/softbus_socket.c @@ -105,7 +105,7 @@ void ConnDeinitSockets(void) (void)SoftBusMutexDestroy(&g_socketsMutex); } -int32_t OpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock) { +int32_t ConnOpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock) { if(option == NULL || bindAddr == NULL) { return SOFTBUS_ERR; } diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index 323d42d779..cc0caeb356 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -131,7 +131,7 @@ static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) int ret = SoftBusSocketCreate(SOFTBUS_AF_INET, SOFTBUS_SOCK_STREAM | SOFTBUS_SOCK_CLOEXEC | SOFTBUS_SOCK_NONBLOCK, 0, (int32_t *)&fd); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d", fd); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Create socket failed! ret=%d", __func__, ret); return -1; } @@ -182,7 +182,6 @@ int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:using specified bind addr", __func__); bindAddr = myIp; } - ret = BindLocalIP(fd, bindAddr, 0); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); @@ -280,8 +279,8 @@ static int32_t AcceptTcpClient(int fd, ConnectOption *clientAddr, int *cfd) { if(clientAddr != NULL) { clientAddr->type = CONNECT_TCP; SoftBusInetNtoP(SOFTBUS_AF_INET, &addr.sinAddr, clientAddr->socketOption.addr, sizeof(clientAddr->socketOption.addr)); - clientAddr->socketOption.port = 0; - clientAddr->socketOption.moduleId = 0; + clientAddr->socketOption.port = GetTcpSockPort(*cfd); + clientAddr->socketOption.protocol = LNN_PROTOCOL_IP; } return SOFTBUS_OK; } diff --git a/core/connection/interface/softbus_socket.h b/core/connection/interface/softbus_socket.h index 42376b138a..c360a89c05 100644 --- a/core/connection/interface/softbus_socket.h +++ b/core/connection/interface/softbus_socket.h @@ -65,7 +65,7 @@ const SocketInterface* GetSocketInterface(ProtocolType protocolType); int32_t RegistSocketProtocol(const SocketInterface* interface); -int32_t OpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock); +int32_t ConnOpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock); ssize_t ConnSendSocketData(int32_t fd, const char *buf, size_t len, int32_t timeout); ssize_t ConnRecvSocketData(int32_t fd, char *buf, size_t len, int32_t timeout); diff --git a/core/connection/p2p/message/src/p2plink_message.c b/core/connection/p2p/message/src/p2plink_message.c index 7e9d6087ba..68b9562812 100644 --- a/core/connection/p2p/message/src/p2plink_message.c +++ b/core/connection/p2p/message/src/p2plink_message.c @@ -87,7 +87,7 @@ static void P2pLinkNeoDataProcess(P2pLoopMsg msgType, void *param) { (void)msgType; if (param == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } @@ -128,7 +128,7 @@ static void P2pLinkNegoDataRecv(int64_t authId, const ConnectOption *option, con { unsigned char distinguish[] = "p2p rcv"; if (option == NULL || info == NULL || info->module != MODULE_P2P_LINK || info->data == NULL || info->len == 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } SignalingMsgPrint(distinguish, (unsigned char *)info->data, (unsigned char)info->len, SOFTBUS_LOG_CONN); diff --git a/core/connection/p2p/negotiation/src/p2plink_channel_freq.c b/core/connection/p2p/negotiation/src/p2plink_channel_freq.c index fd37bb9e7b..f6997574fc 100644 --- a/core/connection/p2p/negotiation/src/p2plink_channel_freq.c +++ b/core/connection/p2p/negotiation/src/p2plink_channel_freq.c @@ -47,7 +47,7 @@ int32_t P2plinkChannelListToString(const P2pLink5GList *channelList, char *chann } if (channelString == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -73,7 +73,7 @@ void P2pLinkParseItemDataByDelimit(char *srcStr, const char *delimit, char *list { // srcStr will be cut. if (srcStr == NULL || delimit == NULL || list == NULL || outNum == NULL || num == 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } @@ -249,7 +249,7 @@ static int32_t ChoseChannel5gFreq(const GcInfo *gc, const P2pLink5GList *channel int32_t P2plinkGetGroupGrequency(const GcInfo *gc, const P2pLink5GList *channelList) { if (gc == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/core/connection/p2p/negotiation/src/p2plink_json_payload.c b/core/connection/p2p/negotiation/src/p2plink_json_payload.c index 6674b51a1b..baa7647672 100644 --- a/core/connection/p2p/negotiation/src/p2plink_json_payload.c +++ b/core/connection/p2p/negotiation/src/p2plink_json_payload.c @@ -92,7 +92,7 @@ int32_t P2pLinkPackRequestMsg(const P2pRequestMsg *request, P2pContentType type, { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "pack request info."); if (request == NULL || data == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -129,7 +129,7 @@ int32_t P2plinkPackRepsonseMsg(const P2pRespMsg *response, P2pContentType type, { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "pack response info."); if (response == NULL || data == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -169,7 +169,7 @@ int32_t P2pLinkUnpackRequestMsg(const cJSON *data, P2pContentType type, P2pReque { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "unpack request info."); if (request == NULL || data == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -209,7 +209,7 @@ int32_t P2plinkUnpackRepsonseMsg(const cJSON *data, P2pContentType type, P2pResp { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "unpack response info."); if (response == NULL || data == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/core/connection/p2p/negotiation/src/p2plink_negotiation.c b/core/connection/p2p/negotiation/src/p2plink_negotiation.c index 233ece6e2d..40a9748075 100644 --- a/core/connection/p2p/negotiation/src/p2plink_negotiation.c +++ b/core/connection/p2p/negotiation/src/p2plink_negotiation.c @@ -1374,7 +1374,7 @@ void P2pLinkNegoStop(void) int32_t P2pLinkNegoInit(const P2pLinkNegoCb *callback) { if (callback == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } (void)memset_s(&g_p2pLinkNegoCb, sizeof(P2pLinkNegoCb), 0, sizeof(P2pLinkNegoCb)); diff --git a/core/connection/tcp/src/softbus_tcp_connect_manager.c b/core/connection/tcp/src/softbus_tcp_connect_manager.c index 9d3a12e162..959335135e 100644 --- a/core/connection/tcp/src/softbus_tcp_connect_manager.c +++ b/core/connection/tcp/src/softbus_tcp_connect_manager.c @@ -171,12 +171,6 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t return SOFTBUS_ERR; } } - - const SocketInterface* socketInterface = GetSocketInterface(clientAddr->socketOption.protocol); - if(socketInterface == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!protocol=%d", clientAddr->socketOption.protocol); - return SOFTBUS_ERR; - } TcpConnInfoNode *tcpConnInfoNode = (TcpConnInfoNode *)SoftBusCalloc(sizeof(TcpConnInfoNode)); if (tcpConnInfoNode == NULL) { @@ -192,9 +186,10 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t clientAddr->socketOption.addr) != EOK) { goto EXIT; } - tcpConnInfoNode->info.socketInfo.port = socketInterface->GetSockPort(cfd); + tcpConnInfoNode->info.socketInfo.port = clientAddr->socketOption.port; tcpConnInfoNode->info.socketInfo.fd = cfd; tcpConnInfoNode->info.socketInfo.moduleId = module; + tcpConnInfoNode->info.socketInfo.protocol = clientAddr->socketOption.protocol; if (AddTrigger(module, cfd, READ_TRIGGER) != SOFTBUS_OK) { goto EXIT; } @@ -389,7 +384,7 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const return SOFTBUS_INVALID_PARAM; } - int32_t fd = OpenClientSocket(option, BIND_ADDR_ALL, false); + int32_t fd = ConnOpenClientSocket(option, BIND_ADDR_ALL, false); if (fd < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClient failed."); result->OnConnectFailed(requestId, SOFTBUS_ERR); @@ -418,6 +413,7 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const tcpConnInfoNode->info.isServer = false; tcpConnInfoNode->info.type = CONNECT_TCP; tcpConnInfoNode->info.socketInfo.port = option->socketOption.port; + tcpConnInfoNode->info.socketInfo.protocol = option->socketOption.protocol; tcpConnInfoNode->info.socketInfo.fd = fd; tcpConnInfoNode->info.socketInfo.moduleId = option->socketOption.moduleId; if (AddTcpConnInfo(tcpConnInfoNode) != SOFTBUS_OK) { @@ -543,52 +539,6 @@ int32_t TcpGetConnectionInfo(uint32_t connectionId, ConnectionInfo *info) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnectionId:%08x is not exists.", connectionId); return SOFTBUS_ERR; } -#if 0 -static int32_t OnProxyServerConnectEvent(int32_t events, int32_t cfd, const char *ip) -{ - return TcpOnConnectEvent(PROXY, events, cfd, ip); -} - -static int32_t OnAuthP2pServerConnectEvent(int32_t events, int32_t cfd, const char *ip) -{ - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "recv p2p conned %d", cfd); - if (ConnSetTcpKeepAlive(cfd, AUTH_P2P_KEEP_ALIVE_TIME) != 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "set keepalive fail"); - ConnShutdownSocket(cfd); - return SOFTBUS_ERR; - } - return TcpOnConnectEvent(AUTH_P2P, events, cfd, ip); -} - -static TcpListenerItem g_tcpListenerItems[] = { - { - .moduleId = PROXY, - .listener = { - .onConnectEvent = OnProxyServerConnectEvent, - .onDataEvent = TcpOnDataEvent - } - }, - { - .moduleId = AUTH_P2P, - .listener = { - .onConnectEvent = OnAuthP2pServerConnectEvent, - .onDataEvent = TcpOnDataEvent - } - }, - /* Note: if add new tcp server, expend it here according to the above codes. */ -}; - -static SoftbusBaseListener *CheckTcpListener(ListenerModule moduleId) -{ - for (uint32_t i = 0; i < sizeof(g_tcpListenerItems) / sizeof(TcpListenerItem); i++) { - if (g_tcpListenerItems[i].moduleId == moduleId) { - return &(g_tcpListenerItems[i].listener); - } - } - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "unsupport ListenerModule, id = %d.", moduleId); - return NULL; -} -#endif int32_t TcpStartListening(const LocalListenerInfo *info) { diff --git a/core/discovery/coap/src/disc_coap.c b/core/discovery/coap/src/disc_coap.c index b628fa86d2..7bd9c5727b 100644 --- a/core/discovery/coap/src/disc_coap.c +++ b/core/discovery/coap/src/disc_coap.c @@ -40,7 +40,7 @@ static int32_t RegisterAllCapBitmap(uint32_t capBitmapNum, const uint32_t inCapB uint32_t count) { if (info == NULL || capBitmapNum == 0 || capBitmapNum > CAPABILITY_NUM || count > MAX_CAP_NUM) { - SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -66,7 +66,7 @@ static int32_t UnregisterAllCapBitmap(uint32_t capBitmapNum, const uint32_t inC uint32_t count) { if (info == NULL || capBitmapNum == 0 || capBitmapNum > CAPABILITY_NUM || count > MAX_CAP_NUM) { - SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/core/discovery/coap/src/disc_nstackx_adapter.c b/core/discovery/coap/src/disc_nstackx_adapter.c index 93d2e38004..766925ff12 100644 --- a/core/discovery/coap/src/disc_nstackx_adapter.c +++ b/core/discovery/coap/src/disc_nstackx_adapter.c @@ -198,7 +198,7 @@ static int32_t ParseDiscDevInfo(const NSTACKX_DeviceInfo *nstackxDevInfo, Device static void OnDeviceFound(const NSTACKX_DeviceInfo *deviceList, uint32_t deviceCount) { if ((deviceList == NULL) || (deviceCount == 0)) { - SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_INFO, "invalid param."); + SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_INFO, "%s:invalid param.", __func__); return; } SoftBusLog(SOFTBUS_LOG_DISC, SOFTBUS_LOG_INFO, "Disc device found, count=%u", deviceCount); diff --git a/core/frame/small/init/src/bus_center_server_stub.c b/core/frame/small/init/src/bus_center_server_stub.c index 7dd1707a3f..de6a8ee271 100644 --- a/core/frame/small/init/src/bus_center_server_stub.c +++ b/core/frame/small/init/src/bus_center_server_stub.c @@ -44,7 +44,7 @@ int32_t ServerJoinLNN(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "ServerJoinLNN ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; @@ -252,7 +252,7 @@ int32_t ServerPublishLNN(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "ServerPublishLNN ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; @@ -281,7 +281,7 @@ int32_t ServerStopPublishLNN(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "ServerStopPublishLNN ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; @@ -305,7 +305,7 @@ int32_t ServerRefreshLNN(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "ServerRefreshLNN ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; @@ -334,7 +334,7 @@ int32_t ServerStopRefreshLNN(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "ServerStopRefreshLNN ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; diff --git a/core/frame/small/init/src/disc_server_stub.c b/core/frame/small/init/src/disc_server_stub.c index a2defeac38..ef4a369dd9 100644 --- a/core/frame/small/init/src/disc_server_stub.c +++ b/core/frame/small/init/src/disc_server_stub.c @@ -28,7 +28,7 @@ int32_t ServerPublishService(IpcIo *req, IpcIo *reply) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_INFO, "publish service ipc server pop."); if (req == NULL || reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t len; diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c index fe2d217e35..0412a53955 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c @@ -422,7 +422,7 @@ static int32_t OnVerifyP2pReply(int64_t authId, int64_t seq, const cJSON *json) goto EXIT_ERR; } - fd = OpenClientSocket(&options, BIND_ADDR_ALL, true); + fd = ConnOpenClientSocket(&options, BIND_ADDR_ALL, true); if (fd <= 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OnVerifyP2pReply conn fail: fd=%d", fd); ReleaseSessonConnLock(); diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c index db84ce0910..964379eadd 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_wifi.c @@ -38,7 +38,7 @@ int32_t OpenTcpDirectChannel(const AppInfo *appInfo, const ConnectOption *connIn int32_t newchannelId = newConn->channelId; (void)memcpy_s(&newConn->appInfo, sizeof(AppInfo), appInfo, sizeof(AppInfo)); - int32_t fd = OpenClientSocket(connInfo, BIND_ADDR_ALL, false); + int32_t fd = ConnOpenClientSocket(connInfo, BIND_ADDR_ALL, false); if (fd < 0) { SoftBusFree(newConn); SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OpenTcpDirectChannel connect fail"); diff --git a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_channel_manager.c b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_channel_manager.c index 3d6d526265..912476c914 100644 --- a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_channel_manager.c +++ b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_channel_manager.c @@ -133,7 +133,7 @@ int32_t TransAddUdpChannel(UdpChannelInfo *channel) } if (channel == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -196,7 +196,7 @@ int32_t TransGetUdpChannelBySeq(int64_t seq, UdpChannelInfo *channel) } if (channel == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -230,7 +230,7 @@ int32_t TransGetUdpChannelById(int32_t channelId, UdpChannelInfo *channel) } if (channel == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -264,7 +264,7 @@ int32_t TransUdpGetNameByChanId(int32_t channelId, char *pkgName, char *sessionN return SOFTBUS_ERR; } if (pkgName == NULL || sessionName == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } if (SoftBusMutexLock(&(g_udpChannelMgr->lock)) != 0) { @@ -348,7 +348,7 @@ void TransUpdateUdpChannelInfo(int64_t seq, const AppInfo *appInfo) } if (appInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } @@ -379,7 +379,7 @@ int32_t TransGetUdpChannelByRequestId(uint32_t requestId, UdpChannelInfo *channe } if (channel == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c index d953f32131..9ef1aa030c 100644 --- a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c +++ b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation.c @@ -713,7 +713,7 @@ int32_t TransCloseUdpChannel(int32_t channelId) static void UdpModuleCb(int64_t authId, const ConnectOption *option, const AuthTransDataInfo *info) { if (option == NULL || info == NULL || info->module != MODULE_UDP_INFO) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "udp module callback enter."); diff --git a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation_exchange.c b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation_exchange.c index c3b32cc05b..b287da3925 100644 --- a/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation_exchange.c +++ b/core/transmission/trans_channel/udp_negotiation/src/trans_udp_negotiation_exchange.c @@ -30,7 +30,7 @@ int32_t TransUnpackReplyUdpInfo(const cJSON *msg, AppInfo *appInfo) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "unpack reply udp info in negotiation."); if (msg == NULL || appInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } @@ -58,7 +58,7 @@ int32_t TransUnpackRequestUdpInfo(const cJSON *msg, AppInfo *appInfo) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "unpack request udp info in negotiation."); if (msg == NULL || appInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } unsigned char encodeSessionKey[BASE64_SESSION_KEY_LEN] = {0}; @@ -103,7 +103,7 @@ int32_t TransPackRequestUdpInfo(cJSON *msg, const AppInfo *appInfo) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "pack request udp info in negotiation."); if (msg == NULL || appInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } @@ -150,7 +150,7 @@ int32_t TransPackReplyUdpInfo(cJSON *msg, const AppInfo *appInfo) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "pack reply udp info in negotiation."); if (msg == NULL || appInfo == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } diff --git a/sdk/frame/common/src/softbus_client_frame_manager.c b/sdk/frame/common/src/softbus_client_frame_manager.c index 5d479dc394..0e8770d357 100644 --- a/sdk/frame/common/src/softbus_client_frame_manager.c +++ b/sdk/frame/common/src/softbus_client_frame_manager.c @@ -21,14 +21,16 @@ #include "client_bus_center_manager.h" #include "client_disc_manager.h" #include "client_trans_session_manager.h" -#include "softbus_adapter_thread.h" #include "softbus_adapter_mem.h" +#include "softbus_adapter_thread.h" +#include "softbus_base_listener.h" #include "softbus_client_event_manager.h" #include "softbus_client_stub_interface.h" #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_feature_config.h" #include "softbus_log.h" +#include "softbus_socket.h" #include "softbus_utils.h" static bool g_isInited = false; @@ -140,14 +142,36 @@ static void FreeClientPkgName(void) (void)pthread_mutex_unlock(&g_pkgNameLock); } +static void ConnClientDeinit(void) { + (void)DeinitBaseListener(); + (void)ConnDeinitSockets(); +} + static void ClientModuleDeinit(void) { EventClientDeinit(); BusCenterClientDeinit(); TransClientDeinit(); + ConnClientDeinit(); DiscClientDeinit(); } +static int32_t ConnClientInit() { + int32_t ret = ConnInitSockets(); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnInitSockets failed!ret=%" PRId32 " \r\n", ret); + return ret; + } + + ret = InitBaseListener(); + if(ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitBaseListener failed!ret=%" PRId32 " \r\n", ret); + return ret; + } + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "init conn client success"); + return ret; +} + static int32_t ClientModuleInit(void) { SoftbusConfigInit(); @@ -166,11 +190,16 @@ static int32_t ClientModuleInit(void) goto ERR_EXIT; } - if (TransClientInit() == SOFTBUS_ERR) { + if(ConnClientInit() != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "init connect manager failed"); goto ERR_EXIT; } + if (TransClientInit() == SOFTBUS_ERR) { + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "init trans manager failed"); + goto ERR_EXIT; + } + return SOFTBUS_OK; ERR_EXIT: diff --git a/sdk/frame/small/src/bus_center_client_stub.c b/sdk/frame/small/src/bus_center_client_stub.c index 7633e94881..dc6a129d2b 100644 --- a/sdk/frame/small/src/bus_center_client_stub.c +++ b/sdk/frame/small/src/bus_center_client_stub.c @@ -25,7 +25,7 @@ int32_t ClientOnJoinLNNResult(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } @@ -58,7 +58,7 @@ int32_t ClientOnJoinLNNResult(IpcIo *data, IpcIo *reply) int32_t ClientOnLeaveLNNResult(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } size_t networkIdLen; @@ -80,7 +80,7 @@ int32_t ClientOnLeaveLNNResult(IpcIo *data, IpcIo *reply) int32_t ClientOnNodeOnlineStateChanged(IpcIo *data, IpcIo *reply) { if (data== NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } bool isOnline; @@ -104,7 +104,7 @@ int32_t ClientOnNodeOnlineStateChanged(IpcIo *data, IpcIo *reply) int32_t ClientOnNodeBasicInfoChanged(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } @@ -125,7 +125,7 @@ int32_t ClientOnNodeBasicInfoChanged(IpcIo *data, IpcIo *reply) int32_t ClientOnTimeSyncResult(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_ERR; } @@ -150,7 +150,7 @@ int32_t ClientOnTimeSyncResult(IpcIo *data, IpcIo *reply) void ClientOnPublishLNNResult(IpcIo *data, IpcIo *reply) { if (reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } int32_t publishId; @@ -163,7 +163,7 @@ void ClientOnPublishLNNResult(IpcIo *data, IpcIo *reply) void ClientOnRefreshLNNResult(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } int32_t refreshId; @@ -176,7 +176,7 @@ void ClientOnRefreshLNNResult(IpcIo *data, IpcIo *reply) void ClientOnRefreshDeviceFound(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return; } uint32_t infoSize; diff --git a/sdk/frame/small/src/disc_client_stub.c b/sdk/frame/small/src/disc_client_stub.c index c81d009dfe..f7c3068e7f 100644 --- a/sdk/frame/small/src/disc_client_stub.c +++ b/sdk/frame/small/src/disc_client_stub.c @@ -23,7 +23,7 @@ int32_t ClientOnDiscoverySuccess(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -36,7 +36,7 @@ int32_t ClientOnDiscoverySuccess(IpcIo *data, IpcIo *reply) int32_t ClientOnDiscoverFailed(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -51,7 +51,7 @@ int32_t ClientOnDiscoverFailed(IpcIo *data, IpcIo *reply) int32_t ClientOnDeviceFound(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -66,7 +66,7 @@ int32_t ClientOnDeviceFound(IpcIo *data, IpcIo *reply) int32_t ClientOnPublishSuccess(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } @@ -79,7 +79,7 @@ int32_t ClientOnPublishSuccess(IpcIo *data, IpcIo *reply) int32_t ClientOnPublishFail(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/sdk/frame/small/src/trans_client_stub.c b/sdk/frame/small/src/trans_client_stub.c index 029c42e354..379c2034df 100644 --- a/sdk/frame/small/src/trans_client_stub.c +++ b/sdk/frame/small/src/trans_client_stub.c @@ -24,7 +24,7 @@ int32_t ClientOnChannelOpened(IpcIo *data, IpcIo *reply) { if (reply == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } size_t size = 0; @@ -71,7 +71,7 @@ int32_t ClientOnChannelOpened(IpcIo *data, IpcIo *reply) int32_t ClientOnChannelOpenfailed(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } int32_t channelId = 0; @@ -85,7 +85,7 @@ int32_t ClientOnChannelOpenfailed(IpcIo *data, IpcIo *reply) int32_t ClientOnChannelClosed(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } int32_t channelId = 0; @@ -99,7 +99,7 @@ int32_t ClientOnChannelClosed(IpcIo *data, IpcIo *reply) int32_t ClientOnChannelMsgreceived(IpcIo *data, IpcIo *reply) { if (data == NULL) { - SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } int32_t channelId = 0; diff --git a/sdk/transmission/trans_channel/udp/common/src/client_trans_udp_manager.c b/sdk/transmission/trans_channel/udp/common/src/client_trans_udp_manager.c index 99f3ddffbd..62e5ffb229 100644 --- a/sdk/transmission/trans_channel/udp/common/src/client_trans_udp_manager.c +++ b/sdk/transmission/trans_channel/udp/common/src/client_trans_udp_manager.c @@ -211,7 +211,7 @@ int32_t TransOnUdpChannelOpened(const char *sessionName, const ChannelInfo *chan { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "OnUdpChannelOpened enter"); if (channel == NULL || udpPort == NULL || sessionName == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } UdpChannel *newChannel = ConvertChannelInfoToUdpChannel(sessionName, channel); diff --git a/sdk/transmission/trans_channel/udp/file/src/client_trans_file.c b/sdk/transmission/trans_channel/udp/file/src/client_trans_file.c index 6c6a45f222..712a773215 100644 --- a/sdk/transmission/trans_channel/udp/file/src/client_trans_file.c +++ b/sdk/transmission/trans_channel/udp/file/src/client_trans_file.c @@ -134,7 +134,7 @@ static void FileReceiveListener(int32_t dfileId, DFileMsgType msgType, const DFi int32_t TransOnFileChannelOpened(const char *sessionName, const ChannelInfo *channel, int32_t *filePort) { if (channel == NULL || filePort == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } int32_t fileSession; diff --git a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c index 391e39742d..87bf27b1ec 100644 --- a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c +++ b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c @@ -79,7 +79,7 @@ int32_t StartNStackXDFileServer(const char *myIP, const uint8_t *key, uint32_t keyLen, DFileMsgReceiver msgReceiver, int32_t *filePort) { if (myIP == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } int fd = OpenTcpServer(myIP, 0); @@ -120,7 +120,7 @@ int32_t StartNStackXDFileClient(const char *peerIp, int32_t peerPort, const uint uint32_t keyLen, DFileMsgReceiver msgReceiver) { if (peerIp == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } diff --git a/sdk/transmission/trans_channel/udp/stream/src/client_trans_stream.c b/sdk/transmission/trans_channel/udp/stream/src/client_trans_stream.c index 256d7e3369..f805364207 100644 --- a/sdk/transmission/trans_channel/udp/stream/src/client_trans_stream.c +++ b/sdk/transmission/trans_channel/udp/stream/src/client_trans_stream.c @@ -105,7 +105,7 @@ int32_t TransOnstreamChannelOpened(const ChannelInfo *channel, int32_t *streamPo { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "OnstreamChannelOpened enter."); if (channel == NULL || streamPort == NULL) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "invalid param."); + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:invalid param.", __func__); return SOFTBUS_INVALID_PARAM; } StreamType streamType = (StreamType)channel->streamType; -- Gitee From 6a317baf103ae8571945ddeefc8c5f7b8a2bce89 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 12 Jul 2022 09:29:41 +0000 Subject: [PATCH 05/16] fix bug after update Signed-off-by: duxbbo Change-Id: I8d1b8759f395c5cb9f252fe3c29bdc72e775bb4c --- .../trans_channel/common/src/trans_lane_pending_ctl.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c b/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c index 35010797c2..b0c48951fb 100644 --- a/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c +++ b/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c @@ -460,20 +460,21 @@ static int32_t SetP2pConnInfo(const P2pConnInfo *p2pInfo, ConnectOption *connOpt { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "set p2p conn info."); connOpt->type = CONNECT_P2P; - if (strcpy_s(connOpt->info.ipOption.ip, IP_LEN, p2pInfo->peerIp) != EOK) { + if (strcpy_s(connOpt->socketOption.addr, sizeof(connOpt->socketOption.addr), p2pInfo->peerIp) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "set p2p localIp err"); return SOFTBUS_MEM_ERR; } - - connOpt->info.ipOption.port = -1; + connOpt->socketOption.protocol = LNN_PROTOCOL_IP; + connOpt->socketOption.port = -1; return SOFTBUS_OK; } static int32_t SetWlanConnInfo(const WlanConnInfo *connInfo, ConnectOption *connOpt) { connOpt->type = CONNECT_TCP; - connOpt->info.ipOption.port = (int32_t)connInfo->port; - if (strcpy_s(connOpt->info.ipOption.ip, sizeof(connOpt->info.ipOption.ip), + connOpt->socketOption.port = (int32_t)connInfo->port; + connOpt->socketOption.protocol = LNN_PROTOCOL_IP; + if (strcpy_s(connOpt->socketOption.addr, sizeof(connOpt->socketOption.addr), connInfo->ip) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "set wlan localIp err"); return SOFTBUS_ERR; -- Gitee From ebbf0053df0cdcd0215b38265f0428aee57861e1 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Wed, 13 Jul 2022 03:10:19 +0000 Subject: [PATCH 06/16] opt code Signed-off-by: duxbbo Change-Id: I5e13d8a0fd05f6a7df6716456ac34a3112967c2e --- core/authentication/include/auth_manager.h | 2 +- core/authentication/src/auth_manager.c | 14 +++++--------- core/authentication/src/auth_socket.c | 12 +++--------- .../common/src/trans_lane_pending_ctl.c | 4 ++-- .../proxy/src/softbus_proxychannel_control.c | 2 +- 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/core/authentication/include/auth_manager.h b/core/authentication/include/auth_manager.h index f19b0d6757..4a53700554 100644 --- a/core/authentication/include/auth_manager.h +++ b/core/authentication/include/auth_manager.h @@ -100,7 +100,7 @@ AuthManager *AuthGetManagerByAuthId(int64_t authId); AuthManager *AuthGetManagerByConnId(uint16_t id); AuthManager *AuthGetManagerByFd(int32_t fd); AuthManager *AuthGetManagerByConnectionId(uint32_t connectionId); -int32_t CreateServerIpAuth(int32_t cfd, const char *ip, int32_t port); +int32_t AddAuthServer(int32_t cfd, const ConnectOption *clientAddr); void AuthHandlePeerSyncDeviceInfo(AuthManager *auth, uint8_t *data, uint32_t len); void HandleReceiveDeviceId(AuthManager *auth, uint8_t *data); void HandleReceiveAuthData(AuthManager *auth, int32_t module, uint8_t *data, uint32_t dataLen); diff --git a/core/authentication/src/auth_manager.c b/core/authentication/src/auth_manager.c index 16ffe480b2..803de794f5 100644 --- a/core/authentication/src/auth_manager.c +++ b/core/authentication/src/auth_manager.c @@ -1316,7 +1316,7 @@ static void AuthListInit(void) AuthSessionKeyListInit(); } -int32_t CreateServerIpAuth(int32_t cfd, const char *ip, int32_t port) +int32_t AddAuthServer(int32_t cfd, const ConnectOption *clientAddr) { AuthManager *auth = NULL; @@ -1341,21 +1341,17 @@ int32_t CreateServerIpAuth(int32_t cfd, const char *ip, int32_t port) SoftBusFree(auth); return SOFTBUS_ERR; } - ConnectOption option; - (void)memset_s(&option, sizeof(ConnectOption), 0, sizeof(ConnectOption)); - option.type = CONNECT_TCP; - if (strncpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), ip, strlen(ip))) { + + if (memcpy_s(&auth->option, sizeof(auth->option), clientAddr, sizeof(*clientAddr)) != EOK) { (void)SoftBusMutexUnlock(&g_authLock); SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strncpy_s failed"); SoftBusFree(auth); return SOFTBUS_ERR; } - option.socketOption.port = port; - option.socketOption.protocol = LNN_PROTOCOL_IP; - auth->option = option; + ListNodeInsert(&g_authServerHead, &auth->node); (void)SoftBusMutexUnlock(&g_authLock); - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "create ip auth as server side"); + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_INFO, "create auth as server side"); return SOFTBUS_OK; } diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index e82402c1b4..3126b445c2 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -331,13 +331,7 @@ static int32_t AuthOnConnectEvent(ListenerModule module, int32_t events, int32_t return SOFTBUS_INVALID_PARAM; } - const SocketInterface* socketInterface = GetSocketInterface(LNN_PROTOCOL_IP); - if(socketInterface == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!type=%d", LNN_PROTOCOL_IP); - return SOFTBUS_ERR; - } - int32_t port = socketInterface->GetSockPort(cfd); - if (port <= 0) { + if (clientAddr->socketOption.port <= 0) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth GetTcpSockPort failed"); return SOFTBUS_ERR; } @@ -345,8 +339,8 @@ static int32_t AuthOnConnectEvent(ListenerModule module, int32_t events, int32_t SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth AddTrigger failed"); return SOFTBUS_ERR; } - if (CreateServerIpAuth(cfd, clientAddr->socketOption.addr, port) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth CreateServerIpAuth failed"); + if (AddAuthServer(cfd, clientAddr) != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth AddAuthServer failed"); AuthCloseTcpFd(cfd); return SOFTBUS_ERR; } diff --git a/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c b/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c index b0c48951fb..feb87faf07 100644 --- a/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c +++ b/core/transmission/trans_channel/common/src/trans_lane_pending_ctl.c @@ -485,7 +485,7 @@ static int32_t SetWlanConnInfo(const WlanConnInfo *connInfo, ConnectOption *conn static int32_t SetBrConnInfo(const BrConnInfo *brInfo, ConnectOption *connOpt) { connOpt->type = CONNECT_BR; - if (strcpy_s(connOpt->info.brOption.brMac, sizeof(connOpt->info.brOption.brMac), + if (strcpy_s(connOpt->brOption.brMac, sizeof(connOpt->brOption.brMac), brInfo->brMac) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "set br mac err"); return SOFTBUS_ERR; @@ -497,7 +497,7 @@ static int32_t SetBrConnInfo(const BrConnInfo *brInfo, ConnectOption *connOpt) static int32_t SetBleConnInfo(const BleConnInfo *bleInfo, ConnectOption *connOpt) { connOpt->type = CONNECT_BLE; - if (strcpy_s(connOpt->info.bleOption.bleMac, sizeof(connOpt->info.bleOption.bleMac), + if (strcpy_s(connOpt->bleOption.bleMac, sizeof(connOpt->bleOption.bleMac), bleInfo->bleMac) != EOK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "set ble mac err"); return SOFTBUS_ERR; diff --git a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_control.c b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_control.c index 88195cfb75..7707fe81d1 100644 --- a/core/transmission/trans_channel/proxy/src/softbus_proxychannel_control.c +++ b/core/transmission/trans_channel/proxy/src/softbus_proxychannel_control.c @@ -65,7 +65,7 @@ static int32_t GetChiperParamByConnId(uint32_t connId, uint8_t *chiper) authType = CONNECT_TCP; break; case CONNECT_BR: - if (GetRemoteUuidByBtMac(option.info.brOption.brMac, uuid, UUID_BUF_LEN) != SOFTBUS_OK) { + if (GetRemoteUuidByBtMac(option.brOption.brMac, uuid, UUID_BUF_LEN) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "get uuid by btmac fail"); return SOFTBUS_ERR; } -- Gitee From 8f2b7243cc73239eb5fbb86c329950bcf009f760 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 19 Jul 2022 08:08:24 +0000 Subject: [PATCH 07/16] protocol def to common Signed-off-by: duxbbo Change-Id: I464ab08d380fce7673da362152d67489938f459b --- .../include}/softbus_protocol_def.h | 16 ---------------- 1 file changed, 16 deletions(-) rename core/{connection/interface => common/include}/softbus_protocol_def.h (83%) diff --git a/core/connection/interface/softbus_protocol_def.h b/core/common/include/softbus_protocol_def.h similarity index 83% rename from core/connection/interface/softbus_protocol_def.h rename to core/common/include/softbus_protocol_def.h index f674a5d5e3..fa49514107 100644 --- a/core/connection/interface/softbus_protocol_def.h +++ b/core/common/include/softbus_protocol_def.h @@ -39,20 +39,4 @@ typedef uint64_t ProtocolType; #define BIND_ADDR_NONE NULL #define BIND_ADDR_ALL "0" -#ifndef TEMP_FAILURE_RETRY -#define TEMP_FAILURE_RETRY(expression) \ -( \ - __extension__ \ - ( \ - { \ - long int __result; \ - do __result = (long int) (expression); \ - while (__result == SOFTBUS_ADAPTER_SOCKET_EINTR); \ - __result; \ - } \ - ) \ -) -#endif - - #endif -- Gitee From c6603837b788e007e0be5806fc9dfc969da1ca6f Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 19 Jul 2022 10:57:18 +0000 Subject: [PATCH 08/16] fix testcase Signed-off-by: duxbbo Change-Id: Ia2cd21d85e34bb5662ec7dfa2b5d02092d9c2d10 --- .../interface/softbus_conn_interface.h | 2 +- .../common/softbus_conn_common_test.cpp | 55 +++- .../core/connection/tcp/tcp_manager_test.cpp | 265 ++++++++++++++---- 3 files changed, 256 insertions(+), 66 deletions(-) diff --git a/core/connection/interface/softbus_conn_interface.h b/core/connection/interface/softbus_conn_interface.h index c881c057de..dfa32b63bf 100644 --- a/core/connection/interface/softbus_conn_interface.h +++ b/core/connection/interface/softbus_conn_interface.h @@ -159,8 +159,8 @@ typedef struct { struct ListenerSocketOption { char addr[MAX_SOCKET_ADDR_LEN]; int32_t port; - ProtocolType protocol; ListenerModule moduleId; /* For details, see {@link ListenerModule}. */ + ProtocolType protocol; }; typedef struct { diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index a691f9439f..e28d1615b6 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -22,7 +22,7 @@ #include "softbus_def.h" #include "softbus_errcode.h" #include "softbus_log.h" -#include "softbus_socket.h" +#include "softbus_tcp_socket.h" #include "softbus_thread_pool.h" #include "softbus_utils.h" @@ -1056,18 +1056,33 @@ HWTEST_F(SoftbusCommonTest, testBaseListener035, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testTcpSocket001, TestSize.Level1) { - int fd = OpenTcpServerSocket("127.0.0.1", g_port); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "127.0.0.1", + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .port = g_port, + .protocol = LNN_PROTOCOL_IP + } + }; + + int fd = tcp->OpenServerSocket(&info); int ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; ASSERT_TRUE(ret == SOFTBUS_OK); - int port = GetTcpSockPort(fd); + int port = tcp->GetSockPort(fd); EXPECT_EQ(port, g_port); ConnCloseSocket(fd); - fd = OpenTcpServerSocket(nullptr, g_port); + fd = tcp->OpenServerSocket(nullptr); ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(fd); - fd = OpenTcpServerSocket("127.0.0.1", -1); + + info.socketOption.port = -1; + fd = tcp->OpenServerSocket(&info); ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(fd); @@ -1081,15 +1096,30 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket001, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testTcpSocket002, TestSize.Level1) { - int fd = OpenTcpClientSocket(nullptr, "127.0.0.1", g_port, false); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "127.0.0.1", + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .port = g_port, + .protocol = LNN_PROTOCOL_IP + } + }; + + int fd = tcp->OpenClientSocket(nullptr, "127.0.0.1", false); int ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(fd); - fd = OpenTcpClientSocket(nullptr, nullptr, g_port, false); + fd = tcp->OpenClientSocket(nullptr, nullptr, false); ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(fd); - fd = OpenTcpClientSocket("127.0.0.1", "127.0.0.1", -1, false); + + option.socketOption.port = -1; + fd = tcp->OpenClientSocket(&option, "127.0.0.1", false); ret = (fd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(fd); @@ -1103,8 +1133,10 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket002, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testTcpSocket003, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); int invalidFd = 1; - int port = GetTcpSockPort(invalidFd); + int port = tcp->GetSockPort(invalidFd); int ret = (port <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); }; @@ -1117,7 +1149,10 @@ HWTEST_F(SoftbusCommonTest, testTcpSocket003, TestSize.Level1) */ HWTEST_F(SoftbusCommonTest, testTcpSocket004, TestSize.Level1) { - int clientFd = OpenTcpClientSocket(nullptr, "127.5.0.1", g_port, false); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + int clientFd = tcp->OpenClientSocket(nullptr, "127.5.0.1", false); int ret = (clientFd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ssize_t bytes = ConnSendSocketData(clientFd, "Hello world", 11, 0); diff --git a/tests/core/connection/tcp/tcp_manager_test.cpp b/tests/core/connection/tcp/tcp_manager_test.cpp index 58c1bf894f..5282ff8c2b 100644 --- a/tests/core/connection/tcp/tcp_manager_test.cpp +++ b/tests/core/connection/tcp/tcp_manager_test.cpp @@ -845,23 +845,38 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager021, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager022, TestSize.Level1) { - int port = 6666; - int clientfd = OpenTcpClientSocket(nullptr, "127.0.0.1", port, false); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + int clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", false); int ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(clientfd); - clientfd = OpenTcpClientSocket(nullptr, nullptr, port, false); + clientfd = tcp->OpenClientSocket(&option, nullptr, false); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(clientfd); - clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", -1, false); + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + option.socketOption.port = -1; + + clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", false); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); ConnCloseSocket(clientfd); - clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + option.socketOption.port = 6666; + clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", true); ret = (clientfd < 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); ConnCloseSocket(clientfd); @@ -877,17 +892,28 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager022, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager023, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); int fd = -1; - int port = GetTcpSockPort(fd); + int port = tcp->GetSockPort(fd); int ret = (port <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_ERR); - int i_port = 6666; - fd = OpenTcpServerSocket("127.0.0.1", i_port); + LocalListenerInfo option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "127.0.0.1", + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + fd = tcp->OpenServerSocket(&option); ret = (fd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; ASSERT_TRUE(ret == SOFTBUS_OK); - port = GetTcpSockPort(fd); - EXPECT_EQ(port, i_port); + port = tcp->GetSockPort(fd); + EXPECT_EQ(port, 6666); ConnCloseSocket(fd); }; @@ -901,8 +927,20 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager023, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager024, TestSize.Level1) { - int port = 6666; - int fd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + int fd = tcp->OpenClientSocket(&option, "127.0.0.1", true); int tos = 1; int ret = SetIpTos(fd, tos); EXPECT_EQ(SOFTBUS_OK, ret); @@ -924,12 +962,23 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager024, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager025, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; int fd = -1; bool isNonBlock = true; EXPECT_EQ(SOFTBUS_INVALID_PARAM, ConnToggleNonBlockMode(fd, isNonBlock)); - int port = 6666; - fd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + fd = tcp->OpenClientSocket(&option, "127.0.0.1", true); EXPECT_EQ(SOFTBUS_OK, ConnToggleNonBlockMode(fd, isNonBlock)); ConnCloseSocket(fd); }; @@ -944,14 +993,27 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager025, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager026, TestSize.Level1) { - int port = 6666; + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); - int clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, false); + int clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", false); ssize_t bytes = ConnSendSocketData(clientfd, "Hello world", 11, 0); EXPECT_EQ(bytes, -1); ConnShutdownSocket(clientfd); - clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", true); bytes = ConnSendSocketData(clientfd, "Hello world", 11, 0); EXPECT_EQ(bytes, -1); ConnShutdownSocket(clientfd); @@ -967,8 +1029,22 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager026, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager027, TestSize.Level1) { - int port = 6666; - int clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + + int clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", true); int ret = (clientfd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); @@ -1003,8 +1079,20 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager028, TestSize.Level1) int fd = -1; EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, sizeof(ConnPktHead) + head.len, 0)); - int port = 6666; - fd = OpenTcpClientSocket(nullptr, "127.0.0.1", port, true); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + fd = tcp->OpenClientSocket(&option, "127.0.0.1", true); EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, nullptr, sizeof(ConnPktHead) + head.len, 0)); EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, 0, 0)); EXPECT_EQ(SOFTBUS_ERR, ConnRecvSocketData(fd, data, sizeof(ConnPktHead) + head.len, 0)); @@ -1021,8 +1109,22 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager028, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager029, TestSize.Level1) { - int port = 6666; - int clientfd = OpenTcpClientSocket(Ip, "127.0.0.1", port, true); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + + int clientfd = tcp->OpenClientSocket(&option, "127.0.0.1", true); int ret = (clientfd <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; EXPECT_EQ(ret, SOFTBUS_OK); EXPECT_TRUE(ConnGetSocketError(clientfd) != 0); @@ -1294,6 +1396,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager038, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager039, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1301,7 +1406,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager039, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + int fd = tcp->OpenServerSocket(&info); uint32_t tos = 65535; int rc = SetIpTos(fd, tos); EXPECT_EQ(rc, SOFTBUS_OK); @@ -1317,6 +1422,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager039, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager040, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6667; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1324,7 +1432,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager040, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - EXPECT_TRUE(OpenTcpServerSocket(info.socketOption.addr, info.socketOption.port) > 0); + EXPECT_TRUE(tcp->OpenServerSocket(&info) > 0); } /* @@ -1337,16 +1445,34 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager040, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager041, TestSize.Level1) { - int port = 6666; - LocalListenerInfo info = {}; - info.type = CONNECT_TCP; - info.socketOption.port = port; - info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - info.socketOption.protocol = LNN_PROTOCOL_IP; + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + LocalListenerInfo info = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + + int fd = tcp->OpenServerSocket(&info); EXPECT_EQ(SetIpTos(fd, 65535), SOFTBUS_OK); - EXPECT_TRUE(OpenTcpClientSocket(info.socketOption.addr, Ip, port, true) > 0); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + EXPECT_TRUE(tcp->OpenClientSocket(&option, Ip, true) > 0); }; /* @@ -1359,6 +1485,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager041, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager042, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1366,7 +1495,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager042, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + int fd = tcp->OpenServerSocket(&info); EXPECT_TRUE(fd > 0); EXPECT_EQ(SetIpTos(fd, 65535), SOFTBUS_OK); EXPECT_TRUE(ConnToggleNonBlockMode(fd, true) == 0); @@ -1382,6 +1511,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager042, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1389,8 +1521,8 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); - EXPECT_TRUE(GetTcpSockPort(fd) > 0); + int fd = tcp->OpenServerSocket(&info); + EXPECT_TRUE(tcp->GetSockPort(fd) > 0); }; /* @@ -1403,14 +1535,21 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager043, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager044, TestSize.Level1) { - int port = 6666; - LocalListenerInfo info = {}; - info.type = CONNECT_TCP; - info.socketOption.port = port; - info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - info.socketOption.protocol = LNN_PROTOCOL_IP; - (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = "", + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + int fd = tcp->OpenClientSocket(&option, option.socketOption.addr, false); const char * buf = "SendDataTest"; EXPECT_EQ(ConnSendSocketData(fd, buf, 13, 0), -1); }; @@ -1425,6 +1564,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager044, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager045, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1432,7 +1574,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager045, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + int fd = tcp->OpenServerSocket(&info); ConnCloseSocket(fd); EXPECT_TRUE(fd >= 0); }; @@ -1447,14 +1589,21 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager045, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager046, TestSize.Level1) { - int port = 6666; - LocalListenerInfo info = {}; - info.type = CONNECT_TCP; - info.socketOption.port = port; - info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; - info.socketOption.protocol = LNN_PROTOCOL_IP; - (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpClientSocket("127.0.0.1", info.socketOption.addr, port, false); + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + + ConnectOption option = { + .type = CONNECT_TCP, + .socketOption = { + .addr = {0}, + .port = 6666, + .moduleId = DIRECT_CHANNEL_SERVER_WIFI, + .protocol = LNN_PROTOCOL_IP + } + }; + + (void)strcpy_s(option.socketOption.addr, sizeof(option.socketOption.addr), Ip); + int fd = tcp->OpenClientSocket(&option, option.socketOption.addr, false); const char * buf = "SendDataTest"; EXPECT_EQ(ConnSendSocketData(fd, buf, 13, 0xffff), -1); }; @@ -1469,6 +1618,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager046, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager047, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1476,7 +1628,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager047, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + int fd = tcp->OpenServerSocket(&info); ConnShutdownSocket(fd); EXPECT_TRUE(fd >= 0); }; @@ -1511,6 +1663,9 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager048, TestSize.Level1) */ HWTEST_F(SoftbusTcpManagerTest, testTcpManager049, TestSize.Level1) { + const SocketInterface *tcp = GetTcpProtocol(); + ASSERT_NE(tcp, nullptr); + int port = 6666; LocalListenerInfo info = {}; info.type = CONNECT_TCP; @@ -1518,7 +1673,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager049, TestSize.Level1) info.socketOption.moduleId = DIRECT_CHANNEL_SERVER_WIFI; info.socketOption.protocol = LNN_PROTOCOL_IP; (void)strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), Ip); - int fd = OpenTcpServerSocket(info.socketOption.addr, port); + int fd = tcp->OpenServerSocket(&info); EXPECT_EQ(ConnSetTcpKeepAlive(fd, 100), SOFTBUS_OK); }; } -- Gitee From f4ec4e026c27a45fb51ada999d350004f2ac4af1 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 19 Jul 2022 11:18:06 +0000 Subject: [PATCH 09/16] format code Signed-off-by: duxbbo Change-Id: I97b80e3f3f5fa889c8bffee7a3babe1dfd5fffb1 --- .../common/src/softbus_base_listener.c | 182 +++++++++--------- core/connection/common/src/softbus_socket.c | 29 +-- .../trans_channel/udp/file/src/file_adapter.c | 4 +- .../common/softbus_conn_common_test.cpp | 5 +- 4 files changed, 114 insertions(+), 106 deletions(-) diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index d6851182d6..5a5769b49b 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -90,41 +90,42 @@ static void InitListenerInfo(SoftbusBaseListenerInfo *listenerInfo); static int32_t ShutdownBaseListener(SoftbusListenerNode *node); static int32_t StopListenerThread(SoftbusListenerNode *node); -static SoftbusListenerNode* RequestListenerNode(ListenerModule module) { +static SoftbusListenerNode *RequestListenerNode(ListenerModule module) +{ if (module >= UNUSE_BUTT) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); return NULL; } int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); return NULL; } SoftbusListenerNode *node = g_listenerList[module]; do { - if(node == NULL) { + if (node == NULL) { break; } - if(node->info.status == LISTENER_CLOSEING) { + if (node->info.status == LISTENER_CLOSEING) { node = NULL; break; } ret = SoftBusMutexLock(&node->lock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock node failed!.", __func__); node = NULL; break; } node->ref++; SoftBusMutexUnlock(&node->lock); - }while(false); + } while (false); (void)SoftBusMutexUnlock(&g_listenerListLock); return node; } -static void ReleaseListenerSockets(SoftbusListenerNode* node) +static void ReleaseListenerSockets(SoftbusListenerNode *node) { if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); @@ -146,7 +147,7 @@ static void ReleaseListenerSockets(SoftbusListenerNode* node) static int32_t ReleaseListenerRef(ListenerModule module) { SoftbusListenerNode *node = g_listenerList[module]; - if(node == NULL) { + if (node == NULL) { return SOFTBUS_NOT_FIND; } int32_t ret = SoftBusMutexLock(&node->lock); @@ -156,7 +157,7 @@ static int32_t ReleaseListenerRef(ListenerModule module) } node->ref--; - if(node->ref == 0) { + if (node->ref == 0) { g_listenerList[module] = NULL; if (node->listener != NULL) { @@ -171,23 +172,23 @@ static int32_t ReleaseListenerRef(ListenerModule module) } else { (void)SoftBusMutexUnlock(&node->lock); } - + return SOFTBUS_OK; } static void ReleaseListenerNode(SoftbusListenerNode *node) { - if(node == NULL || node->module >= UNUSE_BUTT) { + if (node == NULL || node->module >= UNUSE_BUTT) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); return; } int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); return; } ret = ReleaseListenerRef(node->module); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: release node failed!.", __func__); } (void)SoftBusMutexUnlock(&g_listenerListLock); @@ -220,10 +221,11 @@ static int32_t CreateSpecifiedListenerModule(ListenerModule module) } static int32_t CreateStaticModules(void) { - for(uint32_t i = 0; i < LISTENER_MODULE_DYNAMIC_START; i++) { + for (uint32_t i = 0; i < LISTENER_MODULE_DYNAMIC_START; i++) { int32_t ret = CreateSpecifiedListenerModule(i); - if(ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: create module %" PRIu32 " failed!ret=" PRId32, __func__, i, ret); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: create module %" PRIu32 " failed!ret=" PRId32, + __func__, i, ret); return ret; } } @@ -233,7 +235,7 @@ static int32_t CreateStaticModules(void) { int32_t InitBaseListener(void) { int32_t ret = SoftBusMutexInit(&g_fdSetLock, NULL); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_fdSetLock init failed.ret=%" PRId32, ret); return ret; } @@ -268,8 +270,8 @@ int32_t InitBaseListener(void) SoftBusSocketFdZero(&g_exceptSet); ret = CreateStaticModules(); - if(ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Create static listener module failed! ret=%" PRId32 , ret); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Create static listener module failed! ret=%" PRId32, ret); (void)ThreadPoolDestroy(g_threadPool); (void)SoftBusMutexDestroy(&g_fdSetLock); (void)SoftBusMutexDestroy(&g_listenerListLock); @@ -281,7 +283,7 @@ int32_t InitBaseListener(void) void DeinitBaseListener(void) { int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); return; } @@ -292,9 +294,9 @@ void DeinitBaseListener(void) g_listenerList[i] = NULL; } - if(g_threadPool != NULL) { + if (g_threadPool != NULL) { ret = ThreadPoolDestroy(g_threadPool); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Destroy thread pool failed.ret=%" PRId32, ret); } } @@ -319,8 +321,7 @@ static void UpdateMaxFd(void) { int32_t tmpMax = -1; int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if (ret != SOFTBUS_OK) - { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); return; } @@ -385,11 +386,11 @@ static void ClearListenerFdList(const ListNode *cfdList) static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo *info) { - if(node == NULL || info == NULL || info->socketOption.port < 0) { + if (node == NULL || info == NULL || info->socketOption.port < 0) { return SOFTBUS_INVALID_PARAM; } - if(node->socketIf == NULL) { + if (node->socketIf == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "no protocol inited!"); return SOFTBUS_INVALID_PARAM; } @@ -418,7 +419,7 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * ret = SOFTBUS_ERR; break; } - if(memcpy_s(&node->info.listenerInfo, sizeof(node->info.listenerInfo), info, sizeof(*info)) != EOK) { + if (memcpy_s(&node->info.listenerInfo, sizeof(node->info.listenerInfo), info, sizeof(*info)) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Copy server option failed!"); ReleaseListenerSockets(node); ret = SOFTBUS_MEM_ERR; @@ -465,17 +466,12 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) int32_t cfd; ConnectOption clientAddr = { .type = node->info.listenerInfo.type, - .socketOption = { - .addr = {0}, - .port = 0, - .protocol = 0, - .moduleId = node->module - } + .socketOption = {.addr = {0}, .port = 0, .protocol = 0, .moduleId = node->module} }; int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(node->socketIf->AcceptClient(fd, &clientAddr, &cfd)); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, - "accept failed, cfd=%d, module=%d, fd=%d", cfd, node->module, fd); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, cfd=%d, module=%d, fd=%d", cfd, + node->module, fd); break; } if (listener.onConnectEvent != NULL) { @@ -487,7 +483,7 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) } } else { if (listener.onDataEvent != NULL) { - listener.onDataEvent(node->module ,events, fd); + listener.onDataEvent(node->module, events, fd); } else { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Please set onDataEvent callback"); } @@ -513,7 +509,8 @@ static int CreateFdArr(int32_t **fdArr, int32_t *fdArrLen, const ListNode *list) *fdArrLen = 0; FdNode *item = NULL; - LIST_FOR_EACH_ENTRY(item, list, FdNode, node) { + LIST_FOR_EACH_ENTRY(item, list, FdNode, node) + { if (*fdArrLen == fdArrSize) { int32_t *tmp = NULL; @@ -546,7 +543,8 @@ static void ProcessNodeData( } if (node->info.status != LISTENER_RUNNING) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!status = %d", node->module, node->info.status); + SoftBusLog( + SOFTBUS_LOG_CONN, SOFTBUS_LOG_DBG, "module %d is not running!status = %d", node->module, node->info.status); SoftBusMutexUnlock(&node->lock); return; } @@ -582,7 +580,7 @@ static void ProcessData(SoftBusFdSet *readSet, SoftBusFdSet *writeSet, SoftBusFd { for (int i = 0; i < UNUSE_BUTT; i++) { SoftbusListenerNode *node = RequestListenerNode(i); - if(node == NULL) { + if (node == NULL) { continue; } ProcessNodeData(node, readSet, writeSet, exceptSet); @@ -616,15 +614,15 @@ EXIT: return SOFTBUS_MEM_ERR; } -static int32_t SelectThread(void* data) +static int32_t SelectThread(void *data) { (void)data; SoftBusSockTimeOut tv = {0}; tv.sec = 0; tv.usec = TIMEOUT; int32_t timeOut = 0; - if (SoftbusGetConfig(SOFTBUS_INT_SUPPORT_SELECT_INTERVAL, (unsigned char *)&timeOut, - sizeof(timeOut)) == SOFTBUS_OK) { + if (SoftbusGetConfig(SOFTBUS_INT_SUPPORT_SELECT_INTERVAL, (unsigned char *)&timeOut, sizeof(timeOut)) == + SOFTBUS_OK) { tv.usec = (long)timeOut; } SoftBusFdSet readSet; @@ -657,14 +655,15 @@ static int32_t SelectThread(void* data) static int32_t StopListenerThread(SoftbusListenerNode *node) { int32_t ret = SoftBusMutexLock(&node->lock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed!ret=%" PRId32, __func__, ret); return ret; } do { - if(node->info.status != LISTENER_RUNNING) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:node not running.status=%d", __func__, node->info.status); + if (node->info.status != LISTENER_RUNNING) { + SoftBusLog( + SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:node not running.status=%d", __func__, node->info.status); break; } @@ -676,9 +675,9 @@ static int32_t StopListenerThread(SoftbusListenerNode *node) --g_threadRefCount; - if(g_threadRefCount <= 0) { + if (g_threadRefCount <= 0) { ret = ThreadPoolRemoveJob(g_threadPool, (uintptr_t)0); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:remove job failed!ret=%" PRId32, __func__, ret); (void)SoftBusMutexUnlock(&g_threadLock); break; @@ -733,7 +732,7 @@ static int32_t StartListenerThread(SoftbusListenerNode *node, ModeType modeType) (void)SoftBusMutexUnlock(&g_threadLock); } while (false); - if(ret == SOFTBUS_OK) { + if (ret == SOFTBUS_OK) { node->info.modeType = modeType; node->info.status = LISTENER_RUNNING; } @@ -742,8 +741,9 @@ static int32_t StartListenerThread(SoftbusListenerNode *node, ModeType modeType) return ret; } -static int32_t ShutdownBaseListener(SoftbusListenerNode *node) { - if(node == NULL) { +static int32_t ShutdownBaseListener(SoftbusListenerNode *node) +{ + if (node == NULL) { return SOFTBUS_NOT_FIND; } @@ -754,8 +754,8 @@ static int32_t ShutdownBaseListener(SoftbusListenerNode *node) { } ret = StopListenerThread(node); - if(ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: stop listener failed!ret=%" PRId32 , __func__, ret); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: stop listener failed!ret=%" PRId32, __func__, ret); } node->info.status = LISTENER_CLOSEING; SoftBusMutexUnlock(&node->lock); @@ -775,7 +775,7 @@ static void InitListenerInfo(SoftbusBaseListenerInfo *listenerInfo) uint32_t RequireListenerModule(void) { uint32_t moduleId = CONN_INVALID_LISTENER_MODULE_ID; - if(SoftBusMutexLock(&g_listenerListLock) != SOFTBUS_OK) { + if (SoftBusMutexLock(&g_listenerListLock) != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return CONN_INVALID_LISTENER_MODULE_ID; } @@ -786,7 +786,7 @@ uint32_t RequireListenerModule(void) } int32_t ret = CreateSpecifiedListenerModule(i); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:create listener failed! ret=%" PRId32, __func__, ret); break; } @@ -862,7 +862,7 @@ static int32_t DelTriggerFromSet(int32_t fd, TriggerType triggerType) int32_t StartBaseClient(ListenerModule module) { - SoftbusListenerNode* node = RequestListenerNode(module); + SoftbusListenerNode *node = RequestListenerNode(module); if (node == NULL) { return SOFTBUS_INVALID_PARAM; } @@ -909,13 +909,15 @@ int32_t StartBaseListener(const LocalListenerInfo *info) break; } if (node->info.status != LISTENER_IDLE) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:listener is not in idle status.status=%d",__func__, node->info.status); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:listener is not in idle status.status=%d", __func__, + node->info.status); ret = SOFTBUS_ERR; break; } node->socketIf = GetSocketInterface(info->socketOption.protocol); - if(node->socketIf == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:no such protocol.protocol=%d",__func__, info->socketOption.protocol); + if (node->socketIf == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:no such protocol.protocol=%d", __func__, + info->socketOption.protocol); ret = SOFTBUS_ERR; break; } @@ -926,7 +928,8 @@ int32_t StartBaseListener(const LocalListenerInfo *info) } ret = StartListenerThread(node, SERVER_MODE); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Start listener thread failed!ret=%" PRId32,__func__, ret); + SoftBusLog( + SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Start listener thread failed!ret=%" PRId32, __func__, ret); ReleaseListenerSockets(node); break; } @@ -960,15 +963,14 @@ int32_t GetSoftbusBaseListener(ListenerModule module, SoftbusBaseListener *liste int32_t ret = SOFTBUS_OK; do { if (node->listener == NULL) { - ret = SOFTBUS_NOT_FIND; + ret = SOFTBUS_NOT_FIND; break; } - if (memcpy_s(listener, sizeof(SoftbusBaseListener), node->listener, - sizeof(SoftbusBaseListener)) != EOK) { + if (memcpy_s(listener, sizeof(SoftbusBaseListener), node->listener, sizeof(SoftbusBaseListener)) != EOK) { ret = SOFTBUS_MEM_ERR; break; } - }while(false); + } while (false); (void)SoftBusMutexUnlock(&node->lock); (void)ReleaseListenerNode(node); return SOFTBUS_OK; @@ -976,8 +978,7 @@ int32_t GetSoftbusBaseListener(ListenerModule module, SoftbusBaseListener *liste int32_t SetSoftbusBaseListener(ListenerModule module, const SoftbusBaseListener *listener) { - if (listener == NULL || - listener->onConnectEvent == NULL || listener->onDataEvent == NULL) { + if (listener == NULL || listener->onConnectEvent == NULL || listener->onDataEvent == NULL) { return SOFTBUS_INVALID_PARAM; } SoftbusListenerNode *node = RequestListenerNode(module); @@ -991,7 +992,7 @@ int32_t SetSoftbusBaseListener(ListenerModule module, const SoftbusBaseListener (void)ReleaseListenerNode(node); return SOFTBUS_LOCK_ERR; } - + int32_t ret = SOFTBUS_OK; do { if (node->listener == NULL) { @@ -1049,14 +1050,14 @@ int32_t StopBaseListener(ListenerModule module) static int32_t WaitBaseListenerDestroy(ListenerModule module, int32_t waitTimeOut) { const int32_t waitInterval = 100; - while(waitTimeOut > 0) { + while (waitTimeOut > 0) { int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_LOCK_ERR; } - if(g_listenerList[module] != NULL) { + if (g_listenerList[module] != NULL) { SoftBusMutexUnlock(&g_listenerListLock); SoftBusSleepMs(waitInterval); waitTimeOut -= waitInterval; @@ -1070,28 +1071,28 @@ static int32_t WaitBaseListenerDestroy(ListenerModule module, int32_t waitTimeOu void DestroyBaseListener(ListenerModule module) { - if(module >= UNUSE_BUTT) { + if (module >= UNUSE_BUTT) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); return; } SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32, __func__, module); int32_t ret = SoftBusMutexLock(&g_listenerListLock); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); return; } ret = ShutdownBaseListener(g_listenerList[module]); - if(ret != SOFTBUS_OK) { - (void) SoftBusMutexUnlock(&g_listenerListLock); + if (ret != SOFTBUS_OK) { + (void)SoftBusMutexUnlock(&g_listenerListLock); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:shutdown listener failed!ret=%" PRId32, __func__, ret); g_listenerList[module] = NULL; return; } ret = ReleaseListenerRef(module); - if(ret != SOFTBUS_OK) { - (void) SoftBusMutexUnlock(&g_listenerListLock); + if (ret != SOFTBUS_OK) { + (void)SoftBusMutexUnlock(&g_listenerListLock); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:release listener failed!ret=%" PRId32, __func__, ret); g_listenerList[module] = NULL; return; @@ -1102,12 +1103,12 @@ void DestroyBaseListener(ListenerModule module) SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " finished. ret=%" PRId32, __func__, module, ret); } - static bool CheckFdIsExist(SoftbusBaseListenerInfo *info, int32_t fd) { FdNode *item = NULL; FdNode *nextItem = NULL; - LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &info->node, FdNode, node) { + LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &info->node, FdNode, node) + { if (item->fd == fd) { return true; } @@ -1133,7 +1134,8 @@ static void DelFdNode(SoftbusBaseListenerInfo *info, int32_t fd) FdNode *item = NULL; FdNode *nextItem = NULL; - LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &info->node, FdNode, node) { + LIST_FOR_EACH_ENTRY_SAFE(item, nextItem, &info->node, FdNode, node) + { if (item->fd == fd) { ListDelete(&item->node); SoftBusFree(item); @@ -1157,10 +1159,10 @@ int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) } if (SoftBusMutexLock(&node->lock) != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); - ReleaseListenerNode(node); - return SOFTBUS_LOCK_ERR; - } + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); + ReleaseListenerNode(node); + return SOFTBUS_LOCK_ERR; + } int32_t ret = SOFTBUS_OK; do { @@ -1191,7 +1193,7 @@ int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) SoftBusMutexUnlock(&node->lock); ReleaseListenerNode(node); - + if (SoftBusMutexLock(&g_fdSetLock) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return SOFTBUS_OK; @@ -1200,8 +1202,8 @@ int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) SoftBusMutexUnlock(&g_fdSetLock); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, - "AddTrigger fd:%d success, current fdcount:%d, module:%d, triggerType:%d", - fd, node->info.fdCount, module, triggerType); + "AddTrigger fd:%d success, current fdcount:%d, module:%d, triggerType:%d", fd, node->info.fdCount, module, + triggerType); return SOFTBUS_OK; } @@ -1233,8 +1235,8 @@ int32_t DelTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) SoftBusSocketFdIsset(fd, &g_exceptSet)) { SoftBusMutexUnlock(&g_listenerList[module]->lock); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, - "DelTrigger [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", fd, node->info.fdCount, module, - triggerType); + "DelTrigger [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", fd, node->info.fdCount, + module, triggerType); break; } @@ -1242,11 +1244,11 @@ int32_t DelTrigger(ListenerModule module, int32_t fd, TriggerType triggerType) } while (false); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, - "DelTrigger and node [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", - fd, node->info.fdCount, module, triggerType); + "DelTrigger and node [fd:%d] success, current fdcount:%d, module:%d, triggerType:%d", fd, node->info.fdCount, + module, triggerType); SoftBusMutexUnlock(&node->lock); - ReleaseListenerNode(node); + ReleaseListenerNode(node); UpdateMaxFd(); return SOFTBUS_OK; diff --git a/core/connection/common/src/softbus_socket.c b/core/connection/common/src/softbus_socket.c index 630901ac89..c9e547eacf 100644 --- a/core/connection/common/src/softbus_socket.c +++ b/core/connection/common/src/softbus_socket.c @@ -42,7 +42,7 @@ int32_t RegistSocketProtocol(const SocketInterface *interface) return SOFTBUS_ERR; } int ret = SoftBusMutexLock(&g_socketsMutex); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); return ret; } @@ -55,8 +55,8 @@ int32_t RegistSocketProtocol(const SocketInterface *interface) break; } } - (void) SoftBusMutexUnlock(&g_socketsMutex); - if(ret != SOFTBUS_OK) { + (void)SoftBusMutexUnlock(&g_socketsMutex); + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "socket type list is full!"); } return ret; @@ -65,7 +65,7 @@ int32_t RegistSocketProtocol(const SocketInterface *interface) const SocketInterface *GetSocketInterface(ProtocolType protocolType) { int ret = SoftBusMutexLock(&g_socketsMutex); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:get lock failed!ret=%" PRId32, __func__, ret); return NULL; } @@ -76,13 +76,14 @@ const SocketInterface *GetSocketInterface(ProtocolType protocolType) break; } } - (void) SoftBusMutexUnlock(&g_socketsMutex); + (void)SoftBusMutexUnlock(&g_socketsMutex); return result; } -int32_t ConnInitSockets(void) { +int32_t ConnInitSockets(void) +{ int32_t ret = SoftBusMutexInit(&g_socketsMutex, NULL); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: init mutex failed!ret=%" PRId32, __func__, ret); return ret; } @@ -90,7 +91,7 @@ int32_t ConnInitSockets(void) { (void)memset_s(g_socketInterfaces, sizeof(g_socketInterfaces), 0, sizeof(g_socketInterfaces)); ret = RegistSocketProtocol(GetTcpProtocol()); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: regist tcp failed!!ret=%" PRId32, __func__, ret); (void)SoftBusMutexDestroy(&g_socketsMutex); return ret; @@ -105,13 +106,15 @@ void ConnDeinitSockets(void) (void)SoftBusMutexDestroy(&g_socketsMutex); } -int32_t ConnOpenClientSocket(const ConnectOption *option, const char* bindAddr, bool isNonBlock) { - if(option == NULL || bindAddr == NULL) { +int32_t ConnOpenClientSocket(const ConnectOption *option, const char *bindAddr, bool isNonBlock) +{ + if (option == NULL || bindAddr == NULL) { return SOFTBUS_ERR; } - const SocketInterface* socketInterface = GetSocketInterface(option->socketOption.protocol); - if(socketInterface == NULL) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!protocol=%d", option->socketOption.protocol); + const SocketInterface *socketInterface = GetSocketInterface(option->socketOption.protocol); + if (socketInterface == NULL) { + SoftBusLog( + SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "protocol not supported!protocol=%d", option->socketOption.protocol); return SOFTBUS_ERR; } return socketInterface->OpenClientSocket(option, bindAddr, isNonBlock); diff --git a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c index 87bf27b1ec..aa1f39a0be 100644 --- a/sdk/transmission/trans_channel/udp/file/src/file_adapter.c +++ b/sdk/transmission/trans_channel/udp/file/src/file_adapter.c @@ -87,8 +87,8 @@ int32_t StartNStackXDFileServer(const char *myIP, const uint8_t *key, SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "failed to start tcp server for getting port"); return SOFTBUS_ERR; } - const SocketInterface * ip = GetSocketInterface(LNN_PROTOCOL_IP); - if(ip == NULL) { + const SocketInterface *ip = GetSocketInterface(LNN_PROTOCOL_IP); + if (ip == NULL) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "no ip supportted"); ConnShutdownSocket(fd); return SOFTBUS_NOT_FIND; diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index e28d1615b6..a5ebc90a07 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -311,7 +311,10 @@ HWTEST_F(SoftbusCommonTest, testBaseListener008, TestSize.Level1) LocalListenerInfo info = { .type = CONNECT_TCP, - .socketOption = {.addr = "127.0.0.1", .port = port, .moduleId = static_cast(module), .protocol = LNN_PROTOCOL_IP} + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = static_cast(module), + .protocol = LNN_PROTOCOL_IP} }; EXPECT_EQ(SOFTBUS_OK, SetSoftbusBaseListener(static_cast(module), listener)); EXPECT_EQ(port, StartBaseListener(&info)); -- Gitee From 3ee8ca16ae988a23a21b08f139b6749aab1c4224 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 19 Jul 2022 12:00:51 +0000 Subject: [PATCH 10/16] format code Signed-off-by: duxbbo Change-Id: If656c3d0ae09736847e32443aa90a8e173993661 --- core/authentication/src/auth_common.c | 3 +- core/authentication/src/auth_socket.c | 3 +- .../utils/src/lnn_connection_addr_utils.c | 2 +- .../common/src/softbus_base_listener.c | 21 ++++++------ .../common/src/softbus_tcp_socket.c | 34 +++++++++++-------- .../connection/manager/softbus_conn_manager.c | 4 +-- .../tcp/src/softbus_tcp_connect_manager.c | 7 ++-- .../standard/init/src/softbus_server.cpp | 3 +- .../tcp_direct/src/trans_tcp_direct_p2p.c | 4 +-- .../common/src/softbus_client_frame_manager.c | 12 ++++--- .../src/client_trans_tcp_direct_listener.c | 3 +- .../common/softbus_conn_common_test.cpp | 5 ++- .../core/connection/tcp/tcp_manager_test.cpp | 10 +++--- 13 files changed, 63 insertions(+), 48 deletions(-) diff --git a/core/authentication/src/auth_common.c b/core/authentication/src/auth_common.c index 57434fce02..eaaf4f850e 100644 --- a/core/authentication/src/auth_common.c +++ b/core/authentication/src/auth_common.c @@ -149,7 +149,8 @@ int32_t AuthConvertConnInfo(ConnectOption *option, const ConnectionInfo *connInf } break; case CONNECT_TCP: { - if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), connInfo->socketInfo.addr) != EOK) { + if (strcpy_s(option->socketOption.addr, sizeof(option->socketOption.addr), connInfo->socketInfo.addr) != + EOK) { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "strcpy_s failed"); return SOFTBUS_ERR; } diff --git a/core/authentication/src/auth_socket.c b/core/authentication/src/auth_socket.c index 3126b445c2..38cab6d879 100644 --- a/core/authentication/src/auth_socket.c +++ b/core/authentication/src/auth_socket.c @@ -240,7 +240,8 @@ static int32_t AuthOnDataEvent(ListenerModule module, int32_t events, int32_t fd UnpackConnPktHead(&head); if (len < (int32_t)headSize) { if (len < 0) { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnRecvSocketData failed, DelTrigger. recv len=%zd", len); + SoftBusLog( + SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "auth ConnRecvSocketData failed, DelTrigger. recv len=%zd", len); (void)DelTrigger(AUTH, fd, READ_TRIGGER); AuthNotifyDisconn(fd); } diff --git a/core/bus_center/utils/src/lnn_connection_addr_utils.c b/core/bus_center/utils/src/lnn_connection_addr_utils.c index c40702997e..ab10b34cf5 100644 --- a/core/bus_center/utils/src/lnn_connection_addr_utils.c +++ b/core/bus_center/utils/src/lnn_connection_addr_utils.c @@ -103,7 +103,7 @@ bool LnnConvertOptionToAddr(ConnectionAddr *addr, const ConnectOption *option, C return true; } if (option->type == CONNECT_TCP) { - if(option->socketOption.protocol != LNN_PROTOCOL_IP) { + if (option->socketOption.protocol != LNN_PROTOCOL_IP) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "only ip is supportted"); return false; } diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index 5a5769b49b..079945d10e 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -176,7 +176,8 @@ static int32_t ReleaseListenerRef(ListenerModule module) return SOFTBUS_OK; } -static void ReleaseListenerNode(SoftbusListenerNode *node) { +static void ReleaseListenerNode(SoftbusListenerNode *node) +{ if (node == NULL || node->module >= UNUSE_BUTT) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); return; @@ -220,7 +221,8 @@ static int32_t CreateSpecifiedListenerModule(ListenerModule module) return SOFTBUS_OK; } -static int32_t CreateStaticModules(void) { +static int32_t CreateStaticModules(void) +{ for (uint32_t i = 0; i < LISTENER_MODULE_DYNAMIC_START; i++) { int32_t ret = CreateSpecifiedListenerModule(i); if (ret != SOFTBUS_OK) { @@ -241,14 +243,14 @@ int32_t InitBaseListener(void) } ret = SoftBusMutexInit(&g_listenerListLock, NULL); - if ( ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_listenerListLock init failed.ret=%" PRId32, ret); (void)SoftBusMutexDestroy(&g_fdSetLock); return ret; } ret = SoftBusMutexInit(&g_threadLock, NULL); - if ( ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "g_threadLock init failed.ret=%" PRId32, ret); (void)SoftBusMutexDestroy(&g_listenerListLock); (void)SoftBusMutexDestroy(&g_fdSetLock); @@ -396,7 +398,7 @@ static int32_t InitListenFd(SoftbusListenerNode* node, const LocalListenerInfo * } int32_t ret = SOFTBUS_OK; - do { + do { int32_t rc = node->socketIf->OpenServerSocket(info); if (rc < 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpServer failed, rc=%d", rc); @@ -688,8 +690,7 @@ static int32_t StopListenerThread(SoftbusListenerNode *node) node->info.status = LISTENER_IDLE; node->info.modeType = UNSET_MODE; - - } while(false); + } while (false); (void)SoftBusMutexUnlock(&node->lock); return ret; } @@ -923,7 +924,7 @@ int32_t StartBaseListener(const LocalListenerInfo *info) } ret = InitListenFd(node, info); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:InitListenFd failed!ret=%" PRId32,__func__, ret); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:InitListenFd failed!ret=%" PRId32, __func__, ret); break; } ret = StartListenerThread(node, SERVER_MODE); @@ -1098,8 +1099,8 @@ void DestroyBaseListener(ListenerModule module) return; } (void) SoftBusMutexUnlock(&g_listenerListLock); - - ret = WaitBaseListenerDestroy(module, 30000); +#define LISTENER_MODULE_DESTROY_TIMEOUT (30*1000) + ret = WaitBaseListenerDestroy(module, LISTENER_MODULE_DESTROY_TIMEOUT); SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " finished. ret=%" PRId32, __func__, module, ret); } diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index cc0caeb356..2b5b46a2ea 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -114,11 +114,11 @@ int32_t SetIpTos(int fd, uint32_t tos) static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) { - if(option == NULL) { + if (option == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:null ptr!", __func__); return -1; } - if(option->type != CONNECT_TCP && option->type != CONNECT_P2P ) { + if (option->type != CONNECT_TCP && option->type != CONNECT_P2P) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad type!type=%d", __func__, option->type); return -1; } @@ -128,8 +128,8 @@ static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) } int fd; - int ret = SoftBusSocketCreate(SOFTBUS_AF_INET, SOFTBUS_SOCK_STREAM | SOFTBUS_SOCK_CLOEXEC | SOFTBUS_SOCK_NONBLOCK, - 0, (int32_t *)&fd); + int ret = SoftBusSocketCreate( + SOFTBUS_AF_INET, SOFTBUS_SOCK_STREAM | SOFTBUS_SOCK_CLOEXEC | SOFTBUS_SOCK_NONBLOCK, 0, (int32_t *)&fd); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Create socket failed! ret=%d", __func__, ret); return -1; @@ -147,16 +147,17 @@ static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool isNonBlock) { - if(option == NULL) { + if (option == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:null ptr!", __func__); return -1; } - if(option->type != CONNECT_TCP && option->type != CONNECT_P2P ) { + if (option->type != CONNECT_TCP && option->type != CONNECT_P2P) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:bad type!type=%d", __func__, option->type); return -1; } if (option->socketOption.port <= 0) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClientSocket invalid para, port=%d", option->socketOption.port); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OpenTcpClientSocket invalid para, port=%d", + option->socketOption.port); return -1; } @@ -175,8 +176,8 @@ int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool SetClientOption(fd); if (myIp != NULL) { - const char* bindAddr = NULL; - if(strcmp(myIp, BIND_ADDR_ALL) == 0) { + const char *bindAddr = NULL; + if (strcmp(myIp, BIND_ADDR_ALL) == 0) { bindAddr = "0.0.0.0"; } else { SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:using specified bind addr", __func__); @@ -197,8 +198,8 @@ int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool SoftBusInetPtoN(SOFTBUS_AF_INET, option->socketOption.addr, &addr.sinAddr); addr.sinPort = SoftBusHtoNs((uint16_t)option->socketOption.port); int rc = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketConnect(fd, (SoftBusSockAddr *)&addr, sizeof(addr))); - if ((rc != SOFTBUS_ADAPTER_OK) && (rc != SOFTBUS_ADAPTER_SOCKET_EINPROGRESS) - && (rc != SOFTBUS_ADAPTER_SOCKET_EAGAIN)) { + if ((rc != SOFTBUS_ADAPTER_OK) && (rc != SOFTBUS_ADAPTER_SOCKET_EINPROGRESS) && + (rc != SOFTBUS_ADAPTER_SOCKET_EAGAIN)) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "fd=%d,connect rc=%d", fd, rc); ConnShutdownSocket(fd); return -1; @@ -263,22 +264,25 @@ int32_t ConnSetTcpKeepAlive(int32_t fd, int32_t seconds) return 0; } -static int32_t AcceptTcpClient(int fd, ConnectOption *clientAddr, int *cfd) { +static int32_t AcceptTcpClient(int fd, ConnectOption *clientAddr, int *cfd) +{ SoftBusSockAddrIn addr; if (memset_s(&addr, sizeof(addr), 0, sizeof(addr)) != EOK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:memset failed", __func__); return SOFTBUS_MEM_ERR; } uint32_t addrLen = sizeof(addr); - int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketAccept(fd, (SoftBusSockAddr *)&addr, (int32_t *)&addrLen, cfd)); + int32_t ret = + SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketAccept(fd, (SoftBusSockAddr *)&addr, (int32_t *)&addrLen, cfd)); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, ret=%" PRId32 "cfd=%d, fd=%d", ret, *cfd, fd); return ret; } - if(clientAddr != NULL) { + if (clientAddr != NULL) { clientAddr->type = CONNECT_TCP; - SoftBusInetNtoP(SOFTBUS_AF_INET, &addr.sinAddr, clientAddr->socketOption.addr, sizeof(clientAddr->socketOption.addr)); + SoftBusInetNtoP( + SOFTBUS_AF_INET, &addr.sinAddr, clientAddr->socketOption.addr, sizeof(clientAddr->socketOption.addr)); clientAddr->socketOption.port = GetTcpSockPort(*cfd); clientAddr->socketOption.protocol = LNN_PROTOCOL_IP; } diff --git a/core/connection/manager/softbus_conn_manager.c b/core/connection/manager/softbus_conn_manager.c index abea87a74a..4cd29326fd 100644 --- a/core/connection/manager/softbus_conn_manager.c +++ b/core/connection/manager/softbus_conn_manager.c @@ -448,13 +448,13 @@ int32_t ConnServerInit(void) } int32_t ret = ConnInitSockets(); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnInitSockets failed!ret=%" PRId32 " \r\n", ret); return ret; } ret = InitBaseListener(); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitBaseListener failed!ret=%" PRId32 " \r\n", ret); return ret; } diff --git a/core/connection/tcp/src/softbus_tcp_connect_manager.c b/core/connection/tcp/src/softbus_tcp_connect_manager.c index 959335135e..4b318b411e 100644 --- a/core/connection/tcp/src/softbus_tcp_connect_manager.c +++ b/core/connection/tcp/src/softbus_tcp_connect_manager.c @@ -163,7 +163,7 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t return SOFTBUS_INVALID_PARAM; } - if(module == AUTH_P2P) { + if (module == AUTH_P2P) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "recv p2p conned %d", cfd); if (ConnSetTcpKeepAlive(cfd, AUTH_P2P_KEEP_ALIVE_TIME) != 0) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "set keepalive fail"); @@ -171,7 +171,7 @@ static int32_t TcpOnConnectEvent(ListenerModule module, int32_t events, int32_t return SOFTBUS_ERR; } } - + TcpConnInfoNode *tcpConnInfoNode = (TcpConnInfoNode *)SoftBusCalloc(sizeof(TcpConnInfoNode)); if (tcpConnInfoNode == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "OnConnectEvent malloc TcpConnInfoNode"); @@ -398,7 +398,8 @@ int32_t TcpConnectDevice(const ConnectOption *option, uint32_t requestId, const result->OnConnectFailed(requestId, SOFTBUS_MALLOC_ERR); return SOFTBUS_MALLOC_ERR; } - if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), option->socketOption.addr) != EOK || + if (strcpy_s(tcpConnInfoNode->info.socketInfo.addr, sizeof(tcpConnInfoNode->info.socketInfo.addr), + option->socketOption.addr) != EOK || memcpy_s(&tcpConnInfoNode->result, sizeof(ConnectResult), result, sizeof(ConnectResult)) != EOK) { ConnShutdownSocket(fd); SoftBusFree(tcpConnInfoNode); diff --git a/core/frame/standard/init/src/softbus_server.cpp b/core/frame/standard/init/src/softbus_server.cpp index 02252156bc..fcf16839b2 100644 --- a/core/frame/standard/init/src/softbus_server.cpp +++ b/core/frame/standard/init/src/softbus_server.cpp @@ -132,7 +132,8 @@ int32_t SoftBusServer::OpenAuthSession(const char *sessionName, const Connection connOpt.type = ConvertConnectType(addrInfo->type); switch (connOpt.type) { case CONNECT_TCP: - if (memcpy_s(connOpt.socketOption.addr, sizeof(connOpt.socketOption.addr), addrInfo->info.ip.ip, IP_LEN) != EOK) { + if (memcpy_s(connOpt.socketOption.addr, sizeof(connOpt.socketOption.addr), addrInfo->info.ip.ip, IP_LEN) != + EOK) { return SOFTBUS_MEM_ERR; } connOpt.socketOption.port = static_cast(addrInfo->info.ip.port); diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c index 0412a53955..a182011d48 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c @@ -47,7 +47,7 @@ static int32_t StartNewP2pListener(const char *ip, int32_t *port) .moduleId = DIRECT_CHANNEL_SERVER_P2P } }; - if(strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), ip)!= EOK) { + if (strcpy_s(info.socketOption.addr, sizeof(info.socketOption.addr), ip) != EOK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "%s:copy addr failed!", __func__); return SOFTBUS_ERR; } @@ -416,7 +416,7 @@ static int32_t OnVerifyP2pReply(int64_t authId, int64_t seq, const cJSON *json) }; ret = strcpy_s(options.socketOption.addr, sizeof(options.socketOption.addr), conn->appInfo.peerData.ip); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "%s: strcpy_s failed!ret = %" PRId32, __func__, ret); ReleaseSessonConnLock(); goto EXIT_ERR; diff --git a/sdk/frame/common/src/softbus_client_frame_manager.c b/sdk/frame/common/src/softbus_client_frame_manager.c index 0e8770d357..d0aa4a34b9 100644 --- a/sdk/frame/common/src/softbus_client_frame_manager.c +++ b/sdk/frame/common/src/softbus_client_frame_manager.c @@ -142,7 +142,8 @@ static void FreeClientPkgName(void) (void)pthread_mutex_unlock(&g_pkgNameLock); } -static void ConnClientDeinit(void) { +static void ConnClientDeinit(void) +{ (void)DeinitBaseListener(); (void)ConnDeinitSockets(); } @@ -156,15 +157,16 @@ static void ClientModuleDeinit(void) DiscClientDeinit(); } -static int32_t ConnClientInit() { +static int32_t ConnClientInit() +{ int32_t ret = ConnInitSockets(); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "ConnInitSockets failed!ret=%" PRId32 " \r\n", ret); return ret; } ret = InitBaseListener(); - if(ret != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "InitBaseListener failed!ret=%" PRId32 " \r\n", ret); return ret; } @@ -190,7 +192,7 @@ static int32_t ClientModuleInit(void) goto ERR_EXIT; } - if(ConnClientInit() != SOFTBUS_OK) { + if (ConnClientInit() != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_COMM, SOFTBUS_LOG_ERROR, "init connect manager failed"); goto ERR_EXIT; } diff --git a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c index 3f6a1d5e6e..b318b72bef 100644 --- a/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c +++ b/sdk/transmission/trans_channel/tcp_direct/src/client_trans_tcp_direct_listener.c @@ -124,7 +124,8 @@ void TransTdcReleaseFd(int32_t fd) ConnShutdownSocket(fd); } -int32_t TransTdcStopRead(int32_t fd) { +int32_t TransTdcStopRead(int32_t fd) +{ if (fd < 0) { return SOFTBUS_OK; } diff --git a/tests/core/connection/common/softbus_conn_common_test.cpp b/tests/core/connection/common/softbus_conn_common_test.cpp index a5ebc90a07..d32fb69f47 100644 --- a/tests/core/connection/common/softbus_conn_common_test.cpp +++ b/tests/core/connection/common/softbus_conn_common_test.cpp @@ -227,7 +227,10 @@ HWTEST_F(SoftbusCommonTest, testBaseListener005, TestSize.Level1) LocalListenerInfo info = { .type = CONNECT_TCP, - .socketOption = {.addr = "127.0.0.1", .port = port, .moduleId = static_cast(module), .protocol = LNN_PROTOCOL_IP} + .socketOption = {.addr = "127.0.0.1", + .port = port, + .moduleId = static_cast(module), + .protocol = LNN_PROTOCOL_IP} }; listener->onConnectEvent = ConnectEvent; diff --git a/tests/core/connection/tcp/tcp_manager_test.cpp b/tests/core/connection/tcp/tcp_manager_test.cpp index 5282ff8c2b..c87d87aa42 100644 --- a/tests/core/connection/tcp/tcp_manager_test.cpp +++ b/tests/core/connection/tcp/tcp_manager_test.cpp @@ -134,7 +134,7 @@ void CreateServer(void *arg) inet_pton(AF_INET, Ip, &servaddr.sin_addr); servaddr.sin_port = htons(port); - if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) { + if (bind(listenfd, static_cast(&servaddr), sizeof(servaddr)) == -1) { close(listenfd); printf("bind socket error: %s(errno: %d)\n", strerror(errno), errno); return; @@ -146,7 +146,7 @@ void CreateServer(void *arg) } while (true) { - if ((connfd = accept(listenfd, (struct sockaddr *)nullptr, nullptr)) == -1) { + if ((connfd = accept(listenfd, static_cast(nullptr), nullptr)) == -1) { printf("accept socket error: %s(errno: %d)\n", strerror(errno), errno); continue; } @@ -322,7 +322,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager007, TestSize.Level1) EXPECT_EQ(1, TcpGetConnNum()); for (int i = 0; i < 3; i++) { char *data = (char *)SoftBusCalloc(sizeof(head) + head.len); - if (data == NULL) { + if (data == nullptr) { continue; } (void)memcpy_s(data, sizeof(head), (void*)&head, sizeof(head)); @@ -416,7 +416,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager009, TestSize.Level1) head.len = maxDataLen + 1; char *data = (char *)SoftBusCalloc(sizeof(head) + head.len); - if (data == NULL) { + if (data == nullptr) { printf("Failed to assign memory to data."); return; } @@ -893,7 +893,7 @@ HWTEST_F(SoftbusTcpManagerTest, testTcpManager022, TestSize.Level1) HWTEST_F(SoftbusTcpManagerTest, testTcpManager023, TestSize.Level1) { const SocketInterface *tcp = GetTcpProtocol(); - ASSERT_NE(tcp, nullptr); + ASSERT_NE(tcp, nullptr); int fd = -1; int port = tcp->GetSockPort(fd); int ret = (port <= 0) ? SOFTBUS_ERR : SOFTBUS_OK; -- Gitee From babad5dc1e0a79b7b17c541e6a68c21b08eefe74 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Tue, 19 Jul 2022 12:53:23 +0000 Subject: [PATCH 11/16] fix code bugs Signed-off-by: duxbbo Change-Id: I2d2d9148c0eac8fe6cf18815fd6eb1755114e643 --- .../net_buscenter/src/lnn_ip_network_impl.c | 5 ++- .../common/src/softbus_base_listener.c | 10 +++-- .../common/src/softbus_tcp_socket.c | 41 +++++++++++-------- .../tcp_direct/src/trans_tcp_direct_p2p.c | 40 ++++++++++-------- .../core/connection/tcp/tcp_manager_test.cpp | 2 +- 5 files changed, 57 insertions(+), 41 deletions(-) diff --git a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c index 3afeff45df..300465de0f 100644 --- a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c +++ b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c @@ -117,9 +117,10 @@ static void OpenProxyPort(void) } }; int32_t port; + int32_t ret = + LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, listenerInfo.socketOption.addr, sizeof(listenerInfo.socketOption.addr)); - if (LnnGetLocalStrInfo( - STRING_KEY_WLAN_IP, listenerInfo.socketOption.addr, sizeof(listenerInfo.socketOption.addr)) != SOFTBUS_OK) { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "get local ip failed\n"); return; } diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index 079945d10e..ab6dd9cb28 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -1049,7 +1049,8 @@ int32_t StopBaseListener(ListenerModule module) return ret; } -static int32_t WaitBaseListenerDestroy(ListenerModule module, int32_t waitTimeOut) { +static int32_t WaitBaseListenerDestroy(ListenerModule module, int32_t waitTimeOut) +{ const int32_t waitInterval = 100; while (waitTimeOut > 0) { int32_t ret = SoftBusMutexLock(&g_listenerListLock); @@ -1098,10 +1099,11 @@ void DestroyBaseListener(ListenerModule module) g_listenerList[module] = NULL; return; } - (void) SoftBusMutexUnlock(&g_listenerListLock); -#define LISTENER_MODULE_DESTROY_TIMEOUT (30*1000) + (void)SoftBusMutexUnlock(&g_listenerListLock); +#define LISTENER_MODULE_DESTROY_TIMEOUT (30 * 1000) ret = WaitBaseListenerDestroy(module, LISTENER_MODULE_DESTROY_TIMEOUT); - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " finished. ret=%" PRId32, __func__, module, ret); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_INFO, "%s:Destory listener module %" PRIu32 " finished. ret=%" PRId32, + __func__, module, ret); } static bool CheckFdIsExist(SoftbusBaseListenerInfo *info, int32_t fd) diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index 2b5b46a2ea..2d729fdfda 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -145,7 +145,23 @@ static int32_t OpenTcpServerSocket(const LocalListenerInfo *option) return fd; } -int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool isNonBlock) +static int32_t BindTcpClientAddr(int fd, const char *inputAddr) +{ + if (inputAddr == NULL) { + return SOFTBUS_OK; + } + + const char *bindAddr = NULL; + if (strcmp(inputAddr, BIND_ADDR_ALL) == 0) { + bindAddr = "0.0.0.0"; + } else { + SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:using specified bind addr", __func__); + bindAddr = inputAddr; + } + return BindLocalIP(fd, bindAddr, 0); +} + +static int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool isNonBlock) { if (option == NULL) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:null ptr!", __func__); @@ -175,20 +191,12 @@ int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp, bool } SetClientOption(fd); - if (myIp != NULL) { - const char *bindAddr = NULL; - if (strcmp(myIp, BIND_ADDR_ALL) == 0) { - bindAddr = "0.0.0.0"; - } else { - SoftBusLog(SOFTBUS_LOG_AUTH, SOFTBUS_LOG_ERROR, "%s:using specified bind addr", __func__); - bindAddr = myIp; - } - ret = BindLocalIP(fd, bindAddr, 0); - if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); - ConnShutdownSocket(fd); - return -1; - } + ret = BindTcpClientAddr(fd, myIp); + if (ret != SOFTBUS_OK) + { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); + ConnShutdownSocket(fd); + return -1; } SoftBusSockAddrIn addr; if (memset_s(&addr, sizeof(addr), 0, sizeof(addr)) != EOK) { @@ -298,6 +306,7 @@ static SocketInterface g_ipSocketInterface = { .AcceptClient = AcceptTcpClient, }; -const SocketInterface *GetTcpProtocol(void) { +const SocketInterface *GetTcpProtocol(void) +{ return &g_ipSocketInterface; } diff --git a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c index a182011d48..02ceadd1b3 100644 --- a/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c +++ b/core/transmission/trans_channel/tcp_direct/src/trans_tcp_direct_p2p.c @@ -377,6 +377,27 @@ static int32_t OnVerifyP2pRequest(int64_t authId, int64_t seq, const cJSON *json return SOFTBUS_OK; } +static int32_t ConnectTcpDirectPeer(const char *addr, int port) +{ + ConnectOption options = { + .type = CONNECT_P2P, + .socketOption = { + .addr = {0}, + .port = port, + .protocol = LNN_PROTOCOL_IP, + .moduleId = DIRECT_CHANNEL_CLIENT + } + }; + + int32_t ret = strcpy_s(options.socketOption.addr, sizeof(options.socketOption.addr), addr); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "%s: strcpy_s failed!ret = %" PRId32, __func__, ret); + return -1; + } + + return ConnOpenClientSocket(&options, BIND_ADDR_ALL, true); +} + static int32_t OnVerifyP2pReply(int64_t authId, int64_t seq, const cJSON *json) { SoftBusLog( @@ -405,24 +426,7 @@ static int32_t OnVerifyP2pReply(int64_t authId, int64_t seq, const cJSON *json) SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "OnVerifyP2pReply peer wifi: ip, port=%d", conn->appInfo.peerData.port); - ConnectOption options = { - .type = CONNECT_P2P, - .socketOption = { - .addr = {0}, - .port = conn->appInfo.peerData.port, - .protocol = LNN_PROTOCOL_IP, - .moduleId = DIRECT_CHANNEL_CLIENT - } - }; - - ret = strcpy_s(options.socketOption.addr, sizeof(options.socketOption.addr), conn->appInfo.peerData.ip); - if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_INFO, "%s: strcpy_s failed!ret = %" PRId32, __func__, ret); - ReleaseSessonConnLock(); - goto EXIT_ERR; - } - - fd = ConnOpenClientSocket(&options, BIND_ADDR_ALL, true); + fd = ConnectTcpDirectPeer(conn->appInfo.peerData.ip, conn->appInfo.peerData.port); if (fd <= 0) { SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "OnVerifyP2pReply conn fail: fd=%d", fd); ReleaseSessonConnLock(); diff --git a/tests/core/connection/tcp/tcp_manager_test.cpp b/tests/core/connection/tcp/tcp_manager_test.cpp index c87d87aa42..45c71ee45d 100644 --- a/tests/core/connection/tcp/tcp_manager_test.cpp +++ b/tests/core/connection/tcp/tcp_manager_test.cpp @@ -134,7 +134,7 @@ void CreateServer(void *arg) inet_pton(AF_INET, Ip, &servaddr.sin_addr); servaddr.sin_port = htons(port); - if (bind(listenfd, static_cast(&servaddr), sizeof(servaddr)) == -1) { + if (bind(listenfd, reinterpret_cast(&servaddr), sizeof(servaddr)) == -1) { close(listenfd); printf("bind socket error: %s(errno: %d)\n", strerror(errno), errno); return; -- Gitee From b1190ea9bee7b1b8f6da6d596648ad17f468fc3c Mon Sep 17 00:00:00 2001 From: duxbbo Date: Wed, 20 Jul 2022 01:10:59 +0000 Subject: [PATCH 12/16] format code Signed-off-by: duxbbo Change-Id: I2bc6b3a4e39c42db99a0231a1aa768f0e52f3630 --- core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c | 4 +--- core/connection/common/src/softbus_tcp_socket.c | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c index 300465de0f..e183a41288 100644 --- a/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c +++ b/core/bus_center/lnn/net_buscenter/src/lnn_ip_network_impl.c @@ -116,16 +116,14 @@ static void OpenProxyPort(void) .moduleId = PROXY } }; - int32_t port; int32_t ret = LnnGetLocalStrInfo(STRING_KEY_WLAN_IP, listenerInfo.socketOption.addr, sizeof(listenerInfo.socketOption.addr)); - if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "get local ip failed\n"); return; } - port = ConnStartLocalListening(&listenerInfo); + int32_t port = ConnStartLocalListening(&listenerInfo); if (port < 0) { SoftBusLog(SOFTBUS_LOG_LNN, SOFTBUS_LOG_ERROR, "open proxy server failed\n"); return; diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index 2d729fdfda..37c7763820 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -192,8 +192,7 @@ static int32_t OpenTcpClientSocket(const ConnectOption *option, const char *myIp SetClientOption(fd); ret = BindTcpClientAddr(fd, myIp); - if (ret != SOFTBUS_OK) - { + if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "BindLocalIP ret=%d", ret); ConnShutdownSocket(fd); return -1; -- Gitee From 4ab1df7e16b40561122d9bc96fc8e5cfca3820e9 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Mon, 25 Jul 2022 02:31:32 +0000 Subject: [PATCH 13/16] fix code bug Signed-off-by: duxbbo --- core/connection/common/conn_common.gni | 16 ++++++ .../common/src/softbus_base_listener.c | 52 +++++++++++++++---- core/connection/common/src/softbus_socket.c | 14 +++++ .../common/src/softbus_tcp_socket.c | 2 +- 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/core/connection/common/conn_common.gni b/core/connection/common/conn_common.gni index 958b2bd2c9..7c05cbece1 100644 --- a/core/connection/common/conn_common.gni +++ b/core/connection/common/conn_common.gni @@ -25,3 +25,19 @@ conn_common_inc = [ "$dsoftbus_root_path/core/connection/manager", "$dsoftbus_root_path/core/transmission/trans_channel/proxy/include", ] + +native_source_path = rebase_path("$dsoftbus_root_path") +newip_dir = "dsoftbus_enhance/components/newip" +newip_enhanced = exec_script("$dsoftbus_root_path/check_sub_module.py", + [ + "$native_source_path", + "$newip_dir", + ], + "value") + +if (newip_enhanced) { + import("//foundation/communication/dsoftbus/dsoftbus_enhance/components/newip/newip.gni") + conn_common_src += newip_connection_src + conn_common_inc += newip_connection_include +} + diff --git a/core/connection/common/src/softbus_base_listener.c b/core/connection/common/src/softbus_base_listener.c index ab6dd9cb28..9cb7faa7a6 100644 --- a/core/connection/common/src/softbus_base_listener.c +++ b/core/connection/common/src/softbus_base_listener.c @@ -93,7 +93,7 @@ static int32_t StopListenerThread(SoftbusListenerNode *node); static SoftbusListenerNode *RequestListenerNode(ListenerModule module) { if (module >= UNUSE_BUTT) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Invalid listener module."); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:Invalid listener module.", __func__); return NULL; } int32_t ret = SoftBusMutexLock(&g_listenerListLock); @@ -152,7 +152,7 @@ static int32_t ReleaseListenerRef(ListenerModule module) } int32_t ret = SoftBusMutexLock(&node->lock); if (ret != SOFTBUS_OK) { - SoftBusMutexUnlock(&node->lock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return ret; } node->ref--; @@ -234,6 +234,33 @@ static int32_t CreateStaticModules(void) return SOFTBUS_OK; } +uint32_t CreateListenerModule(void) +{ + uint32_t moduleId = UNUSE_BUTT; + int32_t ret = SoftBusMutexLock(&g_listenerListLock); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: lock g_listenerListLock failed!.", __func__); + return moduleId; + } + + for (uint32_t i = LISTENER_MODULE_DYNAMIC_START; i <= LISTENER_MODULE_DYNAMIC_END; i++) { + if (g_listenerList[i] != NULL) { + continue; + } + int32_t ret = CreateSpecifiedListenerModule(i); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: create module %" PRIu32 " failed!ret=" PRId32, + __func__, i, ret); + break; + } + moduleId = i; + break; + } + + (void)SoftBusMutexUnlock(&g_listenerListLock); + return moduleId; +} + int32_t InitBaseListener(void) { int32_t ret = SoftBusMutexInit(&g_fdSetLock, NULL); @@ -457,27 +484,30 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) SoftbusBaseListener listener = {0}; listener.onConnectEvent = node->listener->onConnectEvent; listener.onDataEvent = node->listener->onDataEvent; + const SocketInterface *socketIf = node->socketIf; + ListenerModule module = node->module; + ConnectType connectType = node->info.listenerInfo.type; SoftBusMutexUnlock(&node->lock); if (fd == listenFd) { while (true) { - if (node->socketIf == NULL || node->socketIf->AcceptClient == NULL) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept func not found! module=%d", node->module); + if (socketIf == NULL || socketIf->AcceptClient == NULL) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept func not found! module=%d", module); break; } int32_t cfd; ConnectOption clientAddr = { - .type = node->info.listenerInfo.type, - .socketOption = {.addr = {0}, .port = 0, .protocol = 0, .moduleId = node->module} + .type = connectType, + .socketOption = {.addr = {0}, .port = 0, .protocol = 0, .moduleId = module} }; - int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(node->socketIf->AcceptClient(fd, &clientAddr, &cfd)); + int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(socketIf->AcceptClient(fd, &clientAddr, &cfd)); if (ret != SOFTBUS_OK) { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, cfd=%d, module=%d, fd=%d", cfd, - node->module, fd); + module, fd); break; } if (listener.onConnectEvent != NULL) { - listener.onConnectEvent(node->module, events, cfd, &clientAddr); + listener.onConnectEvent(module, events, cfd, &clientAddr); } else { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Please set onConnectEvent callback"); SoftBusSocketClose(cfd); @@ -485,7 +515,7 @@ static int32_t OnEvent(SoftbusListenerNode *node, int32_t fd, uint32_t events) } } else { if (listener.onDataEvent != NULL) { - listener.onDataEvent(node->module, events, fd); + listener.onDataEvent(module, events, fd); } else { SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "Please set onDataEvent callback"); } @@ -750,7 +780,7 @@ static int32_t ShutdownBaseListener(SoftbusListenerNode *node) int32_t ret = SoftBusMutexLock(&node->lock); if (ret != SOFTBUS_OK) { - SoftBusMutexUnlock(&node->lock); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s:lock failed", __func__); return ret; } diff --git a/core/connection/common/src/softbus_socket.c b/core/connection/common/src/softbus_socket.c index c9e547eacf..46cdf7ca4e 100644 --- a/core/connection/common/src/softbus_socket.c +++ b/core/connection/common/src/softbus_socket.c @@ -80,6 +80,12 @@ const SocketInterface *GetSocketInterface(ProtocolType protocolType) return result; } +int32_t __attribute__ ((weak)) RegistNewIpSocket(void) +{ + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: newip not deployed", __func__); + return SOFTBUS_OK; +} + int32_t ConnInitSockets(void) { int32_t ret = SoftBusMutexInit(&g_socketsMutex, NULL); @@ -97,6 +103,14 @@ int32_t ConnInitSockets(void) return ret; } SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: tcp registed!", __func__); + + ret = RegistNewIpSocket(); + if (ret != SOFTBUS_OK) { + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "%s: regist newip failed!!ret=%" PRId32, __func__, ret); + (void)SoftBusMutexDestroy(&g_socketsMutex); + return ret; + } + return ret; } diff --git a/core/connection/common/src/softbus_tcp_socket.c b/core/connection/common/src/softbus_tcp_socket.c index 37c7763820..567f7ca8d8 100644 --- a/core/connection/common/src/softbus_tcp_socket.c +++ b/core/connection/common/src/softbus_tcp_socket.c @@ -282,7 +282,7 @@ static int32_t AcceptTcpClient(int fd, ConnectOption *clientAddr, int *cfd) int32_t ret = SOFTBUS_TEMP_FAILURE_RETRY(SoftBusSocketAccept(fd, (SoftBusSockAddr *)&addr, (int32_t *)&addrLen, cfd)); if (ret != SOFTBUS_OK) { - SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, ret=%" PRId32 "cfd=%d, fd=%d", ret, *cfd, fd); + SoftBusLog(SOFTBUS_LOG_CONN, SOFTBUS_LOG_ERROR, "accept failed, ret=%" PRId32 " cfd=%d, fd=%d", ret, *cfd, fd); return ret; } -- Gitee From c9ee84cd66845e5e941a0d613fffd07d9a2eb19b Mon Sep 17 00:00:00 2001 From: duxbbo Date: Mon, 25 Jul 2022 02:33:45 +0000 Subject: [PATCH 14/16] add feature Signed-off-by: duxbbo --- adapter/default_config/feature_config/mini/config.gni | 2 ++ adapter/default_config/feature_config/small/config.gni | 2 ++ adapter/default_config/feature_config/standard/config.gni | 2 ++ bundle.json | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/adapter/default_config/feature_config/mini/config.gni b/adapter/default_config/feature_config/mini/config.gni index 3ced661d2b..c98c73f0cc 100644 --- a/adapter/default_config/feature_config/mini/config.gni +++ b/adapter/default_config/feature_config/mini/config.gni @@ -20,6 +20,8 @@ declare_args() { dsoftbus_feature_conn_ble = false dsoftbus_feature_conn_p2p = false + dsoftbus_feature_protocol_newip = false + dsoftbus_feature_trans_udp = false dsoftbus_feature_trans_udp_stream = false dsoftbus_feature_trans_udp_file = false diff --git a/adapter/default_config/feature_config/small/config.gni b/adapter/default_config/feature_config/small/config.gni index 3ec996fc62..b4914186f5 100644 --- a/adapter/default_config/feature_config/small/config.gni +++ b/adapter/default_config/feature_config/small/config.gni @@ -20,6 +20,8 @@ declare_args() { dsoftbus_feature_conn_ble = false dsoftbus_feature_conn_p2p = false + dsoftbus_feature_protocol_newip = false + dsoftbus_feature_trans_udp = true dsoftbus_feature_trans_udp_stream = false dsoftbus_feature_trans_udp_file = true diff --git a/adapter/default_config/feature_config/standard/config.gni b/adapter/default_config/feature_config/standard/config.gni index 9871b13312..af7cab4312 100644 --- a/adapter/default_config/feature_config/standard/config.gni +++ b/adapter/default_config/feature_config/standard/config.gni @@ -20,6 +20,8 @@ declare_args() { dsoftbus_feature_conn_ble = false dsoftbus_feature_conn_p2p = false + dsoftbus_feature_protocol_newip = false + dsoftbus_feature_trans_udp = true dsoftbus_feature_trans_udp_stream = false dsoftbus_feature_trans_udp_file = true diff --git a/bundle.json b/bundle.json index eeb8b692c0..636ff78825 100644 --- a/bundle.json +++ b/bundle.json @@ -30,7 +30,8 @@ "dsoftbus_feature_product_config_path", "dsoftbus_feature_ifname_prefix", "dsoftbus_feature_lnn_wifiservice_dependence", - "dsoftbus_standard_feature_dfinder_support_multi_nif" + "dsoftbus_standard_feature_dfinder_support_multi_nif", + "dsoftbus_feature_protocol_newip" ], "rom": "967KB", "ram": "28MB", -- Gitee From 6021fb3bae32d7169022b1c628aa600df003d6e9 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Mon, 25 Jul 2022 06:15:39 +0000 Subject: [PATCH 15/16] format gni Signed-off-by: duxbbo --- core/connection/common/conn_common.gni | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/connection/common/conn_common.gni b/core/connection/common/conn_common.gni index 7c05cbece1..186ea81cf4 100644 --- a/core/connection/common/conn_common.gni +++ b/core/connection/common/conn_common.gni @@ -29,15 +29,15 @@ conn_common_inc = [ native_source_path = rebase_path("$dsoftbus_root_path") newip_dir = "dsoftbus_enhance/components/newip" newip_enhanced = exec_script("$dsoftbus_root_path/check_sub_module.py", - [ - "$native_source_path", - "$newip_dir", - ], - "value") + [ + "$native_source_path", + "$newip_dir", + ], + "value") if (newip_enhanced) { - import("//foundation/communication/dsoftbus/dsoftbus_enhance/components/newip/newip.gni") + import( + "//foundation/communication/dsoftbus/dsoftbus_enhance/components/newip/newip.gni") conn_common_src += newip_connection_src conn_common_inc += newip_connection_include } - -- Gitee From f7ca424f6029e1cf021bb42a43a8f99ece2ebef8 Mon Sep 17 00:00:00 2001 From: duxbbo Date: Mon, 25 Jul 2022 06:42:55 +0000 Subject: [PATCH 16/16] format gni Signed-off-by: duxbbo --- core/connection/common/conn_common.gni | 1 + 1 file changed, 1 insertion(+) diff --git a/core/connection/common/conn_common.gni b/core/connection/common/conn_common.gni index 186ea81cf4..033eade818 100644 --- a/core/connection/common/conn_common.gni +++ b/core/connection/common/conn_common.gni @@ -38,6 +38,7 @@ newip_enhanced = exec_script("$dsoftbus_root_path/check_sub_module.py", if (newip_enhanced) { import( "//foundation/communication/dsoftbus/dsoftbus_enhance/components/newip/newip.gni") + conn_common_src += newip_connection_src conn_common_inc += newip_connection_include } -- Gitee