diff --git a/include/asterisk/sdp_state.h b/include/asterisk/sdp_state.h
index 1382ed6af666ab65e1c931d9ca09d71677f1710d..88660b6c7e7df8a56f8cc2c38d6c40d096a5c85c 100644
--- a/include/asterisk/sdp_state.h
+++ b/include/asterisk/sdp_state.h
@@ -146,9 +146,12 @@ const void *ast_sdp_state_get_local_sdp_impl(struct ast_sdp_state *sdp_state);
  * \param sdp_state
  * \param sdp
  *
+ * \retval 0 Success
+ * \retval non-0 Failure
+ *
  * \since 15
  */
-void ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct ast_sdp *sdp);
+int ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct ast_sdp *sdp);
 
 /*!
  * \brief Set the remote SDP from an Implementation
diff --git a/main/sdp_state.c b/main/sdp_state.c
index 8534501497b9e5cf73b0a97d8afbf987040b3552..2c018b1261426e00c62ba1cd9da29fbe2f385237 100644
--- a/main/sdp_state.c
+++ b/main/sdp_state.c
@@ -1073,7 +1073,7 @@ const void *ast_sdp_state_get_local_sdp_impl(struct ast_sdp_state *sdp_state)
 	return ast_sdp_translator_from_sdp(sdp_state->translator, sdp);
 }
 
-void ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct ast_sdp *sdp)
+int ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct ast_sdp *sdp)
 {
 	ast_assert(sdp_state != NULL);
 
@@ -1081,12 +1081,13 @@ void ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct
 		sdp_state->role = SDP_ROLE_ANSWERER;
 	}
 
-	merge_sdps(sdp_state, sdp);
+	return merge_sdps(sdp_state, sdp);
 }
 
 int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, void *remote)
 {
 	struct ast_sdp *sdp;
+	int ret;
 
 	ast_assert(sdp_state != NULL);
 
@@ -1094,9 +1095,9 @@ int ast_sdp_state_set_remote_sdp_from_impl(struct ast_sdp_state *sdp_state, void
 	if (!sdp) {
 		return -1;
 	}
-	ast_sdp_state_set_remote_sdp(sdp_state, sdp);
+	ret = ast_sdp_state_set_remote_sdp(sdp_state, sdp);
 	ast_sdp_free(sdp);
-	return 0;
+	return ret;
 }
 
 int ast_sdp_state_reset(struct ast_sdp_state *sdp_state)