[Serusers] error: mediaproxy/sendMediaproxyCommand(): can't connect to MediaProxy

Java Rockx javarockx at gmail.com
Mon Feb 21 03:58:12 CET 2005


Can you include an output of the error messages?

Regards,
Paul


On Mon, 21 Feb 2005 10:12:23 +0800, Charles Wang <lazy.charles at gmail.com> wrote:
> Dear ALL:
> 
> I start ser 0.9.0. And when I make a sip call or off-net call(to
> PSTN), some error(as Subject) about MediaProxy will display in Log
> file.
> 
> Does anybody have the same problem and have any solution to fix it?
> 
> My ser.cfg list below:
> --------------------------------------------------------------------------------------------------------
> debug=10         # debug level (cmd line: -dddddddddd)
> fork=yes
> log_stderror=no # (cmd line: -E)
> 
> listen=xxx.xxx.xxx.xxx
> alias=ser.xxx.net.tw
> alias=ser
> alias=xxx.xxx.xxx.xxx
> 
> check_via=no            # (cmd. line: -v)
> dns=no                                  # (cmd. line: -r)
> rev_dns=no                      # (cmd. line: -R)
> port=5060
> children=4
> fifo_mode=0666
> fifo="/tmp/ser_fifo"
> fifo_db_url="mysql://ser:heslo@localhost/ser"
> 
> # ------------------ module loading ----------------------------------
> # ----------------- setting module-specific parameters ---------------
> ----------(skip)
> 
> # -- mediaproxy params --
> modparam("mediaproxy", "natping_interval", 30)
> modparam("mediaproxy", "sip_asymmetrics",
> "/usr/local/etc/ser/sip-asymmetric-clients")
> modparam("mediaproxy", "rtp_asymmetrics",
> "/usr/local/etc/ser/rtp-asymmetric-clients")
> 
> # -- usrloc params --
> modparam("usrloc", "db_mode", 1)
> modparam("usrloc", "timer_interval", 60)
> modparam("usrloc", "desc_time_order", 1)
> 
> # -- auth params --
> modparam("auth_db", "calculate_ha1", yes)
> modparam("auth_db", "password_column", "password")
> 
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
> 
> # -- db_url params --
> modparam("acc|auth_db|domain|group|permissions|speeddial|uri_db|usrloc|pdt",
> "db_url", "mysql://ser:heslo@localhost/ser")
> 
> # -- use_domain params --
> modparam("auth_db|group|registrar|speeddial|uri_db|usrloc", "use_domain", 0)
> 
> # -- permissions params --
> modparam("permissions", "db_mode", 1)
> modparam("permissions", "trusted_table", "trusted")
> 
> # -- accounting params --
> modparam("acc", "db_flag", 1)
> modparam("acc", "db_missed_flag", 1)
> modparam("acc", "log_fmt", "cdfimorstup")
> modparam("acc", "log_level", 1)
> modparam("acc", "failed_transactions", 1)
> modparam("acc", "report_cancels", 1)
> modparam("acc", "report_ack", 0)
> 
> # -- domain params --
> modparam("domain", "db_mode", 1)
> 
> # ------------- exec parameters
> modparam("exec", "setvars", 1)
> modparam("exec", "time_to_kill", 10)
> 
> # -- registration params --
> modparam("registrar", "nat_flag", 2)
> modparam("registrar", "min_expires", 60)
> modparam("registrar", "max_expires", 86400)
> modparam("registrar", "default_expires", 3600)
> modparam("registrar", "append_branches", 1)
> 
> # -- avp params --
> modparam("avpops", "avp_url", "mysql://ser:heslo@localhost/ser")
> modparam("avpops", "avp_table", "usr_preferences")
> #modparam("avpops", "use_domain", "1")
> modparam("avpops", "uuid_column", "uuid")
> modparam("avpops", "username_column", "username")
> modparam("avpops", "domain_column", "domain")
> modparam("avpops", "attribute_column", "attribute")
> modparam("avpops", "value_column", "value")
> modparam("avpops", "type_column", "type")
> modparam("avpops", "avp_aliases",
> "voicemail=i:500;calltype=i:700;fwd_no_answer_type=i:701;fwd_busy_type=i:702")
> # To use more than one tables example
> #modparam("avpops", "db_scheme",
> "scheme1:table=subscriber;uuid_column=uuid;value_column=first_name")
> 
> # -- tm params --
> modparam("tm", "fr_timer", 15)
> modparam("tm", "fr_inv_timer", 22)
> modparam("tm", "wt_timer", 5)
> modparam("tm", "fr_inv_timer_avp", "inv_timeout")
> 
> # -- pdt params --
> modparam("pdt", "db_table", "prefix_domain")
> modparam("pdt", "prefix", "")
> modparam("pdt", "hsize_2pow", 2)
> modparam("pdt", "sync_time", 300)
> modparam("pdt", "clean_time", 600)
> 
> # -- logging params
> modparam("xlog", "buf_size", 8192)
> 
> # -- group params --
> modparam("group", "table", "grp")
> modparam("group", "user_column", "username")
> modparam("group", "domain_column", "domain")
> modparam("group", "group_column", "grp")
> 
> # -------------------------  request routing logic -------------------
> 
> # main routing logic
> 
> route {
> 
>         # ------------------------------------------------------------------------
>         # Sanity Check Section
>         # ------------------------------------------------------------------------
>         if (!mf_process_maxfwd_header("10")) {
>                 sl_send_reply("483", "Too Many Hops");
>                 break;
>         };
> 
>         if (msg:len > max_len) {
>                 sl_send_reply("513", "Message Overflow");
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # NOTIFY Keep-Alive Section
>         # ------------------------------------------------------------------------
>         if ((method=="NOTIFY") && search("^Event: keep-alive")) {
>                 sl_send_reply("200", "OK");
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # OPTIONS Section
>         # ------------------------------------------------------------------------
>         if (method=="OPTIONS") {
>                 options_reply();
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # NAT Test Section #1
>         # ------------------------------------------------------------------------
>         if (method=="REGISTER" && client_nat_test("3")) {
>                 fix_contact();
>                 force_rport();
>                 setflag(2);
>         };
> 
>         # ------------------------------------------------------------------------
>         # Registration Section
>         # ------------------------------------------------------------------------
>         if (method=="REGISTER") {
> 
>                 # allow all requests from user 700 - the Click2Dial controller
>                 if (!isflagset(14)) {
>                         if (!is_from_local()) {
>                                 sl_send_reply("403", "Unknown Domain");
>                                 break;
>                         };
>                         if (!www_authorize("", "subscriber")) {
>                                 www_challenge("", "0");
>                                 break;
>                         };
>                         if (!check_to()) {
>                                 sl_send_reply("401", "Unauthorized");
>                                 break;
>                         };
> 
>                         # To - Use To username and (optionally) domain to check
>                         if (is_user_in("To", "demo-disabled")) {
>                                 sl_send_reply("403", "Your evaluation period has expired");
>                                 break;
>                         };
> 
>                         # To - Use To username and (optionally) domain to check
>                         if (is_user_in("To", "disabled")) {
>                                 sl_send_reply("403", "Your account has been disabled");
>                                 break;
>                         };
>                 };
> 
>                 # snom sip phones use this header to start their
>                 # keep-alive mechanism for NAT bindings
>                 append_to_reply("P-NAT-Refresh: 15\r\n");
> 
>                 if (!save("location")) {
>                         sl_reply_error();
>                 };
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # Accounting Section # 1
>         #
>         # NOTE: We test for flag 14 because we do not want to record Click2Dial
>         #       entries
>         # ------------------------------------------------------------------------
>         if ((method=="INVITE" || method=="BYE") && !isflagset(14)) {
>                 setflag(1);
>         };
> 
>         # ------------------------------------------------------------------------
>         # NAT Tear-Down Section
>         # ------------------------------------------------------------------------
>         if ((method == "BYE" || method == "CANCEL")) {
>                 end_media_session();
>         };
> 
>         # ------------------------------------------------------------------------
>         # Record Route Section
>         #
>         # 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
>         # ------------------------------------------------------------------------
>         if (!method=="REGISTER") {
>                 record_route();
>         };
> 
>         # ------------------------------------------------------------------------
>         # Loose Route Section
>         #
>         # Grant route routing if route headers present
>         # ------------------------------------------------------------------------
>         if (loose_route()) {
>                 route(2);
>                 break;
>         };
> 
>         prefix2domain();
> 
>         # ------------------------------------------------------------------------
>         # NAT Test Section #1
>         # ------------------------------------------------------------------------
>         if (client_nat_test("3") && !search("^Record-Route:")) {
>                 force_rport();
>                 fix_contact();
>         };
> 
>         # ------------------------------------------------------------------------
>         # PSTN Section
>         # ------------------------------------------------------------------------
>         if (method=="INVITE") {  ## Deny PSTN to 0204 and 095 on Tawan
>                 if ((uri=~"^sip:0204[0-9]*@") || (uri=~"^sip:095[0-9]*@")) {
>                         sl_send_reply("503", "Service Unavailable");
>                         break;
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Alias Routing Section
>         # ------------------------------------------------------------------------
>         lookup("aliases");
>         if (!uri==myself) {
>                 route(2);
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # Load ACL Section
>         # ------------------------------------------------------------------------
>         if (method=="INVITE" && !isflagset(14)) {
>                 xlog("L_ERR", "Time:[%Tf] Method:<%rm> r-uri:<%ru>\n");
>                 xlog("L_ERR", "IP:<%is> From:<%fu> To:<%tu> %ct\n");
>                 if (is_user_in("Request-URI", "voicemail")) {
>                         setflag(31);
>                 };
>                 if (is_from_local() || is_uri_host_local()) {
> 
>                         # Check user from grp table
>                         if (is_user_in("From", "int")) {
>                           log(1, "SER: a INT user\n");
>                                 setflag(29);
>                         };
>                         if (is_user_in("From", "free-pstn")) {
>                           log(1, "SER: a FREE-PSTN user\n");
>                                 setflag(28);
>                         };
>                         if (avp_db_load("$from/username", "s:callidblock")) {
>                                 if (avp_check("s:callidblock", "eq/y/i")) {
>                                         setflag(25);
>                                 };
>                         };
>                 };
>                 if (avp_db_load("$ruri/username", "s:anoncallrej")) {
>                         if (avp_check("s:anoncallrej", "eq/y/i")) {
>                           log(1, "SER: a ANON-CALL-REJ user\n");
>                                 setflag(24);
>                         };
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Anonymous Call Rejection Section # 24
>         # ------------------------------------------------------------------------
>         if (isflagset(24) && (method=="INVITE") &&
> search("^(f|F)rom:.*(a|A)nonymous")) {
>                 route(8);
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # Speed Dialing Section
>         # ------------------------------------------------------------------------
>         if ((method=="INVITE") && (uri=~"^sip:[0-9]{2}@.*")) {
>                 sd_lookup("speed_dial");
>         };
> 
>         # ------------------------------------------------------------------------
>         # 002 International Call Section # 29
>         # ------------------------------------------------------------------------
>         if (method=="INVITE" && uri=~"^sip:002[0-9]*@") {
>                 if (isflagset(29)) {
>                         log(1, "SER: an International Call route(6)\n");
>                         route(6);
>                 } else {
>                         sl_send_reply("503", "Service Unavailable");
>                 };
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # 0XXXXXXXXX Domestic Call Section # 29
>         # ------------------------------------------------------------------------
>         if (method=="INVITE" && uri=~"^sip:0[0-9]{9}@") {
>                 if (isflagset(29)) {
>                   log(1, "SER: a Domestic Call route(6)\n");
>                         route(6);
>                 } else {
>                         sl_send_reply("503", "Service Unavailable");
>                 };
>                 break;
>         };
> 
>         # ------------------------------------------------------------------------
>         # URI Compare Section
>         #
>         # Here we compare the "from" and "to" to see if the caller is dialing
>         # their own extension. If so then we route to voicemail(31) if needed
>         # ------------------------------------------------------------------------
>         if (method=="INVITE") {
>                 avp_write("$from", "i:34");
>                 if (avp_check("i:34", "eq/$ruri/i")) {
>                         if (isflagset(31)) {
>                                 route(5);
>                                 break;
>                         } else {
>                                 sl_send_reply("486", "Busy");
>                                 break;
>                         };
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Do Not Disturb Section
>         # ------------------------------------------------------------------------
>         if (avp_db_load("$ruri/username", "s:donotdisturb")) {
>                 if (avp_check("s:donotdisturb", "eq/y/i")) {
>                         route(5);
>                         break;
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Blind Call Forwarding Section
>         # ------------------------------------------------------------------------
>         if (method=="INVITE") {
>           log(1, "SER: BLIND CALL FORWARDING\n");
>                 # here we must store the current (aka original) R-URI because if
>                 # we set call forwarding and the forwarded number is busy then we
>                 # need to use this original R-URI to determine which voicemail
>                 # box we should go to
>                 if (isflagset(31)) {
>                         avp_write("$ruri", "$voicemail");
>                 };
>                 if (avp_db_load("$ruri/username", "s:callfwd")) {
>                         avp_pushto("$ruri", "s:callfwd");
> 
>                         # lookup the call fowarding number to see if it is a served
>                         # sip number or a PSTN number
> 
>                         # check forwarding number rules
>                         log(1, "SER: Check Forwarding Number Rules\n");
>                         route(1);
> 
>                         if (avp_check("$calltype", "eq/-/i")) {
>                                 log(1, "SER: 503 Service Unavailable 1\n");
>                                 sl_send_reply("503", "Service Unavailable");
>                                 break;
>                         };
> 
>                         # test for domestic PSTN gateway
>                         if (avp_check("$calltype", "eq/dom/i")) {
>                           log(1, "SER: Start a domestic PSTN call route(3)\n");
>                                 route(3);
>                                 break;
>                         };
> 
>                         # test for international PSTN gateway
>                         if (avp_check("$calltype", "eq/int/i")) {
>                                 log(1, "SER: Start an international PSTN call route(6)\n");
>                                 route(6);
>                                 break;
>                         };
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Call Routing Section
>         # ------------------------------------------------------------------------
>         if (!lookup("location")) {
> 
>                 # if flag 31 (ie voicemail) is set and we made it here this means
>                 # the user's phone is not registered anywhere. We'll forward to
>                 # voicemail after this block because we need to check the call
>                 # forward settings first
>                 if (isflagset(31)) {
>                         # flag 19 means the user has voicemail but is not online
>                         # so we need to remember to send to voicemail if call
>                         # forwarding is not enabled
>                         setflag(19);
>                 };
> 
>                 if (method=="INVITE") {
>                         if (does_uri_exist()) {
>                                 # subscriber record found, but they're offline
>                                 log(1, "SER: Temporarily Unavailable\n");
>                                 sl_send_reply("480", "Temporarily Unavailable");
>                                 break;
>                         };
> 
>                         if (uri=~"^sip:0[0-9]{9}@") {
>                                 # Send to PSTN Gateway
>                                 if (isflagset(28) || (is_user_in("From", "int")) ||
> (is_user_in("From", "free-pstn"))) {
>                                   log(1, "SER: Start a PSTN call\n");
>                                         route(3);
>                                 } else {
>                                         log(1, "SER: 503 Service Unavailable 2\n");
>                                         sl_send_reply("503", "Service Unavailable");
>                                 };
>                                 break;
>                         };
>                         sl_send_reply("404", "User Not Found");
>                         break;
>                 };
>         };
> 
>         # ------------------------------------------------------------------------
>         # Call Forwarding Section
>         # ------------------------------------------------------------------------
>         if (method=="INVITE") {
> 
>                 # save R-URI in a temp AVP for later use
>                 avp_write("$ruri", "i:99");
> 
>                 # only load the forward no answer option if voice mail is not enabled
>                 if (!isflagset(31)) {
>                         if (avp_db_load("$ruri/username", "s:fwdnoanswer")) {
>                                 route(1);
>                         };
>                 };
>                 if (avp_db_load("$ruri/username", "s:fwdbusy")) {
>                         route(1);
>                 };
>                 avp_pushto("$ruri", "i:99");
>         };
>         if (isflagset(19)) {
>                 # send to voicemail
>                 route(5);
>         } else {
>                 route(2);
>         };
> }
> 
> route[1] {
> 
>         # Here we have route checks for all the call forwarding stuff.
>         # The return values are passed as AVP $calltype as follows:
>         #
>         # "-"   = R-URI is not allowed
>         # "dom" = R-RURI is a domestic call
>         # "int" = R-RURI is an international call
>         # "sip" = R-RURI is a sip call
> 
>         avp_write("sip", "$calltype");
> 
>   # Call rejected
>         if ((uri=~"^sip:0204[0-9]*@") ||
>             (uri=~"^sip:095[0-9]*@") ||
>             (uri=~"^sip:[0-9]{3}@")) {
>                 break;
>         };
>   log(1, "SER: Look aliases\n");
>         lookup("aliases");
> 
>         log(1, "SER: Look location\n");
>         if (!lookup("location")) {
>                 if (uri=~"^sip:0[0-9]{9}@") {
>                         # test for domestic PSTN number
>                         if (isflagset(28)) {
>                                 log(1, "SER isflagset 28 (domestic)\n");
>                                 avp_write("dom", "$calltype");
>                         };
>                 } else if (uri=~"^sip:002[0-9]*@") {
>                         # test for international PSTN number
>                         if (isflagset(29)) {
>                                 log(1, "SER isflagset 29 (int)\n");
>                                 avp_write("int", "$calltype");
>                         };
>                 };
>                 break;
>         };
>         log(1, "SER isflagset (sip)\n");
>         avp_write("sip", "$calltype");
> }
> 
> route[2] {
>         log(1, "SER: SIP Call On-Net section route(2)\n");
>         if ((method=="INVITE") && !allow_trusted()) {
>                 if (!proxy_authorize("", "subscriber")) {
>                         proxy_challenge("", "0");
>                         break;
>                 } else if (!check_from()) {
>                         log(1, "Spoofed SIP call attempt");
>                         sl_send_reply("403", "Use From=ID");
>                         break;
>                 } else if (!(is_from_local() || is_uri_host_local())) {
>                         sl_send_reply("403", "Please register to use our service");
>                         break;
>                 };
>         };
>         if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
> !search("^Route:")){
>                 sl_send_reply("479", "We don't forward to private IP addresses");
>                 break;
>         };
>         if (isflagset(25)) {
>                 replace("^From:(.*)>" , "From: \"Anonymous\"
> <sip:someone at anonymous.invalid>");
>         };
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         t_on_failure("1");
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[3] {
>         log(1, "SER: Demestic Call Off-Net section route(3)\n");
> 
>         # All Domestic Calls Go To CISCO 5300
>         if (method=="INVITE") {
>                 if (!proxy_authorize("", "subscriber")) {
>                         proxy_challenge("", "0");
>                         break;
>                 } else if (!check_from()) {
>                         log(1, "Spoofed SIP call attempt");
>                         sl_send_reply("403", "Use From=ID");
>                         break;
>                 } else if (!(is_from_local() || is_uri_host_local())) {
>                         sl_send_reply("403", "Please register to use our service");
>                         break;
>                 };
>                 # enable caller id blocking for PSTN calls
>                 if (isflagset(25)) {
>                         append_rpid_hf();
>                 };
>         };
>         # SIP->PSTN calls get 45 seconds to timeout
>         log(1, "SER: Connecting to PSTN.....\n");
>         avp_write("i:45", "inv_timeout");
>         rewritehost("61.220.190.243");
>         if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
> !search("^Route:")){
>                 sl_send_reply("479", "We don't forward to private IP addresses");
>                 break;
>         };
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         if (isflagset(31)) {
>                 t_on_failure("1");
>         };
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[4] {
>         log(1, "SER: Voice Mail section route(4)\n");
> 
>         # voicemail route #1
>         #
>         # this path this executed during these conditions:
>         #
>         # cond 1) the called number is in the location table
>         #                     but the callee did not answer the phone
>         #                     (ie, failover to voicemail)
> 
>         if (isflagset(25)) {
>                 replace("^From:(.*)>" , "From: \"Anonymous\"
> <sip:someone at anonymous.invalid>");
>         };
>         rewritehostport("99.99.99.100:5060");
>         append_branch();
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[5] {
>         log(1, "SER: Voice Mail section route(5)\n");
> 
>         # voicemail route #2
>         #
>         # this path this executed during these conditions:
>         #
>         #       cond 1) the called number is not in the location table
>         #       cond 2) the from_uri == to_uri (ie, caller==callee)
> 
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         rewritehostport("99.99.99.100:5060");
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[6] {
>         log(1, "SER: International Call Off-Net section route(6)\n");
> 
>         # All International Calls Go To CISCO 5300
>         if (method=="INVITE") {
>                 if (!proxy_authorize("", "subscriber")) {
>                         proxy_challenge("", "0");
>                         break;
>                 } else if (!check_from()) {
>                         log(1, "Spoofed SIP call attempt");
>                         sl_send_reply("403", "Use From=ID");
>                         break;
>                 } else if (!(is_from_local() || is_uri_host_local())) {
>                         sl_send_reply("403", "Please register to use our service");
>                         break;
>                 };
>                 # enable caller id blocking for PSTN calls
>                 if (isflagset(25)) {
>                         append_rpid_hf();
>                 };
>         };
>         # SIP->PSTN calls get 45 seconds to timeout
>         avp_write("i:45", "inv_timeout");
>         rewritehost("61.220.190.243");
>         if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
> !search("^Route:")){
>                 sl_send_reply("479", "We don't forward to private IP addresses");
>                 break;
>         };
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[7] {
>   log(1, "SER: Caller Blocked section route(7)\n");
> 
>         # caller blocked announcment
>         #
>         # this path this executed if a caller has been blocked
> 
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         rewriteuri("sip:699 at 99.99.99.100:5060");
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> route[8] {
>         log(1, "SER: Anonymous Call Rejection section route(8)\n");
> 
>         # anonymous call rejection announcment
>         #
>         # this path this executed for anonymous callers
> 
>         if (method=="INVITE" || method=="ACK") {
>                 use_media_proxy();
>         };
>         rewriteuri("sip:698 at 99.99.99.100:5060");
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> 
> onreply_route[1] {
>         # Not all 2xx messages have a content body so here we
>         # make sure our Content-Length > 0 to avoid a parse error
>         if (status=~"(180)|(183)|2[0-9][0-9]") {
>                 if (!search("^Content-Length:\ 0")) {
>                         use_media_proxy();
>                 };
>         };
>         if (client_nat_test("1")) {
>                 fix_contact();
>         };
> }
> 
> failure_route[1] {
>         log(1, "SER: Failure Route section failure_route(1)\n");
> 
>         # if caller hung up then don't sent to voicemail
>         if (t_check_status("487")) {
>                 break;
>         };
>         if (isflagset(26) && t_check_status("486")) {
>                 # forward busy is flag 26
>                 if (avp_pushto("$ruri", "s:fwdbusy")) {
>                         log(1, "SER: fork to fwdbusy\n");
>                         avp_delete("s:fwdbusy");
>                         append_branch();
>                         resetflag(26);
> 
>                         # test for domestic PSTN gateway
>                         if (uri=~"^sip:0[0-9]{9}@") {
>                         # if (avp_check("$fwd_busy_type", "eq/dom/i")) {
>                                 # test for domestic PSTN gateway
>                                 log(1, "SER: Busy Failure and Jump to route(3)\n");
>                                 route(3);
>                         } else if (uri=~"^sip:002[1-9][0-9]*@") {
>                         # } else if (avp_check("$fwd_busy_type", "eq/int/i")) {
>                                 # test for international PSTN gateway
>                                 log(1, "SER: Busy Failure and Jump to route(6)\n");
>                                 route(6);
>                         } else {
>                                 # default to sip call
>                                 log(1, "SER: Busy Failure and Jump to route(2)\n");
>                                 route(2);
>                         };
>                         break;
>                 };
>         };
> 
>         # here we can have either voicemail __OR__ forward no answer
>         if (isflagset(27) && t_check_status("408")) {
>                 # forward no answer is flag 27
>                 if (avp_pushto("$ruri", "s:fwdnoanswer")) {
>                         log(1, "SER: fork to fwdnoanswer\n");
>                         avp_delete("s:fwdnoanswer");
>                         append_branch();
>                         resetflag(27);
> 
>                         if (uri=~"^sip:0[0-9]{9}@") {
>                         # if (avp_check("$fwd_no_answer_type", "eq/dom/i")) {
>                                 # test for domestic PSTN gateway
>                                 log(1, "SER: No Answer Failure and Jump to route(3)\n");
>                                 route(3);
>                   } else if (uri=~"^sip:002[1-9][0-9]*@") {
>                         # } else if (avp_check("$fwd_no_answer_type", "eq/int/i")) {
>                                 # test for international PSTN gateway
>                                 log(1, "SER: No Answer Failure and Jump to route(6)\n");
>                                 route(6);
>                         } else {
>                                 # default to sip call
>                                 log(1, "SER: No Answer Failure and Jump to route(2)\n");
>                                 route(2);
>                         };
>                         break;
>                 };
>         } else if (isflagset(31) && avp_pushto("$ruri", "$voicemail")) {
>                 avp_delete("$voicemail");
>                 log(1, "SER: No Answer Failure and Jump to route(4)\n");
>                 route(4);
>                 break;
>         };
> }
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>




More information about the sr-users mailing list