diff options
author | bweschke <bweschke@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-22 15:13:41 +0000 |
---|---|---|
committer | bweschke <bweschke@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-22 15:13:41 +0000 |
commit | 26064a0523e77570c30c55eec4cc0bfab6e45fba (patch) | |
tree | 67f83bc95230653b89e1430e3165b7173480a38e | |
parent | 12b5a1f44485ce00a432df93ccb4bea5aaf01caa (diff) |
Bug fix: Correct some scenarios where CALL_LIMIT could not be getting adjusted properly allowing chan_sip to send calls when it really shouldn't. Bug #6111
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@8433 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_sip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 66c6320cf..6500d90c0 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -560,6 +560,8 @@ struct sip_auth { #define SIP_CALL_LIMIT (1 << 29) /* Remote Party-ID Support */ #define SIP_SENDRPID (1 << 30) +/* Did this connection increment the counter of in-use calls? */ +#define SIP_INC_COUNT (1 << 31) #define SIP_FLAGS_TO_COPY \ (SIP_PROMISCREDIR | SIP_TRUSTRPID | SIP_SENDRPID | SIP_DTMF | SIP_REINVITE | \ @@ -2224,7 +2226,8 @@ static int update_call_counter(struct sip_pvt *fup, int event) /* incoming and outgoing affects the inUse counter */ case DEC_CALL_LIMIT: if ( *inuse > 0 ) { - (*inuse)--; + if (ast_test_flag(fup,SIP_INC_COUNT)) + (*inuse)--; } else { *inuse = 0; } @@ -2244,6 +2247,7 @@ static int update_call_counter(struct sip_pvt *fup, int event) } } (*inuse)++; + ast_set_flag(fup,SIP_INC_COUNT); if (option_debug > 1 || sipdebug) { ast_log(LOG_DEBUG, "Call %s %s '%s' is %d out of %d\n", outgoing ? "to" : "from", u ? "user":"peer", name, *inuse, *call_limit); } |