diff --git a/asterisk.c b/asterisk.c
index 933ab55947bd2d74f3d579da22e26a9b6a2f8ff6..a00c990d50e5e41989db46701133bb1abb0ae416 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 df04adb3964666e5fcf9d0099f35424c7812f29b..e4bd5af94dabfaf5a562c0c223c625ccead40027 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 */