diff --git a/sdk_core/src/base/network_util.cpp b/sdk_core/src/base/network_util.cpp index c3a8f16..4041ee4 100644 --- a/sdk_core/src/base/network_util.cpp +++ b/sdk_core/src/base/network_util.cpp @@ -99,20 +99,23 @@ bool FindLocalIP(const struct sockaddr_in &client_addr, uint32_t &local_ip) { IP_ADAPTER_INFO *pAdapter = reinterpret_cast(pAdapterInfo.get()); if (NO_ERROR == dlRetVal && pAdapter != NULL) { - while (GetAdapterState(pAdapter)) { - std::string str_ip = pAdapter->IpAddressList.IpAddress.String; - std::string str_mask = pAdapter->IpAddressList.IpMask.String; - ULONG host_ip = inet_addr(const_cast(str_ip.c_str())); - ULONG host_mask = inet_addr(const_cast(str_mask.c_str())); + while (pAdapter != NULL) { + if (GetAdapterState(pAdapter)) { + std::string str_ip = pAdapter->IpAddressList.IpAddress.String; + std::string str_mask = pAdapter->IpAddressList.IpMask.String; + ULONG host_ip = inet_addr(const_cast(str_ip.c_str())); + ULONG host_mask = inet_addr(const_cast(str_mask.c_str())); - if ((host_ip & host_mask) == - (client_addr.sin_addr.S_un.S_addr & host_mask)) { - local_ip = host_ip; - found = true; - break; - } - pAdapter = pAdapter->Next; - } + if ((host_ip & host_mask) == + (client_addr.sin_addr.S_un.S_addr & host_mask)) { + local_ip = host_ip; + found = true; + break; + } + } + + pAdapter = pAdapter->Next; + } } return found; }