diff --git a/daemon/call.c b/daemon/call.c index 46871757a..0cbb4ec2f 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -1038,7 +1038,9 @@ static void __fill_stream(struct packet_stream *ps, const struct endpoint *epp, return; if (!MEDIA_ISSET(media, ICE)) { - if (ps->selected_sfd && ep.address.family != ps->selected_sfd->socket.family) { + if (PS_ISSET(ps, FILLED) && ps->selected_sfd + && ep.address.family != ps->selected_sfd->socket.family) + { ilog(LOG_WARN, "Ignoring updated remote endpoint %s%s%s as the local " "socket is %s", FMT_M(endpoint_print_buf(&ep)), ps->selected_sfd->socket.family->name); @@ -1053,6 +1055,11 @@ static void __fill_stream(struct packet_stream *ps, const struct endpoint *epp, dtls_shutdown(ps); } } + else { + // ICE + if (!PS_ISSET(ps, FILLED)) + ps->endpoint = ep; + } ilog(LOG_DEBUG, "set FILLED flag for stream, remote %s%s%s", FMT_M(endpoint_print_buf(&ps->endpoint)));