I am trying to set up rtpproxy with kamailio and are having these 2 issues:

1- the BYEs are not relayed to the other party, I have to hang up the call at both ends
2- kamailio receives the INVITE from the calling party [behind a nat] and relays it to the called party but the connection information in the SDP has to IPs [the source IP and the RTPproxy IP together

c=IN IP4 204.9.239.6765.111.185.187


user 100 is behind a NAT and user 101 is not but I want to force the RTPs to go thru the rtpproxy server [ in the same IP as kamailio]
the good and weird thing is that there is audio both ways.

this is my config file:



if (loose_route()) {
                # mark routing logic in request
                xlog("L_INFO","mylog: Loose Route section. Method: [$rm].\n");
                append_hf("P-hint: rr-enforced\r\n");
                route(1);
        };


        if (uri==myself) {
                if (method=="REGISTER") {
                        xlog("L_INFO","mylog: starting to process REGISTER.Info: [$au].\n");
                        if (!www_authorize("", "subscriber")) {
                                xlog("L_INFO","mylog: REGISTER came without auth, sending challenge.\n");
                                www_challenge("", "0");
                                exit;
                        };
                        if (nat_uac_test("1")){
                                xlog("L_INFO","mylog: REGISTER-Device behind NAT.\n");
                                fix_nated_register();
                        }
                        force_rport();
                        save("location");
                        xlog("L_INFO","mylog: save-location successful.\n");
                        exit;
                } else if (method=="INVITE") {
                        xlog("L_INFO","mylog: Processing INVITE.\n");
                        if (!proxy_authorize("","subscriber")) {
                                xlog("L_INFO","mylog: INVITE came without auth, sending challenge.\n");
                                proxy_challenge("","0");
                                exit;
                        };
                        consume_credentials();
                        if (nat_uac_test("1")){
                                xlog("L_INFO","mylog: INVITE-Device behind NAT.\n");
                                #fix_nated_contact();
                                fix_nated_sdp("10");
                        }
                        force_rtp_proxy();
                        if (!lookup("location")) {
                                sl_send_reply("404", "Not Found");
                                xlog("L_INFO","mylog: lookup-location failed, sending 404 Not Found. Method: [$rm].\n");
                                exit;
                        };
                        append_hf("P-hint: usrloc applied\r\n");
                };
        };
        route(1);
}

route[1] {
        # send it out now; use stateful forwarding as it works reliably
        # even for UDP2TCP
        t_on_reply("1");
        if (t_relay()) {
                xlog("L_INFO","mylog: Route 1 section. Method [$rm].");
        } else {
                sl_reply_error();
                xlog("L_INFO","mylog: Route 1 section. T_Relay failed. Method [$rm].");
        };
        exit;
}
onreply_route[1] {
        force_rtp_proxy("","65.111.185.187");
}



thank you in advance

Fabian
 




Stay up to date on your PC, the Web, and your mobile phone with Windows Live Click here