diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index a1bd9d7aba7ea532ba5dd9512a6a5bd9eec238d3..36aa29466fb75246a1ce3f24525c60a1d5554f90 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1045,8 +1045,12 @@ static int sip_indicate(struct ast_channel *ast, int condition)
 	switch(condition) {
 	case AST_CONTROL_RINGING:
 		if (ast->_state == AST_STATE_RING) {
-			transmit_response(p, "180 Ringing", &p->initreq);
-			break;
+			if (!p->progress) {
+				transmit_response(p, "180 Ringing", &p->initreq);
+				break;
+			} else {
+				/* Oops, we've sent progress tones.  Let Asterisk do it instead */
+			}
 		}
 		return -1;
 	case AST_CONTROL_BUSY: