From 2a8c07df0e74d81fba06ef3e282ca7f3d3516c9d Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 17 Jul 2012 14:04:00 +0000 Subject: [PATCH] take rtcp ports into account when checking for timeouts --- daemon/call.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 895b1c5cc..5c48aa3c5 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -439,11 +439,12 @@ static void call_timer_iterator(void *key, void *val, void *ptr) { struct iterator_helper *hlp = ptr; GList *it; struct callstream *cs; - int i; + int i, j; struct peer *p; struct poller *po; struct callmaster *cm; unsigned int check; + struct streamrelay *sr; if (!c->callstreams->head) goto drop; @@ -456,18 +457,19 @@ static void call_timer_iterator(void *key, void *val, void *ptr) { for (i = 0; i < 2; i++) { p = &cs->peers[i]; + for (j = 0; j < 2; j++) { + sr = &p->rtps[j]; + hlp->ports[sr->localport] = sr; - hlp->ports[p->rtps[0].localport] = &p->rtps[0]; - hlp->ports[p->rtps[1].localport] = &p->rtps[1]; - - check = cm->timeout; - if (!p->rtps[0].peer.port) - check = cm->silent_timeout; - else if (IN6_IS_ADDR_UNSPECIFIED(&p->rtps[0].peer.ip46)) - check = cm->silent_timeout; + check = cm->timeout; + if (!sr->peer.port) + check = cm->silent_timeout; + else if (IN6_IS_ADDR_UNSPECIFIED(&sr->peer.ip46)) + check = cm->silent_timeout; - if (po->now - p->rtps[0].last < check) - goto good; + if (po->now - sr->last < check) + goto good; + } } }