[Kamailio-Users] NAThelper and multipart SDP

Pascal Maugeri pascal.maugeri at gmail.com
Fri Jun 26 12:36:43 CEST 2009


Hi

We managed to have our solution to work perfectly behind NAT. And I thank
you all for your help and *very* insteresting emails.

Daniel: So far I haven't found any other bug in NATHelper module on
supporting multpart payloads. Could you please backport NATHelper from
sip-router to kamailio ?

Cheers
Pascal

On Tue, Jun 23, 2009 at 12:01 PM, Daniel-Constantin Mierla <
miconda at gmail.com> wrote:

> Hi Pascal,
>
> you are right, a stupid bug introduced with the support for the multipart.
> I committed to the git repo.
>
> Thanks,
> Daniel
>
>
> On 06/23/2009 11:55 AM, Pascal Maugeri wrote:
>
>> Daniel
>>
>> Are you sure that this source fragment (in nhelpr_funcs.c):
>>
>>        /* no need for parse_headers(msg, EOH), get_body will
>>         * parse everything */
>>        /*is the content type correct?*/
>>        if((ret = check_content_type(msg))==1)
>>        {
>>                LM_ERR("content type mismatching\n");
>>                goto error;
>>        }
>>
>> shouldn't be
>>
>>        /* no need for parse_headers(msg, EOH), get_body will
>>         * parse everything */
>>        /*is the content type correct?*/
>>        if((ret = check_content_type(msg))== -1)
>>        {
>>                LM_ERR("content type mismatching\n");
>>                goto error;
>>        }
>>
>> ? ( "==1" --> "==-1")
>>
>> Because now it gives me errors when processing INVITE with application/sdp
>> payload.
>>
>> -pascal
>>
>>
>> On Tue, Jun 23, 2009 at 10:59 AM, Daniel-Constantin Mierla <
>> miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>
>>
>>    On 06/23/2009 10:16 AM, Pascal Maugeri wrote:
>>
>>        This bug is fixed now with your patch Daniel!
>>        Thank you, I go ahead with my testing
>>
>>    ok, I will backport to kamailio 1.5 in few days if there is no
>>    related bug reported meanwhile.
>>
>>    Cheers,
>>    Daniel
>>
>>
>>        Cheers,
>>        Pascal
>>
>>
>>
>>        On Mon, Jun 22, 2009 at 5:34 PM, Daniel-Constantin Mierla
>>        <miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>> wrote:
>>
>>           Can you check this patch I just committed?
>>
>>
>> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=caef5ace2026fcb2a9dffb471e2cec6d843082f8
>>
>>           Basically, you simply can get the extract_body() function from
>>           nathelper/nhelpr_funcs.c and replace it in kamailio.
>>
>>           Let me know if works ok now.
>>
>>           Thanks,
>>           Daniel
>>
>>
>>           On 06/22/2009 04:22 PM, Daniel-Constantin Mierla wrote:
>>
>>               please send me the original and the new invite so I can see
>>               how the body is changed afterwards.
>>
>>               Cheers,
>>               Daniel
>>
>>               On 06/22/2009 03:23 PM, Pascal Maugeri wrote:
>>
>>                   With your patch there is a small bug when
>>        re-constructing
>>                   the multipart payload:
>>
>>                   [...]
>>                   --Genaker-boundary
>>                   Content-Type: application/sdp
>>
>>                   v=0
>>                   [...]
>>                   a=fmtp:TBCP queuing=0; tb_priority=1; timestamp=0;
>>                   tb_granted=0; poc_sess_priority=1; poc_lock=0
>>
>>
>>                   *a=nortpproxy:yes--Genaker-boundary*
>>                   Content-Type: application/resource-lists+xml
>>
>>                   <?xml version="1.0" encoding="UTF-8"?>
>>                   <resource-lists
>>                   xmlns="urn:ietf:params:xml:ns:resource-lists"
>>                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>                   [...]
>>
>>                   --Genaker-boundary--
>>
>>
>>                   Observe the line "a=nortpproxy:yes--Genaker-boundary" :
>>                   there are CRLFs missing. And there two CRLF before
>>                   "a=nortpproxy:yes". I guess you're adding the CRLF
>>        in the
>>                   incorrect order.
>>
>>                   We're progressing ;-)
>>
>>                   -pascal
>>
>>                   On Mon, Jun 22, 2009 at 11:36 AM, Daniel-Constantin
>>        Mierla
>>                   <miconda at gmail.com <mailto:miconda at gmail.com>
>>        <mailto:miconda at gmail.com <mailto:miconda at gmail.com>>
>>                   <mailto:miconda at gmail.com
>>        <mailto:miconda at gmail.com> <mailto:miconda at gmail.com
>>        <mailto:miconda at gmail.com>>>> wrote:
>>
>>                      Hello Pascal,
>>
>>                      I have just committed support for multipart
>>        bodies in
>>                   sip router,
>>                      if works then I will backport to 1.5.
>>
>>
>> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1f41271e1c1b879217835b8b3fdbdc2680138f25
>>
>>
>>
>>                      Can you test it? Unfortunately I cannot do it these
>>                   days properly
>>                      due to traveling. Patch should work pretty
>>                   straightforward with
>>                      1.5 though, if you want to test it directly there.
>>
>>                      Cheers,
>>                      Daniel
>>
>>
>>                      On 06/22/2009 11:30 AM, Pascal Maugeri wrote:
>>
>>                          I tried to install mediaproxy but it looks
>>        tricky
>>                   to install
>>                          (many dependencies, including kernel specific
>>                   configurations) :-(
>>                          and I would like to stick to rtpproxy for
>>                   performance reason.
>>
>>                          Do you believe the same workaround using
>>                   textops/filter_body
>>                          can be used using rtpproxy ? I think yes as
>>        these
>>                   are two
>>                          different things as said Juha.
>>
>>                          Regards,
>>                          Pascal
>>
>>
>>                          On Fri, Jun 19, 2009 at 9:26 PM, Pascal Maugeri
>>                          <pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>
>>                   <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>>
>>                   <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>
>>                   <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>>>
>>                          <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>
>>                   <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>>
>>                          <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>
>>                   <mailto:pascal.maugeri at gmail.com
>>        <mailto:pascal.maugeri at gmail.com>>>>> wrote:
>>
>>
>>
>>                             On Fri, Jun 19, 2009 at 9:13 PM, Juha
>>        Heinanen
>>                          <jh at tutpro.com <mailto:jh at tutpro.com>
>>        <mailto:jh at tutpro.com <mailto:jh at tutpro.com>>
>>                   <mailto:jh at tutpro.com <mailto:jh at tutpro.com>
>>        <mailto:jh at tutpro.com <mailto:jh at tutpro.com>>>
>>                             <mailto:jh at tutpro.com
>>        <mailto:jh at tutpro.com> <mailto:jh at tutpro.com
>>        <mailto:jh at tutpro.com>>
>>                   <mailto:jh at tutpro.com <mailto:jh at tutpro.com>
>>        <mailto:jh at tutpro.com <mailto:jh at tutpro.com>>>>> wrote:
>>
>>                                 Pascal Maugeri writes:
>>
>>                                  > So if I understand well (please
>>        correct
>>                   me if I'm wrong)
>>                                 the "plan" is:
>>                                  >
>>                                  > 1º) I install MediaProxy and use
>>        Kamailio
>>                   MEDIAPROXY
>>                          module
>>                                 instead of
>>                                  > rtpproxy/NATHelper
>>                                  >
>>                                  > 2º) filter the app/sdp part with
>>                                  >
>>                                  > if (has_body("multipart/mixed")) {
>>                                  >     if
>>        (filter_body("application/sdp") {
>>                                  >         remove_hf("Content-Type");
>>                                  >
>>                                  >         append_hf("Content-Type:
>>                   application/sdp\r\n");
>>                                  >     } else {
>>                                  >
>>                                  >         xlog("Body part
>>        application/sdp
>>                   not found\n");
>>                                  >     }
>>                                  > }
>>
>>                                 you don't need to call filter_body if you
>>                   use mediaproxy.
>>
>>                                  > 3º) then engage the media proxy with
>>                                  >
>>                                  > if (method==INVITE && !has_totag()) {
>>                                  >
>>                                  >     # We can also use a specific media
>>                   relay if we
>>                          need to
>>                                  >     #$avp(s:media_relay) = "1.2.3.4";
>>                                  >     engage_media_proxy();
>>                                  > }
>>
>>                                 i have never used engage_media_proxy()
>>                   functions,
>>                          because it
>>                                 makes some
>>                                 assumptions that are not generally
>>        true.  i use
>>                                 use_media_proxy() instead.
>>
>>                                  > 4º) finally put the body part(s) that
>>                   have been
>>                          removed in
>>                                 1º) and relay the
>>                                  > INVITE to my next hop.
>>                                  >      I believe I can save the body
>>                   part(s) in 1º)
>>                          and put
>>                                 them back using
>>                                  > set_body(txt, content_type).
>>
>>                                 you don't need to do anything like
>>        that if
>>                   you use
>>                                 use_media_proxy()
>>                                 function, because it does not remove
>>        anything.
>>
>>
>>                             Thanks Juha ! I can't wait for monday to
>>        test it :-)
>>
>>                             Have a nice week-end
>>                             Pascal
>>
>>                                           -- juha
>>
>>
>>
>>
>>  ------------------------------------------------------------------------
>>
>>                          _______________________________________________
>>                          Kamailio (OpenSER) - Users mailing list
>>                          Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>
>>                   <mailto:Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>>
>>                   <mailto:Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>
>>                   <mailto:Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>>>
>>
>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>
>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
>>
>>                      --     Daniel-Constantin Mierla
>>                      http://www.asipto.com/
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>                   _______________________________________________
>>                   Kamailio (OpenSER) - Users mailing list
>>                   Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>
>>        <mailto:Users at lists.kamailio.org
>>        <mailto:Users at lists.kamailio.org>>
>>
>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>
>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>>           --    Daniel-Constantin Mierla
>>           http://www.asipto.com/
>>
>>
>>
>>  ------------------------------------------------------------------------
>>
>>        _______________________________________________
>>        Kamailio (OpenSER) - Users mailing list
>>        Users at lists.kamailio.org <mailto:Users at lists.kamailio.org>
>>        http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>        http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>>
>>
>>    --    Daniel-Constantin Mierla
>>    http://www.asipto.com/
>>
>>
>>
> --
> Daniel-Constantin Mierla
> http://www.asipto.com/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/users/attachments/20090626/39d43fc4/attachment-0001.htm>


More information about the Users mailing list