|
|
|
@ -3156,15 +3156,23 @@ static void chan_pjsip_incoming_response(struct ast_sip_session *session, struct
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (status.code) {
|
|
|
|
|
case 180:
|
|
|
|
|
ast_trace(-1, "%s: Queueing RINGING\n", ast_sip_session_get_name(session));
|
|
|
|
|
ast_queue_control(session->channel, AST_CONTROL_RINGING);
|
|
|
|
|
case 180: {
|
|
|
|
|
pjsip_rdata_sdp_info *sdp = pjsip_rdata_get_sdp_info(rdata);
|
|
|
|
|
if (sdp && sdp->body.ptr) {
|
|
|
|
|
ast_trace(-1, "%s: Queueing PROGRESS\n", ast_sip_session_get_name(session));
|
|
|
|
|
ast_queue_control(session->channel, AST_CONTROL_PROGRESS);
|
|
|
|
|
} else {
|
|
|
|
|
ast_trace(-1, "%s: Queueing RINGING\n", ast_sip_session_get_name(session));
|
|
|
|
|
ast_queue_control(session->channel, AST_CONTROL_RINGING);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ast_channel_lock(session->channel);
|
|
|
|
|
if (ast_channel_state(session->channel) != AST_STATE_UP) {
|
|
|
|
|
ast_setstate(session->channel, AST_STATE_RINGING);
|
|
|
|
|
}
|
|
|
|
|
ast_channel_unlock(session->channel);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 183:
|
|
|
|
|
ast_trace(-1, "%s: Queueing PROGRESS\n", ast_sip_session_get_name(session));
|
|
|
|
|
if (session->endpoint->ignore_183_without_sdp) {
|
|
|
|
|