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);