]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
This version applies the patch suggested by stevens in bug 7836 (make inbound channel...
authorSteve Murphy <murf@digium.com>
Sun, 10 Dec 2006 02:14:13 +0000 (02:14 +0000)
committerSteve Murphy <murf@digium.com>
Sun, 10 Dec 2006 02:14:13 +0000 (02:14 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@48371 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_zap.c

index fee8475c8910801f33ee2d6a488a409c58276f94..277a152c1d6323110d22ec006cdbef6464dd485b 100644 (file)
@@ -3339,7 +3339,7 @@ static int attempt_transfer(struct zt_pvt *p)
                   stop if now if appropriate */
                if (ast_bridged_channel(p->subs[SUB_THREEWAY].owner))
                        ast_moh_stop(ast_bridged_channel(p->subs[SUB_THREEWAY].owner));
-               if (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_RINGING) {
+               if (p->subs[SUB_REAL].owner->_state == AST_STATE_RINGING) {
                        ast_indicate(ast_bridged_channel(p->subs[SUB_REAL].owner), AST_CONTROL_RINGING);
                }
                if (p->subs[SUB_REAL].owner->cdr) {
@@ -3363,7 +3363,7 @@ static int attempt_transfer(struct zt_pvt *p)
                ast_mutex_unlock(&p->subs[SUB_THREEWAY].owner->lock);
                unalloc_sub(p, SUB_THREEWAY);
        } else if (ast_bridged_channel(p->subs[SUB_THREEWAY].owner)) {
-               if (p->subs[SUB_REAL].owner->_state == AST_STATE_RINGING) {
+               if (p->subs[SUB_THREEWAY].owner->_state == AST_STATE_RINGING) {
                        ast_indicate(ast_bridged_channel(p->subs[SUB_THREEWAY].owner), AST_CONTROL_RINGING);
                }
                ast_moh_stop(ast_bridged_channel(p->subs[SUB_THREEWAY].owner));
@@ -4853,11 +4853,10 @@ static int zt_indicate(struct ast_channel *chan, int condition)
                        }
 #endif
                        res = tone_zone_play_tone(p->subs[index].zfd, ZT_TONE_RINGTONE);
-                       if (chan->_state != AST_STATE_UP) {
-                               if ((chan->_state != AST_STATE_RING) ||
-                                       ((p->sig != SIG_FXSKS) &&
+                       if (chan->_state != AST_STATE_UP && chan->_state != AST_STATE_RING) {
+                               if ((p->sig != SIG_FXSKS) &&
                                         (p->sig != SIG_FXSLS) &&
-                                        (p->sig != SIG_FXSGS)))
+                                        (p->sig != SIG_FXSGS))
                                        ast_setstate(chan, AST_STATE_RINGING);
                        }
                        break;