|
|
|
@ -564,14 +564,17 @@ fail: |
|
|
|
|
|
|
|
static int setup_peer(struct peer *p, struct stream *s, const char *tag) { |
|
|
|
struct streamrelay *a, *b; |
|
|
|
struct callstream *cs; |
|
|
|
|
|
|
|
cs = p->up; |
|
|
|
a = &p->rtps[0]; |
|
|
|
b = &p->rtps[1]; |
|
|
|
|
|
|
|
if (a->peer.ip != s->ip || a->peer.port != b->peer.port) { |
|
|
|
p->confirmed = 0; |
|
|
|
if (p->kernelized) |
|
|
|
unkernelize(p); |
|
|
|
cs->peers[0].confirmed = 0; |
|
|
|
unkernelize(&cs->peers[0]); |
|
|
|
cs->peers[1].confirmed = 0; |
|
|
|
unkernelize(&cs->peers[1]); |
|
|
|
} |
|
|
|
|
|
|
|
a->peer.ip = b->peer.ip = s->ip; |
|
|
|
@ -600,8 +603,10 @@ static void steal_peer(struct peer *p, struct streamrelay *r) { |
|
|
|
|
|
|
|
mylog(LOG_DEBUG, "[%s] Re-using existing open RTP ports", c->callid); |
|
|
|
|
|
|
|
if (s->kernelized) |
|
|
|
unkernelize(s); |
|
|
|
p->confirmed = 0; |
|
|
|
unkernelize(p); |
|
|
|
s->confirmed = 0; |
|
|
|
unkernelize(s); |
|
|
|
|
|
|
|
p->filled = 1; |
|
|
|
strmove(&p->mediatype, &s->mediatype); |
|
|
|
|