Hello,

In order to be able to route such broken sequential requests with no Route headers you must first catch them in your script with match_dialog , eg :

if (loose_route() || match_dialog())

and then you need to fix them

if ($DLG_status!=NULL && !validate_dialog() ) {
    if (fix_route_dialog())
        xlog(" received bogus in-dialog request, but properly fixed \n");
    else
        xlog(" in-dialog bogus request \n");
}

Best Regards,

Vlad Paiu
OpenSIPS Developer
http://www.opensips-solutions.com

On 31.12.2014 14:27, John Nash wrote:
Or may be should try to match_dialog and then relay

On Wed, Dec 31, 2014 at 5:57 PM, John Nash <[email protected] <mailto:[email protected]>> wrote:

    OK got it. I also have a situation where I receive BYE from callee
    which has "To" tag but no route header. As per default script this
    request should not be allowed to go further. Would
    fix_route_dialog(); work or I should just relay it?

    On Wed, Dec 31, 2014 at 1:37 AM, Bogdan-Andrei Iancu
    <[email protected] <mailto:[email protected]>> wrote:

        Hi John,

        1) if the request does not match any dialog it will go on the
        "else" branch where it simply logs the "valid request" - this
        is a simple example, but the idea is that without dialog state
        you cannot check if valid or not; and you maybe do not create
        dialogs for all your calls and maybe not all your sequential
        request are part of a INVITE dialog (you may have re-SUBSCRIBE
        or NOTIFYs)

        2) the function just fixes, you need to send it out as usual
        via the t_relay(),

        Regards,

        Bogdan-Andrei Iancu
        OpenSIPS Founder and Developer
        http://www.opensips-solutions.com

        On 30.12.2014 12:16, John Nash wrote:
        I was looking at usage of validate_dialog() and saw the
        following snippet from module documentation page. If you
        check the else part... as per my understanding if a dialog is
        not found ($DLG_status) will be NULL) it will go to else part
        which indicates a message has To tag but dialog not found.
        How can it be a valid in-dialog request.

             if (has_totag()) {
                 loose_route();
                 if ($DLG_status!=NULL && !validate_dialog() ) {
                     xlog(" in-dialog bogus request \n");
                 } else {
                     xlog(" in-dialog valid request - $DLG_dir !\n");
                 }
             }
        Also there is one more code
            if (has_totag()) {
                 loose_route();
                 if ($DLG_status!=NULL)
                     if (!validate_dialog())
                         fix_route_dialog();
             }

        After calling fix_route_dialog() do I need to just relay the
        message? I mean this function will "fix" the message and
        send?....I was trying to look for some security check where
        someone can inject a route header and a to tag (Bogus of
        course) to reach to my gateways through my proxy.



        _______________________________________________
        Users mailing list
        [email protected]  <mailto:[email protected]>
        http://lists.opensips.org/cgi-bin/mailman/listinfo/users





_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to