<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>