<div dir="ltr">Hey Karsten,<div><br></div><div>I am not sure RTPengine allows us to delete a specific stream from SDP (as it is the main task I am solving).</div><div>Anyway, I put route(SDP_VIDEO_REMOVER) above calling record_route and it works well.</div><div><br></div><div>So that the main question is about the source of an issue: my configuration or something wrong with sdp_remove_media()?</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пт, 1 нояб. 2019 г. в 19:03, Karsten Horsmann <<a href="mailto:khorsmann@gmail.com">khorsmann@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div>Hi Denys, </div><div dir="auto"><br></div><div dir="auto">AFAIK read and writes rtpengine the complete sdp. So manipulating with the "classic" textops tools is more for RtpProxy. You can search for things but writing will done by rtpengine. </div><div dir="auto">I remove for example an codec with codec-mask. Or you can manipulate the avp you read from rtpengine (via modparam) in the request. </div><div dir="auto"><br></div><div dir="auto">Did you try to <em style="font-family:helvetica,arial,sans-serif;text-align:justify;background-color:rgb(255,255,255)">codec-mask= in the rtpengine calls (answer / manage)? </em></div><div dir="auto"><em style="font-family:helvetica,arial,sans-serif;text-align:justify;background-color:rgb(255,255,255)">So rtpengine takes care for the removal. </em></div><div dir="auto"><em style="font-family:helvetica,arial,sans-serif;text-align:justify;background-color:rgb(255,255,255)">It needs to know what to remove. </em></div><div dir="auto"><em style="font-family:helvetica,arial,sans-serif;text-align:justify;background-color:rgb(255,255,255)"><br></em></div><div dir="auto"><a href="https://www.kamailio.org/docs/modules/5.3.x/modules/rtpengine.html#idm1459" target="_blank">https://www.kamailio.org/docs/modules/5.3.x/modules/rtpengine.html#idm1459</a><br></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Cheers </div><div dir="auto">Karsten <br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">Denys Pozniak <<a href="mailto:denys.pozniak@gmail.com" target="_blank">denys.pozniak@gmail.com</a>> schrieb am Fr., 1. Nov. 2019, 15:10:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>If I put route(SDP_VIDEO_REMOVER) into the section route[NATMANAGE] (
<a href="https://github.com/kamailio/kamailio/blob/master/etc/kamailio.cfg#L820" rel="noreferrer" target="_blank">https://github.com/kamailio/kamailio/blob/master/etc/kamailio.cfg#L820</a>
), Kamailio shows the error I posted below.</div><div><br></div><div>route[SDP_VIDEO_REMOVER] {<br></div><div> if ( is_request() &&
has_body("application/sdp") &&
sdp_with_media("video") ) {<br></div><div> sdp_remove_media("video");<br> msg_apply_changes();</div><div> xlog("L_WARN","[$cfg(route)] *m=video detected* | $rm/$rs/$avp(sdp_mvideo_line)/ \n");<br> }<br>}<br></div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>16(15993) DEBUG: sdpops [sdpops_mod.c:883]: sdp_with_media(): attempting to search for media type: [video]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:898]: sdp_with_media(): stream 0 of 0 - media [audio]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:898]: sdp_with_media(): stream 1 of 0 - media [video]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1038]: sdp_remove_media(): attempting to search for media type: [video]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1055]: sdp_remove_media(): stream 0 of 0 - media [audio]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1055]: sdp_remove_media(): stream 1 of 0 - media [video]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1061]: sdp_remove_media(): removing media stream: video16(15993) <b>ERROR: textopsx [textopsx.c:181]: ki_msg_apply_changes(): invalid usage - not in request route or a reply</b></div><div>16(15993) WARNING: <script>: [SDP_VIDEO_REMOVER] *m=video detected* | INVITE/<null>/m=video 0 RTP/AVP 97 99 98 110</div><div>/</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1133]: sdp_with_transport(): attempting to search for transport type: [RTP/SAVP]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1148]: sdp_with_transport(): stream 0 of 0 - transport [RTP/AVP]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1148]: sdp_with_transport(): stream 1 of 0 - transport [RTP/AVP]</div><div>16(15993) DEBUG: sdpops [sdpops_data.c:222]: sdpops_build_ids_list(): codecs list [PCMA] - at name [PCMA] with list ids [8]</div><div>16(15993) DEBUG: sdpops [sdpops_data.c:255]: sdpops_build_ids_list(): codecs list [PCMA] - ids list [8]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1433]: sdp_with_codecs_by_id(): attempting to search codecs in sdp: [8]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id(): stream 0 of 0 - payloads [121 122 123 124 9 0 8 18 101]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1465]: sdp_with_codecs_by_id(): codecs [121 122 123 124 9 0 8 18 101] - found [8]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id(): stream 1 of 0 - payloads [97 99 98 110]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1460]: sdp_with_codecs_by_id(): codecs [97 99 98 110] - not found [8]</div><div>16(15993) DEBUG: sdpops [sdpops_data.c:222]: sdpops_build_ids_list(): codecs list [PCMU] - at name [PCMU] with list ids [0]</div><div>16(15993) DEBUG: sdpops [sdpops_data.c:255]: sdpops_build_ids_list(): codecs list [PCMU] - ids list [0]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1433]: sdp_with_codecs_by_id(): attempting to search codecs in sdp: [0]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id(): stream 0 of 0 - payloads [121 122 123 124 9 0 8 18 101]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1465]: sdp_with_codecs_by_id(): codecs [121 122 123 124 9 0 8 18 101] - found [0]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id(): stream 1 of 0 - payloads [97 99 98 110]</div><div>16(15993) DEBUG: sdpops [sdpops_mod.c:1460]: sdp_with_codecs_by_id(): codecs [97 99 98 110] - not found [0]</div></blockquote><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пт, 1 нояб. 2019 г. в 14:38, Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" rel="noreferrer" target="_blank">miconda@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Hello,</p>
<p>that's strange, because the condition in the c code is:</p>
<p> if(msg->first_line.type != SIP_REPLY &&
get_route_type() != REQUEST_ROUTE) {<br>
LM_ERR("invalid usage - not in request route or a
reply\n");<br>
return -1;<br>
}</p>
<p>Which is clear about whether the message is a SIP reply or
function is executed in request_route. There is a condition later
about the record_route(), but it didn't get to that code...</p>
<p>Maybe you can share the entire request_route you had when the
error was exposed.</p>
<p>Cheers,<br>
Daniel<br>
</p>
<div>On 01.11.19 12:14, Denys Pozniak wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Got message in debug=3:<br>
<div><i>13(2141) ERROR: textopsx [textopsx.c:181]:
ki_msg_apply_changes(): invalid usage - not in request route
or a reply</i><br>
</div>
<div><br>
</div>
But definitely msg_apply_changes() is placed in request_route
section.<br>
I have just moved code part before calling record_route()
function and it helped. <br>
<br>
<div>Interesting, but as I remember Kamailio should display in
such cases something like below:<br>
"...cannot apply msg changes after adding record-route
header..." <br>
<br>
Thanks for the hint.<br>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">пт, 1 нояб. 2019 г. в 11:35,
Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com" rel="noreferrer" target="_blank">miconda@gmail.com</a>>:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p>Hello,</p>
<p>run with debug=3 and what the logs to see if there are
error/warning messages.</p>
<p>Cheers,<br>
Daniel<br>
</p>
<div>On 01.11.19 10:26, Denys Pozniak wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>Hello!</div>
<br>
I'm trying to remove m=video stream from incoming
SIP/SDP request in th way below:<br>
<br>
modparam("rtpengine", "read_sdp_pv",
"$avp(read_sdp_pv)")<br>
modparam("rtpengine", "write_sdp_pv",
"$avp(write_sdp_pv)")<br>
...<br>
sdp_remove_media("video");<br>
msg_apply_changes();<br>
<div> sdp_get("$avp(read_sdp_pv)");<br>
xlog("L_WARN","[$cfg(route)] *m=video removed* ci|
rb=/$rb/ \n");<br>
xlog("L_WARN","[$cfg(route)] *m=video removed* ci|
avp(read_sdp_pv)=/$avp(read_sdp_pv)/ \n");<br>
rtpengine_manage("$avp(rtpengine_offer)");<br>
set_body("$avp(write_sdp_pv)", "application/sdp");<br>
<br>
But no luck, xlog shows m=video in $rb and
$avp(rtp_sdp_read) as well.<br>
<br>
--
<div dir="ltr">
<div dir="ltr"><br>
<div>
<div>BR,</div>
<div>Denys Pozniak<br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
Kamailio (SER) - Users Mailing List
<a href="mailto:sr-users@lists.kamailio.org" rel="noreferrer" target="_blank">sr-users@lists.kamailio.org</a>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<pre cols="72">--
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" rel="noreferrer" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" rel="noreferrer" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" rel="noreferrer" target="_blank">www.linkedin.com/in/miconda</a>
Kamailio World Conference - April 27-29, 2020, in Berlin -- <a href="http://www.kamailioworld.com" rel="noreferrer" target="_blank">www.kamailioworld.com</a></pre>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr"><br>
<div>
<div>BR,</div>
<div>Denys Pozniak<br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
<pre cols="72">--
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" rel="noreferrer" target="_blank">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" rel="noreferrer" target="_blank">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" rel="noreferrer" target="_blank">www.linkedin.com/in/miconda</a>
Kamailio World Conference - April 27-29, 2020, in Berlin -- <a href="http://www.kamailioworld.com" rel="noreferrer" target="_blank">www.kamailioworld.com</a></pre>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><br><div><div>BR,</div><div>Denys Pozniak<br></div><div><br></div><div><br></div></div></div></div>
_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" rel="noreferrer" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div></div></div>
_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><br><div><div>BR,</div><div>Denys Pozniak<br></div><div><br></div><div><br></div></div></div></div>