[SR-Users] How to use sdp_remove_media() ?

Denys Pozniak denys.pozniak at gmail.com
Mon Nov 4 09:16:33 CET 2019


Hey Karsten,

I am not sure RTPengine allows us to delete a specific stream from SDP (as
it is the main task I am solving).
Anyway, I put route(SDP_VIDEO_REMOVER) above calling record_route and it
works well.

So that the main question is about the source of an issue: my configuration
or something wrong with sdp_remove_media()?



пт, 1 нояб. 2019 г. в 19:03, Karsten Horsmann <khorsmann at gmail.com>:

> Hi Denys,
>
> 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.
> I remove for example an codec with codec-mask. Or you can manipulate the
> avp you read from rtpengine (via modparam) in the request.
>
> Did you try to *codec-mask= in the rtpengine calls (answer / manage)? *
> *So rtpengine takes care for the removal. *
> *It needs to know what to remove. *
>
> https://www.kamailio.org/docs/modules/5.3.x/modules/rtpengine.html#idm1459
>
>
> Cheers
> Karsten
>
> Denys Pozniak <denys.pozniak at gmail.com> schrieb am Fr., 1. Nov. 2019,
> 15:10:
>
>> If I put route(SDP_VIDEO_REMOVER) into the section route[NATMANAGE] (
>> https://github.com/kamailio/kamailio/blob/master/etc/kamailio.cfg#L820
>> ), Kamailio shows the error I posted below.
>>
>> route[SDP_VIDEO_REMOVER] {
>>         if ( is_request() && has_body("application/sdp") &&
>> sdp_with_media("video") ) {
>>                 sdp_remove_media("video");
>>                 msg_apply_changes();
>>                 xlog("L_WARN","[$cfg(route)] *m=video detected* |
>>  $rm/$rs/$avp(sdp_mvideo_line)/ \n");
>>         }
>> }
>>
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:883]: sdp_with_media(): attempting
>> to search for media type: [video]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:898]: sdp_with_media(): stream 0 of
>> 0 - media [audio]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:898]: sdp_with_media(): stream 1 of
>> 0 - media [video]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1038]: sdp_remove_media():
>> attempting to search for media type: [video]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1055]: sdp_remove_media(): stream 0
>> of 0 - media [audio]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1055]: sdp_remove_media(): stream 1
>> of 0 - media [video]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1061]: sdp_remove_media(): removing
>> media stream: video16(15993) *ERROR: textopsx [textopsx.c:181]:
>> ki_msg_apply_changes(): invalid usage - not in request route or a reply*
>> 16(15993) WARNING: <script>: [SDP_VIDEO_REMOVER] *m=video detected* |
>>  INVITE/<null>/m=video 0 RTP/AVP 97 99 98 110
>> /
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1133]: sdp_with_transport():
>> attempting to search for transport type: [RTP/SAVP]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1148]: sdp_with_transport(): stream
>> 0 of 0 - transport [RTP/AVP]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1148]: sdp_with_transport(): stream
>> 1 of 0 - transport [RTP/AVP]
>> 16(15993) DEBUG: sdpops [sdpops_data.c:222]: sdpops_build_ids_list():
>> codecs list [PCMA] - at name [PCMA] with list ids [8]
>> 16(15993) DEBUG: sdpops [sdpops_data.c:255]: sdpops_build_ids_list():
>> codecs list [PCMA] - ids list [8]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1433]: sdp_with_codecs_by_id():
>> attempting to search codecs in sdp: [8]
>> 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]
>> 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]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id():
>> stream 1 of 0 - payloads [97 99 98 110]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1460]: sdp_with_codecs_by_id():
>> codecs [97 99 98 110] - not found [8]
>> 16(15993) DEBUG: sdpops [sdpops_data.c:222]: sdpops_build_ids_list():
>> codecs list [PCMU] - at name [PCMU] with list ids [0]
>> 16(15993) DEBUG: sdpops [sdpops_data.c:255]: sdpops_build_ids_list():
>> codecs list [PCMU] - ids list [0]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1433]: sdp_with_codecs_by_id():
>> attempting to search codecs in sdp: [0]
>> 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]
>> 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]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1448]: sdp_with_codecs_by_id():
>> stream 1 of 0 - payloads [97 99 98 110]
>> 16(15993) DEBUG: sdpops [sdpops_mod.c:1460]: sdp_with_codecs_by_id():
>> codecs [97 99 98 110] - not found [0]
>>
>>
>>
>>
>> пт, 1 нояб. 2019 г. в 14:38, Daniel-Constantin Mierla <miconda at gmail.com
>> >:
>>
>>> Hello,
>>>
>>> that's strange, because the condition in the c code is:
>>>
>>>     if(msg->first_line.type != SIP_REPLY && get_route_type() !=
>>> REQUEST_ROUTE) {
>>>         LM_ERR("invalid usage - not in request route or a reply\n");
>>>         return -1;
>>>     }
>>>
>>> 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...
>>>
>>> Maybe you can share the entire request_route you had when the error was
>>> exposed.
>>>
>>> Cheers,
>>> Daniel
>>> On 01.11.19 12:14, Denys Pozniak wrote:
>>>
>>> Got message in debug=3:
>>> *13(2141) ERROR: textopsx [textopsx.c:181]: ki_msg_apply_changes():
>>> invalid usage - not in request route or a reply*
>>>
>>> But definitely msg_apply_changes() is placed in request_route section.
>>> I have just moved code part before calling record_route() function and
>>> it helped.
>>>
>>> Interesting, but as I remember Kamailio should display in such cases
>>> something like below:
>>> "...cannot apply msg changes after adding record-route header..."
>>>
>>> Thanks for the hint.
>>>
>>>
>>>
>>>
>>> пт, 1 нояб. 2019 г. в 11:35, Daniel-Constantin Mierla <miconda at gmail.com
>>> >:
>>>
>>>> Hello,
>>>>
>>>> run with debug=3 and what the logs to see if there are error/warning
>>>> messages.
>>>>
>>>> Cheers,
>>>> Daniel
>>>> On 01.11.19 10:26, Denys Pozniak wrote:
>>>>
>>>> Hello!
>>>>
>>>> I'm trying to remove m=video stream from incoming SIP/SDP request in th
>>>> way below:
>>>>
>>>> modparam("rtpengine", "read_sdp_pv", "$avp(read_sdp_pv)")
>>>> modparam("rtpengine", "write_sdp_pv", "$avp(write_sdp_pv)")
>>>> ...
>>>>   sdp_remove_media("video");
>>>>   msg_apply_changes();
>>>>   sdp_get("$avp(read_sdp_pv)");
>>>>   xlog("L_WARN","[$cfg(route)] *m=video removed* ci| rb=/$rb/ \n");
>>>>   xlog("L_WARN","[$cfg(route)] *m=video removed* ci|
>>>> avp(read_sdp_pv)=/$avp(read_sdp_pv)/ \n");
>>>>   rtpengine_manage("$avp(rtpengine_offer)");
>>>>   set_body("$avp(write_sdp_pv)", "application/sdp");
>>>>
>>>> But no luck, xlog shows m=video in $rb and $avp(rtp_sdp_read) as well.
>>>>
>>>> --
>>>>
>>>> BR,
>>>> Denys Pozniak
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Kamailio (SER) - Users Mailing Listsr-users at lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>> --
>>>> Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
>>>> Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld.com
>>>>
>>>>
>>>
>>> --
>>>
>>> BR,
>>> Denys Pozniak
>>>
>>>
>>> --
>>> Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
>>> Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld.com
>>>
>>>
>>
>> --
>>
>> BR,
>> Denys Pozniak
>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>


-- 

BR,
Denys Pozniak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20191104/0b687d2b/attachment.html>


More information about the sr-users mailing list