Hi all 

We do have a strange problem with loosing rtp in case of carrierroute - 
failureroute.
If we send traffic directly to the failure gateway, we do have rtp without any 
problem

Situation:
Ua --> Freeswitch --> kamailio 3.3 --> gw 1 Error 404 --> failureroute --> 
media gateway voiceprompt for error 404
==> this does not work

Ua --> Freeswitch --> kamailio 3.3 rewrite to dest for voiceprompt 404  
-->media gateway voiceprompt for error 404
==> this works!!

Any idea?
For me it seems being a problem with branching or so.

Regards,
Oli

Configs below:

Main routing block

request_route {
        --- do all the checks

        route(CARRIERROUTE);
        route(RELAY);
}


route[RELAY] {
        xlog(, "L_INFO", "RELAY: Outbound sent via $avp(s:trunk_out)");
        # enable additional event routes for forwarded requests
        # - serial forking, RTP relaying handling, a.s.o.
        if (is_method("INVITE|SUBSCRIBE")) {
                t_on_branch("MANAGE_BRANCH");
                t_on_reply("MANAGE_REPLY");
                xlog(,"L_INFO", "RELAX - Manage branch ...\n");
        }
        if (is_method("INVITE")) {
                t_on_failure("MANAGE_FAILURE");
        }

        if (!t_relay()) {
                sl_reply_error();
        }
        exit;
}

# carrierroute
route[CARRIERROUTE] {
        xlog(,"L_INFO","Carrierroute module start \n");
        $avp(s:tree) = "default";
        
        # lookup from user and from domain
        cr_user_carrier("$fU", "$avp(s:trunk_in)", "$avp(s:cr_pref_carr)");

        if($avp(s:cr_pref_carr) == 0){
                # lookup from domain
                cr_user_carrier("", "$avp(s:trunk_in)", "$avp(s:cr_pref_carr)");
        }       

        if(!cr_route("$avp(s:cr_pref_carr)", "$avp(s:tree)", "$rU", "$rU", 
"call_id", "$avp(s:todirection)" )){
                xlog("cr_route 403 no route found $avp(s:cr_pref_carr)");
                sl_send_reply("403", "Not allowed");
                exit;
        }
        $avp(s:trunk_out) = $avp(s:todirection);
        route(ALTERHEADER);

}


failure_route[MANAGE_FAILURE] {
        
        if (t_grep_status("486")){
                xlog("L_INFO", "Status 486 - busy");
                t_reply("486", "Busy");
        }


        #revert_uri();
        route(NATMANAGE);

        if (t_is_canceled()) {
                exit;
        }

        xlog("L_INFO", "failure_route $rd $T_reply_code $avp(s:trunk_in), 
$avp(s:tree), $rU, $rd, $T_reply_code, $avp(s:tree) \n");

        if(!cr_next_domain("$avp(s:cr_pref_carr)", "$avp(s:tree)", "$rU", 
"$avp(s:trunk_in)", "$T_reply_code", "$avp(s:tree)" )){
                xlog("cr_next_domain failed");
                exit;
        }

        if(!cr_route("$avp(s:cr_pref_carr)", "$avp(s:tree)", "$rU", "$rU", 
"call_id", "$avp(s:todirection)" )){
                xlog("cr_route failed");
                exit;
        }
        $avp(s:trunk_out) = $avp(s:todirection);


        if (is_method("INVITE"))
        {
                setflag(FLT_ACC); # do accounting
                setflag(FLT_ACCMISSED); # oro 28.10.13
        }
        

        
        route(ALTERHEADER);

        t_on_failure("MANAGE_FAILURE");

        if (!t_relay()) {
                xlog("failureroute t_relay failed");
                exit;
        }

}

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to