pjsip: Generate progress (once) when receiving a 180 with a SDP

ASTERISK-29105

Change-Id: If1615fe7115fe544ef974b044d3cea5c48b94a38
This commit is contained in:
Holger Hans Peter Freyther
2021-01-07 22:25:05 +08:00
committed by Joshua Colp
parent 2ea75ed3d5
commit 48ed4f670f

View File

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