diff --git a/src/chat/chat_profile.c b/src/chat/chat_profile.c index 5c9a47d5..99c2a158 100644 --- a/src/chat/chat_profile.c +++ b/src/chat/chat_profile.c @@ -116,9 +116,10 @@ void chat_core_sync_my_addresses(void) { int sock_count = 0, written = 0; while (sock) { sock_count++; - struct sockaddr_storage* sa = sock->interface_addr.ss_family ? &sock->interface_addr : NULL; + int sock_family = sock->local_addr.ss_family ? sock->local_addr.ss_family : 0; + struct sockaddr_storage* sa = (sock->interface_addr.ss_family == sock_family) ? &sock->interface_addr : NULL; if (!sa) sa = sock->local_addr.ss_family ? &sock->local_addr : NULL; - if (!sa) { DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: [ADDR_SYNC] socket %d — no interface/local addr", CC_ID, sock_count); sock = sock->next; continue; } + if (!sa) { DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "%s: [ADDR_SYNC] socket %d — no address for family=%d", CC_ID, sock_count, sock_family); sock = sock->next; continue; } if (sa->ss_family == AF_INET) { struct sockaddr_in* sin = (struct sockaddr_in*)sa;