From fd40f80b8c0b214dbfa89955bb58b053101aa131 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Wed, 9 Nov 2005 01:42:38 +0000 Subject: correct logic for group-match CONGESTION checking git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7038 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_zap.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/channels/chan_zap.c b/channels/chan_zap.c index e4b64cc6b..ca3936a94 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -7240,6 +7240,7 @@ static inline int available(struct zt_pvt *p, int channelmatch, int groupmatch, { int res; ZT_PARAMS par; + /* First, check group matching */ if (groupmatch) { if ((p->group & groupmatch) != groupmatch) @@ -7247,7 +7248,7 @@ static inline int available(struct zt_pvt *p, int channelmatch, int groupmatch, *groupmatched = 1; } /* Check to see if we have a channel match */ - if (channelmatch) { + if (channelmatch != -1) { if (p->channel != channelmatch) return 0; *channelmatched = 1; @@ -7336,7 +7337,7 @@ static inline int available(struct zt_pvt *p, int channelmatch, int groupmatch, } if ((p->owner->_state != AST_STATE_UP) && - ((p->owner->_state != AST_STATE_RINGING) || p->outgoing)) { + ((p->owner->_state != AST_STATE_RINGING) || p->outgoing)) { /* If the current call is not up, then don't allow the call */ return 0; } @@ -7628,11 +7629,15 @@ next: } ast_mutex_unlock(lock); restart_monitor(); - if (channelmatched) { - if (callwait || (!tmp && busy)) - *cause = AST_CAUSE_BUSY; - } else if (groupmatched) { - *cause = AST_CAUSE_CONGESTION; + if (callwait) + *cause = AST_CAUSE_BUSY; + else if (!tmp) { + if (channelmatched) { + if (busy) + *cause = AST_CAUSE_BUSY; + } else if (groupmatched) { + *cause = AST_CAUSE_CONGESTION; + } } return tmp; -- cgit v1.2.3