treat zero ip/port as wildcard when matching up old streams

remotes/origin/HEAD
Richard Fuchs 12 years ago
parent 5cebf5adbd
commit 20f33e56ff

@ -1229,9 +1229,13 @@ static int call_streams(struct call *c, GQueue *s, const str *tag, enum call_opm
IP6P(&matched_relay->peer_advertised.ip46),
matched_relay->peer_advertised.port, STR_FMT(&cs_o->peers[x].tag));
if (!IN6_ARE_ADDR_EQUAL(&matched_relay->peer_advertised.ip46, &t->stream.ip46))
if (!IN6_ARE_ADDR_EQUAL(&matched_relay->peer_advertised.ip46, &t->stream.ip46)
&& !is_addr_unspecified(&matched_relay->peer_advertised.ip46)
&& !is_addr_unspecified(&t->stream.ip46))
continue;
if (matched_relay->peer_advertised.port != t->stream.port)
if (matched_relay->peer_advertised.port != t->stream.port
&& matched_relay->peer_advertised.port
&& t->stream.port)
continue;
if (str_cmp_str0(&cs_o->peers[x].tag, tag))
continue;
@ -1326,7 +1330,11 @@ got_cs:
if (matched_relay && p == matched_relay->up) {
/* best case, nothing to do */
DBG("case 1");
;
/* ... unless we (un)silenced the stream, in which case
we need to copy the new information */
if (!IN6_ARE_ADDR_EQUAL(&matched_relay->peer_advertised.ip46, &t->stream.ip46)
|| matched_relay->peer_advertised.port != t->stream.port)
setup_peer(p, t, tag);
}
else if (matched_relay && cs_o != cs) {
/* found something, but it's linked to a different stream */

Loading…
Cancel
Save