|
|
|
@ -1064,7 +1064,7 @@ static void steal_peer(struct peer *dest, struct peer *src) {
|
|
|
|
|
src->confirmed = 0;
|
|
|
|
|
unkernelize(src);
|
|
|
|
|
|
|
|
|
|
dest->filled = 1;
|
|
|
|
|
dest->filled = src->filled;
|
|
|
|
|
dest->mediatype = src->mediatype;
|
|
|
|
|
dest->tag = src->tag;
|
|
|
|
|
src->mediatype = "";
|
|
|
|
@ -1270,13 +1270,25 @@ found:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* lookup */
|
|
|
|
|
x = t->num;
|
|
|
|
|
restart_hunt:
|
|
|
|
|
for (l = c->callstreams->head; l; l = l->next) {
|
|
|
|
|
cs = l->data;
|
|
|
|
|
if (cs != cs_o)
|
|
|
|
|
mutex_lock(&cs->lock);
|
|
|
|
|
DBG("hunting for callstream, %i <> %i", cs->num, t->num);
|
|
|
|
|
if (cs->num == t->num)
|
|
|
|
|
goto got_cs;
|
|
|
|
|
DBG("hunting for callstream, %i <> %i", cs->num, x);
|
|
|
|
|
if (cs->num == x) {
|
|
|
|
|
/* special case: lowered numbered media streams may
|
|
|
|
|
* have been "stolen away" by higher numbered streams
|
|
|
|
|
* with identical endpoints. keep going until we find
|
|
|
|
|
* one with an open fd. */
|
|
|
|
|
if (cs->peers[0].rtps[0].fd != -1)
|
|
|
|
|
goto got_cs;
|
|
|
|
|
x++;
|
|
|
|
|
if (cs != cs_o)
|
|
|
|
|
mutex_unlock(&cs->lock);
|
|
|
|
|
goto restart_hunt;
|
|
|
|
|
}
|
|
|
|
|
if (cs != cs_o)
|
|
|
|
|
mutex_unlock(&cs->lock);
|
|
|
|
|
}
|
|
|
|
|