From 921ffb5dd72f4b4bc2c1b16ccb758627839e7cc4 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Thu, 22 May 2003 14:24:06 +0000
Subject: [PATCH] Only send 180 ringing once, fix CTRL+D in main code

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 asterisk.c          | 15 +++++++++------
 channels/chan_sip.c |  4 +++-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/asterisk.c b/asterisk.c
index 933ab55947..a00c990d50 100755
--- a/asterisk.c
+++ b/asterisk.c
@@ -1373,12 +1373,15 @@ int main(int argc, char *argv[])
 	    ast_cli_register(&astexit);
 		consolethread = pthread_self();
 
-		while ( (buf = (char *)el_gets(el, &num) ) != NULL && num != 0) {
-
-			if (buf[strlen(buf)-1] == '\n')
-				buf[strlen(buf)-1] = '\0';
-
-			consolehandler((char *)buf);
+		for (;;) {
+			buf = (char *)el_gets(el, &num);
+			if (buf) {
+				if (buf[strlen(buf)-1] == '\n')
+					buf[strlen(buf)-1] = '\0';
+
+				consolehandler((char *)buf);
+			} else
+				ast_cli(STDOUT_FILENO, "\nUse EXIT or QUIT to exist, or STOP NOW to shutdown Asterisk\n");
 		}
 
 	} else {
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index df04adb396..e4bd5af94d 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -179,6 +179,7 @@ static struct sip_pvt {
 	int expiry;						/* How long we take to expire */
 	int branch;							/* One random number */
 	int canreinvite;					/* Do we support reinvite */
+	int ringing;						/* Have sent 180 ringing */
 	int progress;						/* Have sent 183 message progress */
 	int tag;							/* Another random number */
 	int nat;							/* Whether to try to support NAT */
@@ -1011,8 +1012,9 @@ static int sip_indicate(struct ast_channel *ast, int condition)
 	switch(condition) {
 	case AST_CONTROL_RINGING:
 		if (ast->_state == AST_STATE_RING) {
-			if (!p->progress) {
+			if (!p->progress && !p->ringing) {
 				transmit_response(p, "180 Ringing", &p->initreq);
+				p->ringing = 1;
 				break;
 			} else {
 				/* Oops, we've sent progress tones.  Let Asterisk do it instead */
-- 
GitLab