diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index 2f29ae6645943079f4228544569150db2df45009..8bd9a46adc6644818d2388a8c63879648e4baf9e 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -3520,6 +3520,18 @@ static void chan_pjsip_incoming_response(struct ast_sip_session *session, struct } break; } + case 199: { + enum early_media_direction early_media_dir = EARLY_MEDIA_NONE; + ast_channel_early_media_set(session->channel, early_media_dir); + ast_queue_control(session->channel, AST_CONTROL_SRCUPDATE); + 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 200: ast_trace(-1, "%s: Queueing ANSWER\n", ast_sip_session_get_name(session)); ast_queue_control(session->channel, AST_CONTROL_ANSWER);