diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index d548d29b8d514782c87bc96bd8d2ef3acbbec5c3..a00299ebb3acb5379d23f22e0e3d707816df4dfa 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -895,9 +895,16 @@ static pj_bool_t session_reinvite_on_rx_request(pjsip_rx_data *rdata)
 	}
 
 	if (!(sdp_info = pjsip_rdata_get_sdp_info(rdata)) ||
-		(sdp_info->sdp_err != PJ_SUCCESS) ||
-		!sdp_info->sdp ||
-		!sdp_requires_deferral(session, sdp_info->sdp)) {
+		(sdp_info->sdp_err != PJ_SUCCESS)) {
+		return PJ_FALSE;
+	}
+
+	if (!sdp_info->sdp) {
+		ast_queue_unhold(session->channel);
+		return PJ_FALSE;
+	}
+
+	if (!sdp_requires_deferral(session, sdp_info->sdp)) {
 		return PJ_FALSE;
 	}