I am using ser 0.8.11 with redhat 9. I am not using mysql or authentication
and currently have a pretty simple config due to my limited programming
skills.
I have orig phone A registered to SER and have SER rewriting A's INVITES so
our
softswitch will be happy. Terminating phone B is registered to our
softswitch.
Phone A can call a phone B and 2 way voice is established. Phone B can
terminate the call and the session will end. All is ok until I try and
use Record-Route (by removing comment #) in my ser.cfg below.
Using Record-Route, when the terminating phone answers, the 200 OK
will propagate all the way through SER and to the originating phone but
at this point the ACK will not get sent back by SER. Because of
this our softswitch will continue to send the 200 OK and after some time
it gives up and terminates both legs with BYE's. Please reference the
attached sip_scenario trace file (which has end packets removed to conserve
space)
Could someone suggest how I might use Record-Route properly?
Thanks in advance!
Tim
=========================================
(10.16.1.218) is SER registered phone who initiates call
10.16.1.147 is SER
172.17.4.102 is our softswitch acting as back2back user agent.
(10.16.1.214) is softswitch registered phone answers/terminates call.
================================================
Here is routing logic:
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (len_gt( max_len )) {
sl_send_reply("513", "Message too big");
break;
};
if (method=="INVITE") {
rewritehostport("172.17.4.102");
# record_route();
t_relay();
# forward (172.17.4.102, 5060);
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
#record_route();
# loose-route processing
#if (loose_route()) {
# t_relay();
# break;
#};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("iptel.org", "subscriber")) {
# www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
#if (!t_relay()) {
# sl_reply_error();
#};
}
<<test3.txt>>