[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