[Kamailio-Users] Problem with call on hold

Diego Zuaneti Arruda diego at fasternet.com.br
Thu Oct 9 16:57:17 CEST 2008


  Sorry, I forgot to send the kamailio.cfg.

route{
        #
        # -- 1 -- Request Validation
        #
        if (!mf_process_maxfwd_header("10")) {
                sl_send_reply("483","Too Many Hops");
                exit;
        };

        if (msg:len >=  2048 ) {
                sl_send_reply("513", "Message too big");
                exit;
        };

        if(!is_method("REGISTER")){
                if(nat_uac_test("19")){
                        record_route(";nat=yes");
                } else {
                        record_route();
                };
        };

        if (has_totag()) {
                #sequential request withing a dialog should
                # take the path determined by record-routing
                if (loose_route()) {
                        if(method=="BYE") {
                                #Account BYE transactions
                                setflag(2);
                        };
                        if(method=="BYE" || method=="CANCEL") {
                                end_media_session();
                        };
                        ##Detect requests in the dialog behind NAT and flag 
with 6
                        if(nat_uac_test("19") || 
search("^Route:.*;nat=yes")){
                                append_hf("P-hint: 
LR|fixcontact,setflag6\r\n");
                                fix_contact();
                                setbflag(6);
                        };
                        route(1);
                } else {
                        sl_send_reply("404","Not here");
                }
                exit;
        }

        if (loose_route()) {
                if(!has_totag()){
                        sl_send_reply("403", "Initial Loose-Routing 
Rejected");
                        exit;
                };
                route(1);
        };

        if (is_method("CANCEL")) {
                if (t_check_trans()) {
                        end_media_session();
                        t_relay();
                };
                exit;
        }

        t_check_trans();
        if (method=="REGISTER") {
                route(2);
        } else {
                route(3);
        };
}

route[1] {
        t_on_reply("1");
        t_on_failure("1");
        if (!t_relay()) {
                sl_reply_error();
        };
        exit;
}

route[2] {
        ## Register request handler
        if (is_uri_host_local()) {
                if (!radius_www_authorize("")) {
                        www_challenge("", "0");
                        exit;
                };

                if (!check_to()) {
                        sl_send_reply("401", "Unauthorized");
                        exit;
                };

                if(!search("^Contact:[ ]*\*") && client_nat_test("7")) {
                        setbflag(6);
                        fix_nated_register();
                        force_rport();
                };

                save("location");
                exit;
        } else if {
                sl_send_reply("401", "Unauthorized");
        };
}

route[3] {
        if (method=="INVITE") {
                # Account INVITE packets
                setflag(2);
                # Account Missed calls
                setflag(3);
                # Radius Extra
                $avp(s:sip_proxy_ip)="127.0.0.1";
        };

        if (is_from_local()){
                # From an internal domain -> check the credentials and the 
FROM
                if(!allow_trusted()){
                        if (!radius_proxy_authorize("", "$ci")) {
                                proxy_challenge("","0");
                                exit;
                        } else if (!check_from()) {
                                sl_send_reply("403", "Forbidden, use 
From=ID");
                                exit;
                        };
                };

                if (client_nat_test("3")) {
                        setbflag(7);
                        force_rport();
                        fix_contact();
                };
                consume_credentials();

                #Verify aliases, if found replace R-URI.
                lookup("aliases");

                if (is_uri_host_local()) {
                        # -- Inbound to Inbound
                        route(10);
                }
        };
}

route[6] {
        #
        # -- NAT handling --
        #
        if (isbflagset(6) || isbflagset(7)) {
                append_hf("P-hint: Route[6]: mediaproxy \r\n");
                use_media_proxy();
        };
}

route[10] {
        if (!lookup("location")) {
                sl_send_reply("404", "Not Found");
                exit;
        };
        route(6);
        route(1);
}

failure_route[1] {
        if (t_was_cancelled()) {
                exit;
        }

        if (isbflagset(6) || isbflagset(7)) {
                end_media_session();
        };
}

onreply_route[1] {
        #
        #-- On-replay block routing --
        #
        if (client_nat_test("1")) {
                append_hf("P-hint: Onreply-route - fixcontact \r\n");
                fix_contact();
        };

        if ((isbflagset(6) || isbflagset(7)) && 
(status=~"(180)|(183)|2[0-9][0-9]")) {
                if (search("^Content-Type:[ ]*application/sdp")) {
                        xlog("L_INFO", "Onreply-route: M=$rm RURI=$ru F=$fu 
T=$tu IP=$si ID=$ci\n");
                        append_hf("P-hint: Onreply-route - usemediaproxy 
\r\n");
                        use_media_proxy();
                };
        };
        exit;
}


Thanks.
Diego.

----- Original Message ----- 
From: "Diego Zuaneti Arruda" <diego at fasternet.com.br>
To: <users at lists.kamailio.org>
Sent: Thursday, October 09, 2008 11:29 AM
Subject: [Kamailio-Users] Problem with call on hold


>  Hi all,
>
>   I'm having a problem when the user places the call on hold.
>   When the user removes the call on hold, only one side hears the call.
>   Does anyone know what is wrong?
>   The dialog of the call is attached.
>
>
>
> Thanks.
> Diego.
> 






More information about the Users mailing list