[SR-Users] Can't work around double SDP rewrite issue with rtpengine and config script SDP manipulation

Daniel-Constantin Mierla miconda at gmail.com
Mon Jun 1 20:24:30 CEST 2020


Hello,

use msg_apply_changes just after replace_body_str(), eventually before
loose routing processing for requests within dialog.

Cheers,
Daniel

On 01.06.20 13:34, George Diamantopoulos wrote:
> Hello all,
>
> I'm facing one of those cases where I need to edit the body of a SIP
> message, which is then to be fed to rtpengine for processing. Although
> I've taken every precaution I've read about on this list and
> elsewhere, I can't prevent the edited line from appearing twice in the
> outgoing message.
>
> The configuration file used is huge, so I'm going to try to provide a
> high-level overview here. But first, the things (I think) I know to be
> requirements, and which I have striven to meet:
>
>   * If SDP is to be edited, then all such processing is to be carried
>     out in such a way in the script, so that msg_apply_changes() is
>     run as many times as needed before rtpengine offer/answer/manage
>     is called.
>   * rtpengine offer/answer/manage is to be called only once per script
>     iteration
>   * msg_apply_changes can only be called in a request route, or in the
>     core reply_route (i.e. *not* in tm-managed on_reply_route[XXX] blocks)
>
> In my case, additionally the following are true:
>
>   * SDP processing (other than the one performed by rtpengine) takes
>     place in one common route for all cases where it needs to happen.
>     These are two at the moment in my scenario:
>       o Early in the WITHINDLG route (of the example config file)
>       o After the sanity checks in the reply_route (of the example
>         config file)
>   * msg_apply changes() is called once, for each script iteration:
>       o right before rtpengine_manage() is called, provided that
>         t_is_request_route() returns true (so that I don't
>         accidentally call it from a branch route or anything)
>           + rtpengine_manage() is called in its own route, which is
>             very similar to the example config file's "NATMANAGE"
>             route. Since NATMANAGE is called in all branch and
>             on_reply_routes, I employ t_is_request_route() here to
>             make sure it won't execute in those cases.
>       o at the end of the "core" reply_route
>
> Now regarding the actual config-file-controlled SDP manipulation, it
> only consists of a single call to replace_body_str(). The purpose is
> to edit a line in the message body from something like:
>
>   * a=fmtp:101 0-16
>
> to something along the lines of:
>
>   * a=fmtp:101 0-15
>
> For replies, this works as expected.
>
> For in-dialog requests, however, I end up with both the original and
> the edited lines:
> a=fmtp:101 0-16 (the original line)
> ... other SDP stuff ...
> a=fmtp:101 0-15 (the edited line)
>
> If anyone could point out any misconceptions I have about
> msg_apply_changes, SDP rewriting from the script and rtp_engine_X()
> interoperability, I would be more than grateful.
>
> Thank you in advance and I apologize for the long read.
>
> Best regards,
> George Diamantopoulos
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20200601/b8a68677/attachment.html>


More information about the sr-users mailing list