Can u place an exit also in this bloc? if (!uri==myself) { append_hf("P-hint: outbound\r\n"); xlog("URI <> myself TO ROUTE 1 \r\n"); route(1); -> exit; };
DanB On 8/2/07, Marc LEURENT <[EMAIL PROTECTED]> wrote: > There is already an exit; function at the end of the route1 > And I have disabled the acc functions in the route > > Do you have a working configuration using STUN and version 1.2.1 of openser? > > Thanks > > > > debug=7 # debug level (cmd line: -dddddddddd) > fork=no > log_stderror=yes # (cmd line: -E) > children=4 > > listen=88.191.45.91 > #alias=sd-7501.dedibox.fr > > port=5060 > > > avp_aliases="day=i:101;time=i:102;can_uri=i:800;s_ip=i:801;billing_party=i:802;from_header=i:803;sip_proxy_ip=i:804" > #;pstnuser=i:805;pstnpassword=i:806:pstnrealm=i:807" > > > # ------------------ module loading ---------------------------------- > > #set module path > mpath="/usr/lib/openser/modules/" > > # Uncomment this if you want to use SQL database > loadmodule "mysql.so" > > loadmodule "sl.so" # Stateless Module > loadmodule "tm.so" # Transaction Module > loadmodule "rr.so" # Record-Route and Route Module > loadmodule "maxfwd.so" # Max-Forward processor Module > loadmodule "usrloc.so" # User Location Implementation Module > loadmodule "registrar.so" # SIP Registrat Implementation Module > (need usrloc) > loadmodule "textops.so" # Text Operation Module > loadmodule "mi_fifo.so" # FIFO transport layer implementation > for Management Interface > > loadmodule "acc.so" # Accounting Module > loadmodule "avpops.so" # AVP Operation Module (user > preference) > loadmodule "uri.so" # Generic URI operation Module > > loadmodule "auth.so" # Authentification Module > #loadmodule "auth_db.so" # Database-backend > Authentication mMdule > loadmodule "auth_radius.so" # RADIUS-backend Authentication Module > loadmodule "group_radius.so" # User-groups Module with > RADIUS-backend > #loadmodule "avp_radius.so" # RADIUS-backend for AVP loading > Module > > #loadmodule "presence.so" # Presence server Module > #loadmodule "pua.so" # Common API for presence user agent > client > > loadmodule "options.so" # OPTIONS server replier Module > loadmodule "xlog.so" # Advanced Logger Module > > loadmodule "nathelper.so" # NAT Traversal Helper Module > #loadmodule "dispatcher.so" # Dispatcher (load-balancer) Module > > loadmodule "uac.so" # User Agent Client > loadmodule "siptrace.so" # SipTrace module (storage of SIP > requests) > #loadmodule "exec.so" # Allows to start an external command > from a OpenSER script > > # ----------------- setting module-specific parameters --------------- > > > # -- exec params -- > #modparam("exec", "setvars", 1) # Turn off to disable setting > environment variables for executed commands > #modparam("exec", "time_to_kill", 20) # longest time a program is allowed > to execute > > > # -- maxfwd params -- > modparam("maxfwd", "max_limit", 10) # Default is 256 | 10 in the functions > > > # -- sl params -- > modparam("sl", "enable_stats", 1) > > > # -- mi_fifo params -- > modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") > > > # -- usrloc params -- > # Uncomment this if you want to use SQL database > modparam("usrloc", "db_mode", 1) # Write > instantaneously in the DB > modparam("usrloc", "db_url", "mysql://openser:[EMAIL PROTECTED]/openser") > modparam("usrloc", "timer_interval", 10) > #modparam("usrloc", "use_domain", 1) # Not working for > now... > #modparam("usrloc", "cseq_delay", 5) # Delay before > authorizing others retransmissions > #modparam("usrloc", "matching_mode", 1) # 1 - CONTACT and > CALLID based matching algorithm > modparam("usrloc", "nat_bflag" , 3) > > > # -- rr params -- > modparam("rr", "enable_full_lr", 1) # add value to ;lr param to > make some broken UAs happy > #modparam("rr", "add_username", 1) # username is added to the > record-route > > > # -- siptrace params -- > modparam("siptrace", "db_url", "mysql://openser:[EMAIL PROTECTED]/openser") > modparam("siptrace", "table", "sip_trace") # Default value > "sip_trace" > modparam("siptrace", "trace_on", 1) > > > > > # -- registrar params -- > modparam("registrar", "default_expires", 1800) > modparam("registrar", "max_expires", 60) > modparam("registrar", "received_avp", "$avp(i:42)") > modparam("registrar", "max_contacts", 100) # TO INCREASE LATER > > > # -- nathelper params -- > #modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:22222") > modparam("nathelper", "rtpproxy_disable", 1) > modparam("nathelper", "sipping_bflag", 5) > modparam("nathelper", "natping_interval", 20) > modparam("nathelper", "ping_nated_only", 1) > modparam("nathelper", "sipping_method", "OPTIONS") > modparam("nathelper", "received_avp", "$avp(i:42)") # Same Value > as the registrar module > modparam("nathelper", "sipping_from", "sip:[EMAIL PROTECTED]") > > #modparam("auth", "nonce_expire", 300) # > Time before nounce expiration > modparam("auth_radius", "radius_config", > "/etc/radiusclient-ng/radiusclient.conf") > > > # -- group_radius params -- > modparam("group_radius", "radius_config", > "/etc/radiusclient-ng/radiusclient.conf") > modparam("group_radius", "use_domain", 1) # [EMAIL PROTECTED] will be > used for lookup > > > # -- avp_radius parameter -- > #modparam("avp_radius", "radius_config", > "/etc/radiusclient-ng/radiusclient.conf") > > > # -- acc params (with radius )-- > modparam("acc", "radius_config", "/etc/radiusclient-ng/radiusclient.conf") > modparam("acc", "radius_flag", 1) > modparam("acc", "radius_missed_flag", 2) > > modparam("acc", "early_media", 1) > modparam("acc", "report_cancels", 1) > #modparam("acc", "report_ack", 0) > modparam("acc", "detect_direction", 1) > #modparam("acc", "log_flag", 1) # number of the flag which will be > used to mark messages for accounting > #modparam("acc", "log_level", 1) # Set the reporting log level > #modparam("acc", "log_missed_flag", 2) # > #modparam("acc", "failed_transaction_flag", 2) > modparam("acc", "service_type", 15) # Radius service type used for > accounting : 15 = (SIP) > #modparam("acc", "radius_extra", "Sip-Src-IP=$si;Sip-Src-Port=$sp") > # ATTENTION: DO NOT PUT ; at the end of the radius_extra attribute > modparam("acc", "radius_extra", "Sip-Src-IP=$si; > Sip-Src-Port=$sp; > Canonical-URI=$avp(can_uri); > Billing-Party=$avp(billing_party); > SIP-Proxy-IP=$avp(sip_proxy_ip); > User-Agent=$ua > ") > #Billing-Party=$avp(billing_party) > #From-Header=$hdr(from); > #User-Name=$fU; > #From-Header=$avp(from_header); > #Digest-Realm=$fd > #Sip-From-Tag=$avp(from_header); > #SIP-Method=$rm; > > > # ------------------------- request 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"); > exit; > }; > > if (msg:len >= 2048 ) { > sl_send_reply("513", "Message too big"); > exit; > }; > > > > > # NAT detection > route(2); > > # 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(); > }; > > # subsequent messages withing a dialog should take the > # path determined by record-routing > if (loose_route()) { # mark routing logic in request > xlog("IN LOOSE ROUTE SECTION \r\n"); > append_hf("P-hint: rr-enforced\r\n"); > if(is_method("BYE")) { # log it all the time > acc_rad_request("200 ok"); > acc_log_request("200 ok"); > } > route(1); > exit; > }; > > > > # Functions when calling other domains > xlog("CHECKING IF URI <> myself \r\n"); > if (!uri==myself) { > append_hf("P-hint: outbound\r\n"); > xlog("URI <> myself TO ROUTE 1 \r\n"); > route(1); > }; > > > if (uri==myself) { > > if (method=="REGISTER") { > sip_trace(); > xlog("L_INFO", "$fu IS TRYING TO REGISTER \r\n"); > > > if (!radius_www_authorize("sd-7501.dedibox.fr")) { > www_challenge("sd-7501.dedibox.fr", "0"); > # qop set to 1 > xlog("L_INFO", "WWW_CHALLENGE of $si FAILED > \r\n"); > exit; > }; > > #if (isflagset(5)) { > if (isbflagset(3)) { > #setflag(6); > # if you want OPTIONS natpings uncomment next > # setflag(7); # Deprecated > setbflag(5); # Set Flag for SIP PINGING > }; > > > save("location"); > xlog("L_INFO", "SAVE LOCATION OF $si \r\n"); > exit; > }; > > > > if (!lookup("location")) { > xlog("LOOKUP(LOCATION) FAILED \r\n"); > # log to acc as missed call > acc_rad_request("404 Not Found"); > acc_log_request("404 Not Found"); > xlog("L_DBG", "ACC RADIUS: 404 NOT FOUND FOR $si > \r\n"); > sl_send_reply("404", "Not Found"); > exit; > }; > append_hf("P-hint: usrloc applied\r\n"); > > }; > > route(1); > } > > ## Generic Forward > route[1] { > xlog("STARTING ROUTE 1 \r\n"); > if (subst_uri('/(sip:.*);nat=yes/\1/')){ > #setflag(6); # Deprecated, for version 1.1 > xlog("SETTING BFLAGS 3 & 5 \r\n"); > setbflag(3); # NAT flag > setbflag(5); # For SIP PINGS > }; > > #if (isflagset(5)||isflagset(6)) { > if (isbflagset(3)) { > xlog("FLAG 3 OK GOTO ROUTE 3 \r\n"); > route(3); > } else { > xlog("!!!! STRANGE, NO FLAG 3 -> NORMAL ROUTE \r\n"); > } > > if (!t_relay()) { > sl_reply_error(); > }; > exit; > } > > > > > # NAT Detection > route[2]{ > xlog("ROUTE2: STARTING NAT DETECTION \r\n"); > force_rport(); # Add port number of the client in the request > if (nat_uac_test("19")) { > xlog("!!!!!!!!! NAT UAC TEST 19 SUCEEDEED \r\n"); > if (method=="REGISTER") { > xlog("FIX NATED REGISTER \r\n"); > fix_nated_register(); > } else { > xlog("FIX NATED CONTACT \r\n"); > fix_nated_contact(); # Change the IP -> public > fix_nated_sdp("2"); # Force to be active > }; > #setflag(5); Deprecated > xlog("ROUTE2: SETFLAG 3 \r\n"); > setbflag(3); > }; > } > > > ## Route for natted contact > route[3] { > xlog("!!!!!!!!! ON ROUTE 3 FOR NATTED CONTACT \r\n"); > if (is_method("BYE|CANCEL")) { > # Ajout Maison > #acc_rad_request("200 ok"); > #acc_log_request("200 ok"); > > #unforce_rtp_proxy(); > t_on_failure("1"); > > } else if (is_method("INVITE")){ > #force_rtp_proxy(); > t_on_failure("1"); > }; > #if (isflagset(5)) > if (isbflagset(3)){ > search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); > } > t_on_reply("1"); > } > > > ## Failure Route 1 > failure_route[1] { > xlog("!!!!!!!!! ON FAILURE ROUTE \r\n"); > #if (isflagset(6) || isflagset(5)) { > #if (isbflagset(3)) { > #unforce_rtp_proxy(); > #} > } > > ## Reply route > onreply_route[1] { > xlog("!!!!!!!!! ON REPLY ROUTE \r\n"); > #if ((isflagset(5) || isflagset(6)) && status=~"(183)|(2[0-9][0-9])") > { > #if (isbflagset(3) && status=~"(183)|(2[0-9][0-9])") { > #force_rtp_proxy(); > #} > search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); > > #if (isflagset(6)) { > if (isbflagset(3)) { > xlog("!!!!!!!!! ON REPLY ROUTE / FIX NATED CONTACT \r\n"); > fix_nated_contact(); > } > exit; > } > > > Dan-Cristian Bogos a écrit : > > Marc, > > > > can u post your newly modified configuration again? Also, I would add > > an exit after route(1) in the loose routing. > > Did u try also disabling the accounting? > > > > Dan > > > > On 8/2/07, Marc LEURENT <[EMAIL PROTECTED]> wrote: > >> Do you have any idea to solve this matter: > >> In the BYE request: > >> > >> 0(2569) found end of header > >> 0(2569) find_next_route: No next Route HF found > >> 0(2569) after_loose: No next URI found > >> > >> So the BYE message is not forwarded by openser > >> > >> > >> > >> > >> > >> > >> Please find below INVITE and BYE requests > >> > >> > >> > >> > >> > >> > >> > >> > >> 0(2632) SIP Request: > >> 0(2632) method: <INVITE> > >> 0(2632) uri: <sip:[EMAIL PROTECTED]:5060> > >> 0(2632) version: <SIP/2.0> > >> 0(2632) parse_headers: flags=2 > >> 0(2632) Found param type 232, <branch> = <z9hG4bK4747925369759203710>; > >> state=16 > >> 0(2632) end of header reached, state=5 > >> 0(2632) parse_headers: Via found, flags=2 > >> 0(2632) parse_headers: this is the first via > >> 0(2632) After parse_msg... > >> 0(2632) preparing to run routing scripts... > >> 0(2632) parse_headers: flags=100 > >> 0(2632) DEBUG:parse_to:end of header reached, state=10 > >> 0(2632) DBUG:parse_to: display={}, ruri={sip:[EMAIL > >> PROTECTED]:5060;user=phone} > >> 0(2632) DEBUG: get_hdr_field: <To> [46]; uri=[sip:[EMAIL > >> PROTECTED]:5060;user=phone] > >> 0(2632) DEBUG: to body [<sip:[EMAIL PROTECTED]:5060;user=phone> > >> ] > >> 0(2632) get_hdr_field: cseq <CSeq>: <1> <INVITE> > >> 0(2632) DEBUG:maxfwd:is_maxfwd_present: value = 70 > >> 0(2632) DBG:maxfwd:process_maxfwd_header: value 70 decreased to 10 > >> 0(2632) ROUTE2: STARTING NAT DETECTION > >> 0(2632) !!!!!!!!! NAT UAC TEST 19 SUCEDEED > >> 0(2632) parse_headers: flags=80 > >> 0(2632) ROUTE2: SETFLAG 3 > >> 0(2632) DEBUG: add_param: tag=c0a80101-b67ff5 > >> 0(2632) DEBUG:parse_to:end of header reached, state=29 > >> 0(2632) DBUG:parse_to: display={"101"}, ruri={sip:[EMAIL > >> PROTECTED]:5060;user=phone} > >> 0(2632) parse_headers: flags=200 > >> 0(2632) DEBUG: get_hdr_body : content_length=269 > >> 0(2632) found end of header > >> 0(2632) find_first_route: No Route headers found > >> 0(2632) loose_route: There is no Route HF > >> 0(2632) DEBUG: has_totag: no totag > >> 0(2632) I AM SETTING THE FLAGS FOR RADIUS > >> 0(2632) SETTING FLAGS 1 & 2 FOR RADIUS > >> 0(2632) CHECKING IF URI <> myself > >> 0(2632) grep_sock_info - checking if host==us: 18==12 && > >> [sd-7501.dedibox.fr] == [88.191.45.91] > >> 0(2632) grep_sock_info - checking if port 5060 matches port 5060 > >> 0(2632) grep_sock_info - checking if host==us: 18==12 && > >> [sd-7501.dedibox.fr] == [88.191.45.91] > >> 0(2632) grep_sock_info - checking if port 5060 matches port 5060 > >> 0(2632) grep_sock_info - checking if host==us: 18==12 && > >> [sd-7501.dedibox.fr] == [88.191.45.91] > >> 0(2632) grep_sock_info - checking if port 5060 matches port 5060 > >> 0(2632) grep_sock_info - checking if host==us: 18==12 && > >> [sd-7501.dedibox.fr] == [88.191.45.91] > >> 0(2632) grep_sock_info - checking if port 5060 matches port 5060 > >> 0(2632) rewrite_uri: Rewriting Request-URI with 'sip:[EMAIL > >> PROTECTED]:1028;user=phone' > >> 0(2632) parse_headers: flags=ffffffffffffffff > >> 0(2632) STARTING ROUTE 1 > >> 0(2632) subst_run: running. r=1 > >> 0(2632) subst_str: no match > >> 0(2632) FLAG 3 OK GOTO ROUTE 3 > >> 0(2632) !!!!!!!!! ON ROUTE 3 FOR NATTED CONTACT > >> 0(2632) DEBUG: t_newtran: T on entrance=0xffffffff > >> 0(2632) parse_headers: flags=ffffffffffffffff > >> 0(2632) parse_headers: flags=78 > >> 0(2632) t_lookup_request: start searching: hash=12532, isACK=0 > >> 0(2632) DEBUG: RFC3261 transaction matching failed > >> 0(2632) DEBUG: t_lookup_request: no transaction found > >> 0(2632) DBG: trans=0xb5c08fa8, callback type 1, id 1 entered > >> 0(2632) trace_onreq_in: trace off... > >> 0(2632) DBG: trans=0xb5c08fa8, callback type 1, id 0 entered > >> 0(2632) parse_headers: flags=78 > >> 0(2632) DEBUG: noisy_timer set for accounting > >> 0(2632) DEBUG:rr:is_direction: param ftag not found > >> 0(2632) parse_headers: flags=ffffffffffffffff > >> 0(2632) check_via_address(82.127.0.79, 82.127.0.79, 0) > >> > >> > >> > >> > >> > >> > >> > >> 0(2569) SIP Request: > >> 0(2569) method: <BYE> > >> 0(2569) uri: <sip:[EMAIL PROTECTED]:1312> > >> 0(2569) version: <SIP/2.0> > >> 0(2569) parse_headers: flags=2 > >> 0(2569) Found param type 232, <branch> = <z9hG4bK2074253192092946047>; > >> state=16 > >> 0(2569) end of header reached, state=5 > >> 0(2569) parse_headers: Via found, flags=2 > >> 0(2569) parse_headers: this is the first via > >> 0(2569) After parse_msg... > >> 0(2569) preparing to run routing scripts... > >> 0(2569) parse_headers: flags=100 > >> 0(2569) DEBUG: add_param: tag=c0a80101-b31387 > >> 0(2569) DEBUG:parse_to:end of header reached, state=29 > >> 0(2569) DBUG:parse_to: display={}, ruri={sip:[EMAIL > >> PROTECTED]:5060;user=phone} > >> 0(2569) DEBUG: get_hdr_field: <To> [66]; uri=[sip:[EMAIL > >> PROTECTED]:5060;user=phone] > >> 0(2569) DEBUG: to body [<sip:[EMAIL PROTECTED]:5060;user=phone>] > >> 0(2569) get_hdr_field: cseq <CSeq>: <1> <BYE> > >> 0(2569) DEBUG:maxfwd:is_maxfwd_present: value = 70 > >> 0(2569) DBG:maxfwd:process_maxfwd_header: value 70 decreased to 10 > >> 0(2569) ROUTE2: STARTING NAT DETECTION > >> 0(2569) !!!!!!!!! NAT UAC TEST 19 SUCEDEED > >> 0(2569) parse_headers: flags=80 > >> 0(2569) DEBUG: get_hdr_body : content_length=0 > >> 0(2569) found end of header > >> 0(2569) ROUTE2: SETFLAG 3 > >> 0(2569) DEBUG: add_param: tag=c0a80101-2376fc2 > >> 0(2569) DEBUG:parse_to:end of header reached, state=29 > >> 0(2569) DBUG:parse_to: display={}, ruri={sip:[EMAIL > >> PROTECTED]:5060;user=phone} > >> 0(2569) parse_headers: flags=200 > >> 0(2569) is_preloaded: No > >> 0(2569) grep_sock_info - checking if host==us: 11==12 && [82.127.0.79] > >> == [88.191.45.91] > >> 0(2569) grep_sock_info - checking if port 5060 matches port 1312 > >> 0(2569) grep_sock_info - checking if host==us: 11==12 && [82.127.0.79] > >> == [88.191.45.91] > >> 0(2569) grep_sock_info - checking if port 5060 matches port 1312 > >> 0(2569) DEBUG:check_self: host != me > >> 0(2569) grep_sock_info - checking if host==us: 12==12 && [88.191.45.91] > >> == [88.191.45.91] > >> 0(2569) grep_sock_info - checking if port 5060 matches port 5060 > >> 0(2569) after_loose: Topmost route URI: > >> 'sip:88.191.45.91;lr=on;ftag=c0a80101-b31387' is me > >> 0(2569) parse_headers: flags=200 > >> 0(2569) found end of header > >> 0(2569) find_next_route: No next Route HF found > >> 0(2569) after_loose: No next URI found > >> 0(2569) DBG:rr:run_rr_callbacks: callback id 0 entered with > >> <lr=on;ftag=c0a80101-b31387> > >> > >> > >> > >> > >> Dan-Cristian Bogos a écrit : > >>> That's because for INVITE your will take routing decisions but BYE u > >>> will just proxy out. > >>> > >>> DanB > >>> > >>> On 8/2/07, Marc LEURENT <[EMAIL PROTECTED]> wrote: > >>>> I've compared the INVITE and BYE method.... > >>>> And the uri in the INVITE method is > >>>> 0(2632) SIP Request: > >>>> 0(2632) method: <INVITE> > >>>> 0(2632) uri: <sip:[EMAIL PROTECTED]:5060> > >>>> 0(2632) version: <SIP/2.0> > >>>> > >>>> whereas in the BYE method > >>>> > >>>> 0(2569) SIP Request: > >>>> 0(2569) method: <BYE> > >>>> 0(2569) uri: <sip:[EMAIL PROTECTED]:1312> > >>>> 0(2569) version: <SIP/2.0> > >>>> > >>>> > >>>> so the DEBUG:check_self: host != me > >>>> I'm going to try without accoounting, but it should'nt change anything... > >>>> > >>>> Best Regards > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > _______________________________________________ Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users