Hello,
Using ser 0.8.11 with redhat 9. I am not using mysql or authentication.
The record-route call I'm making almost works, except for SER not passing BYE's from our softswitch. I don't see why SER is blocking these. The ACK is correctly following the record-route logic, the BYE looks like it is but SER is blocking passage. sip_scenario trace and ser.cfg routing logic are pasted here but the full sip_scenario file with packet contents are attached as a file.
I don't see anything wrong with how the record-route and route headers are being used. Please help!
Thank you VERY much !!! This group is terrific.
Tim
Attached file has sip_scenario trace
10.16.1.218 6037534033 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 6032251114 is softswitch registered phone answers/terminates call.
10.16.1.218 10.16.1.147 172.17.4.102 10.16.1.214 | | | | <Call><PFrame><Time> | | | | | F1 INVITE (sdp) | | | |>---------------->| | | | | | | | ant to us 100 F2 | | | |<----------------<| | | | | | | | | F3 INVITE (sdp) | | | |>---------------->| | | | | | | | Trying 100 F4 | | | |<----------------<| | | | | | | | | F5 INVITE (sdp) | | | |>---------------->| | | | | | | | Ringing 180 F6 | | | |<----------------<| | | | | | | Ringing 180 F7 | | | |<----------------<| | | | | | | Ringing 180 F8 | | | |<----------------<| | | | | | | | | | (sdp) OK 200 F9 | | | |<----------------<| | | | | | | | F10 ACK | | | |>---------------->| | | | | | | (sdp) OK 200 F11 | | | |<----------------<| | | | | | | (sdp) OK 200 F12 | | | |<----------------<| | | | | | | | F13 ACK | | | |>---------------->| | | | | | | | | F14 ACK | | | |>---------------->| | | | | | | | | BYE F15 | | | |<----------------<| | | | | | | | F16 200 OK | | | |>---------------->| | | | | | | BYE F17 | | | |<----------------<| | | | | | | | BYE F18 | | | |<----------------<| | | | | | | | BYE F19 | | | |<----------------<| | | | | | | | BYE F20 | | | |<----------------<| | | | | | | | BYE F21 | | | |<----------------<| | | | | | | | BYE F22 | | | |<----------------<| | | | | | | | BYE F23 | | | |<----------------<| | | | | | | | BYE F24 | | | |<----------------<| | | | | | | F25 BYE | | | |>---------------->| | | | | | | | | F26 BYE | | | |>---------------->| | | | | | | | OK 200 F27 | | | |<----------------<| | | | | | | OK 200 F28 | | | |<----------------<| | |
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(); #};
}
<<rr9.txt>>