summaryrefslogtreecommitdiff
path: root/kernel/zaptel-base.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-04 23:58:35 +0000
committerkpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-04 23:58:35 +0000
commit34527941b79d4e358a79c4edda9bd134686879f0 (patch)
treec283cfa4f39d4655ff984eb7f768d808841b8ffb /kernel/zaptel-base.c
parentdb06a6740c1feef2e64f7f0cc4e6538c14c64e5a (diff)
don't add an unnecessary delayed battery transition on FXS ports when we know the other end is already on-hook
(closes issue #9660) Reported by: mmacvicar Patches: zaptel-base-c_patch_1_4_rev3121 uploaded by meneault (license 260) Tested by: jmhunter git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@3932 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'kernel/zaptel-base.c')
-rw-r--r--kernel/zaptel-base.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/zaptel-base.c b/kernel/zaptel-base.c
index fbcc0c5..0a16462 100644
--- a/kernel/zaptel-base.c
+++ b/kernel/zaptel-base.c
@@ -2141,7 +2141,9 @@ static int zt_hangup(struct zt_chan *chan)
if (chan->span->flags & ZT_FLAG_RBS) {
if (chan->sig == ZT_SIG_CAS) {
zt_cas_setbits(chan, chan->idlebits);
- } else if ((chan->sig == ZT_SIG_FXOKS) && (chan->txstate != ZT_TXSTATE_ONHOOK)) {
+ } else if ((chan->sig == ZT_SIG_FXOKS) && (chan->txstate != ZT_TXSTATE_ONHOOK)
+ /* if other party is already on-hook we shouldn't do any battery drop */
+ && !((chan->rxhooksig == ZT_RXSIG_ONHOOK) && (chan->itimer <= 0))) {
/* Do RBS signalling on the channel's behalf */
zt_rbs_sethook(chan, ZT_TXSIG_KEWL, ZT_TXSTATE_KEWL, ZT_KEWLTIME);
} else