diff --git a/src/net_packet.c b/src/net_packet.c index 1c6c22fe..ff4661b5 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -605,17 +605,22 @@ static void choose_local_address(const node_t *n, const sockaddr_t **sa, int *so int j = rand() % n->edge_tree->count; edge_t *candidate = NULL; - for splay_each(edge_t, e, n->edge_tree) { - if(i++ == j) { - candidate = e; - break; - } - } - if (candidate && candidate->local_address.sa.sa_family) { - *sa = &candidate->local_address; - *sock = rand() % listen_sockets; - adapt_socket(*sa, sock); + if (!n->slpd_address) { + for splay_each(edge_t, e, n->edge_tree) { + if(i++ == j) { + candidate = e; + break; + } + } + + if (candidate && candidate->local_address.sa.sa_family) { + *sa = &candidate->local_address; + *sock = rand() % listen_sockets; + adapt_socket(*sa, sock); + } + } else { + //*sa = str2sockaddr } }