diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 147ebadd636fd9470d0244f289cb62ead61d897f..f07ee38adbe8bec598689e4de6091dcbc0210164 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -2194,11 +2194,13 @@ static pj_bool_t session_reinvite_on_rx_request(pjsip_rx_data *rdata)
 			pjmedia_sdp_media *m = local->media[i];
 			pjmedia_sdp_attr *recvonly;
 			pjmedia_sdp_attr *inactive;
+			pjmedia_sdp_attr *sendonly;
 
 			recvonly = pjmedia_sdp_attr_find2(m->attr_count, m->attr, "recvonly", NULL);
 			inactive = pjmedia_sdp_attr_find2(m->attr_count, m->attr, "inactive", NULL);
-			if (recvonly || inactive) {
-				pjmedia_sdp_attr *to_remove = recvonly ?: inactive;
+			sendonly = pjmedia_sdp_attr_find2(m->attr_count, m->attr, "sendonly", NULL);
+			if (recvonly || inactive || sendonly) {
+				pjmedia_sdp_attr *to_remove = recvonly ?: inactive ?: sendonly;
 				pjmedia_sdp_attr *sendrecv;
 
 				pjmedia_sdp_attr_remove(&m->attr_count, m->attr, to_remove);