From df2394af027cc913a9e3ca16c98e1de80aa15952 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Sat, 26 Jun 2004 18:38:19 +0000
Subject: [PATCH] Minor cleanups on zap when hangup on callwait

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_zap.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 181a6629c6..e8851c47f6 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -3132,6 +3132,9 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
 						p->callwaitingrepeat = 0;
 						p->cidcwexpire = 0;
 						p->owner = NULL;
+						/* Don't start streaming audio yet if the incoming call isn't up yet */
+						if (p->subs[SUB_REAL].owner->_state != AST_STATE_UP)
+							p->dialing = 1;
 						zt_ring_phone(p);
 					} else if (p->subs[SUB_THREEWAY].owner) {
 						struct timeval tv;
@@ -3619,6 +3622,7 @@ static struct ast_frame *__zt_exception(struct ast_channel *ast)
 			zt_set_hook(p->subs[SUB_REAL].zfd, ZT_OFFHOOK);
 			if (p->owner && (p->owner->_state == AST_STATE_RINGING)) {
 				p->subs[SUB_REAL].needanswer = 1;
+				p->dialing = 0;
 			}
 			break;
 		case ZT_EVENT_HOOKCOMPLETE:
@@ -3976,17 +3980,11 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		} else
 			zt_confmute(p, 0);
 	}
-#if 0
-	if (f->frametype == AST_FRAME_VOICE && (ast->_state == AST_STATE_UP)) {
-		p->subs[index].f.frametype = AST_FRAME_NULL;
-		p->subs[index].f.subclass = 0;
-		f = &p->subs[index].f;
-	}
-#endif	
+
 	/* If we have a fake_event, trigger exception to handle it */
 	if (p->fake_event)
 		ast->exception = 1;
-	
+
 	ast_mutex_unlock(&p->lock);
 	return f;
 }
@@ -8011,6 +8009,7 @@ static int zap_show_channel(int fd, int argc, char **argv)
 			ast_cli(fd, "File Descriptor: %d\n", tmp->subs[SUB_REAL].zfd);
 			ast_cli(fd, "Span: %d\n", tmp->span);
 			ast_cli(fd, "Extension: %s\n", tmp->exten);
+			ast_cli(fd, "Dialing: %s\n", tmp->dialing ? "yes" : "no");
 			ast_cli(fd, "Context: %s\n", tmp->context);
 			ast_cli(fd, "Caller ID string: %s\n", tmp->callerid);
 			ast_cli(fd, "Destroy: %d\n", tmp->destroy);
-- 
GitLab