diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 80ef568957347a9feaccadb83791667de4fc1a79..8bda1dc8dfab0c3904de31fffa2a5f5e5bdc055f 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -1900,13 +1900,16 @@ static int sip_indicate(struct ast_channel *ast, int condition) switch(condition) { case AST_CONTROL_RINGING: if (ast->_state == AST_STATE_RING) { + /* Send 180 ringing no matter what */ + transmit_response(p, "180 Ringing", &p->initreq); if (!p->progress) { - transmit_response(p, "180 Ringing", &p->initreq); p->ringing = 1; if (!p->progressinband) break; } else { - /* Oops, we've sent progress tones. Let Asterisk do it instead */ + /* Oops, we've sent progress tones. Some devices don't seem to + handle a 180 after a 183, so we'll go ahead and send the + ringback in-band, too. */ } } return -1;