diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index 6d027b32f01aa3ee94475edb4bd9926c61e17845..0d565dfe7af934909c5eca8d3fe7801acbf9eb00 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -1363,7 +1363,9 @@ static int chan_pjsip_indicate(struct ast_channel *ast, int condition, const voi
 	switch (condition) {
 	case AST_CONTROL_RINGING:
 		if (ast_channel_state(ast) == AST_STATE_RING) {
-			if (channel->session->endpoint->inband_progress) {
+			if (channel->session->endpoint->inband_progress ||
+				(channel->session->inv_session && channel->session->inv_session->neg &&
+				pjmedia_sdp_neg_get_state(channel->session->inv_session->neg) == PJMEDIA_SDP_NEG_STATE_DONE)) {
 				response_code = 183;
 				res = -1;
 			} else {