[Users] timeout problem with media gateway
Klaus Darilion
klaus.mailinglists at pernau.at
Mon Dec 19 12:04:08 CET 2005
Matteo Piazza wrote:
> HI, In my serial forking configuration I have this problem:
> if i use the a media gateway ( asterisk ) on the same machine ( but I
> see also on the another machine) of openser ( on the 5061 port) I have a
Sorry I cant understand your problem. Describe your scenario. Who calls
whom? What should happen after timeout? (timeout= user does not pick up
call)
> problem with the timeout of a call. The call continues beyond the
> timeout and when by the PSTN telephone I reject the call appears the
> following log message:
>
> Warning: sl_send_reply: I won't send a reply for ACK!!
you are executing sl_send_reply for an ACK request. That doesn't make sense.
regards
klaus
>
> Where I have mistake? Any idea?
>
> Another thing. I see that I redirect the call directly in the media
> gateway, (for example a location of a user is a PSTN number) whitout the
> traslation of IP number, all is ok.
>
> Matteo
>
>
> ======================================
> #
> # $Id: openser.cfg$
> #
> #
>
> # ----------- global configuration parameters ------------------------
>
>
> debug=3 # debug level (cmd line: -dddddddddd)
> fork=yes
> log_stderror=yes # (cmd line: -E)
>
> /* Uncomment these lines to enter debugging mode
> fork=no
> log_stderror=yes
> */
>
> check_via=no # (cmd. line: -v)
> dns=no # (cmd. line: -r)
> rev_dns=no # (cmd. line: -R)
> port=5060
> children=4
> fifo="/tmp/openser_fifo"
>
>
> # ------------------ module loading ----------------------------------
>
> # Uncomment this if you want to use SQL database
> loadmodule "/usr/local/lib/openser/modules/mysql.so"
>
> loadmodule "/usr/local/lib/openser/modules/sl.so"
> loadmodule "/usr/local/lib/openser/modules/tm.so"
> loadmodule "/usr/local/lib/openser/modules/rr.so"
> loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/openser/modules/usrloc.so"
> loadmodule "/usr/local/lib/openser/modules/registrar.so"
> loadmodule "/usr/local/lib/openser/modules/textops.so"
> loadmodule "/usr/local/lib/openser/modules/avpops.so"
> loadmodule "/usr/local/lib/openser/modules/xlog.so"
> loadmodule "/usr/local/lib/openser/modules/lcr.so"
>
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> loadmodule "/usr/local/lib/openser/modules/auth.so"
> loadmodule "/usr/local/lib/openser/modules/auth_db.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- usrloc params --
> modparam("registrar", "append_branches", 1)
> #modparam("usrloc", "db_mode", 0)
>
> # Uncomment this if you want to use SQL database
> # for persistent storage and comment the previous line
> modparam("usrloc", "db_mode", 2)
>
> # -- auth params --
> # Uncomment if you are using auth module
> #
> modparam("auth_db", "calculate_ha1", yes)
> #
> # If you set "calculate_ha1" parameter to yes (which true in this config),
> # uncomment also the following parameter)
> #
> 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)
>
>
>
> modparam("usrloc","db_url","mysql://openser:heslo@127.0.0.1/openser")
> modparam("auth_db","db_url","mysql://openser:heslo@127.0.0.1/openser")
> modparam("lcr","db_url","mysql://openser:heslo@127.0.0.1/openser")
> modparam("avpops","avp_url","mysql://openser:heslo@127.0.0.1/openser")
> modparam("avpops","avp_table","usr_preferences")
>
>
>
> modparam("tm", "fr_timer", 7)
> modparam("tm", "fr_inv_timer", 10)
> modparam("tm", "wt_timer", 5)
>
> #modparam("avpops","avp_aliases","fwdbusy=i:665")
>
>
>
>
>
> # ------------------------- 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;
> };
>
> # =============================
> # Notify Keep-Alive Section
> # ============================
>
>
> if ((method=="NOTIFY") && search("Event: keep-alive")) {
> sl_send_reply("200","OK");
> exit;
> };
>
>
>
> if (method =="INVITE" && uri =~"^sip:0[0-9]*@*"){
> log(1, "Check 1 Start PSTN Call\n");
> rewritehostport("192.168.9.97:5061");
> }
>
>
> # ========================================================
> # 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();
>
> # subsequent messages withing a dialog should take the
> # path determined by record-routing
> if (loose_route()) {
> if(method=="BYE"){
> t_relay();
> exit;
> };
> # mark routing logic in request
> append_hf("P-hint: rr-enforced\r\n");
> route(1);
> };
>
> if (!uri==myself) {
> # mark routing logic in request
> append_hf("P-hint: outbound\r\n");
> # if you have some interdomain connections via TLS
> #if(uri=~"@tls_domain1.net") {
> # t_relay_to_tls("IP_domain1","port_domain1");
> # exit;
> #} else if(uri=~"@tls_domain2.net") {
> # t_relay_to_tls("IP_domain2","port_domain2");
> # exit;
> #}
> route(1);
> };
>
> # 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("create-net.it", "subscriber")) {
> www_challenge("create-net.it", "0");
> exit;
> };
>
> save("location");
> exit;
> };
>
> lookup("aliases");
> if (!uri==myself) {
> append_hf("P-hint: outbound alias\r\n");
> route(1);
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> sl_send_reply("404", "Not Found");
> exit;
> };
> append_hf("P-hint: usrloc applied\r\n");
> };
>
> # =======================================
> # PSTN Getaway
> # =======================================
>
>
>
> if(method=="INVITE"){
> if (avp_db_load("$ruri","s:fwdactive")) {
> if(avp_check("s:fwdactive","eq/y/i")){
> log(1,"FWD ACTIVE\n!");
> setflag(2);
> }
> };
>
> if (avp_db_load("$ruri","s:mailactive")) {
> if(avp_check("s:mailactive","eq/y/i")){
> log(1,"MAIL ACTIVE\n!");
> setflag(4);
> }
> }
>
> if(load_contacts()){
> xlog("L_ERR","LOAD CONTACTS!\n");
> setflag(1);
> };
> if(next_contacts()){
> xlog("L_ERR","NEXT CONTACT!\n");
> };
>
> };
>
>
>
> if(isflagset(2)){
> t_on_failure("1");
> t_relay();
> exit;
> }
> else {
> if(isflagset(4)){
> t_on_failure("2");
> t_relay();
> exit;
> }
> else {
> t_on_failure("3");
> t_relay();
> exit;
> }
> };
>
> }
>
> route[1] {
> # log(1,"ROUTE 1 !\n");
> if (!t_relay()) {
> sl_reply_error();
> };
> exit;
> }
>
>
> route[2] {
> # send it out now; use stateful forwarding as it works reliably
> # even for UDP2TCP
> log(1,"ROUTE 2 !\n");
> sl_send_reply("181","CALL IS BEING FORWARDED");
> t_on_failure("1");
> if (!t_relay()) {
> sl_reply_error();
> };
> exit;
> }
>
>
>
> failure_route[1]{
> log(1,"FAILURE ROUTE FORWARD !\n");
> if (t_check_status("408")){
> if (next_contacts()) {
> log(1,"NUOVO CONTATTO !\n");
> route(2);
> exit;
> }
> else {
> log(1,"FINE CHIAMATA - TIME OUT!\n");
> if (isflagset(4)){
> log(1,"ATTIVAZIONE VOICEMAIL!\n");
> revert_uri();
> xlog("L_ERR","<$ruri>");
> rewritehostport("192.168.9.97:5061");
> append_branch();
> t_relay();
> exit;
> }
> exit;
> };
>
> }
> else {
> if ( t_check_status("603") || t_check_status("486") ){
> log(1,"OCCUPATO!\n");
> if (isflagset(4)){
> log(1,"ATTIVAZIONE VOICEMAIL!\n");
> revert_uri();
> xlog("L_ERR","<$ruri>");
> rewritehostport("192.168.9.97:5061");
> append_branch();
> t_relay();
> exit;
> }
> exit;
> }
> };
> }
>
>
> failure_route[2] {
> log(1,"FINE CHIAMATA 2 - SENZA FORWARD!\n");
> revert_uri();
> xlog("L_ERR","<$ruri>");
> rewritehostport("192.168.9.97:5061");
> append_branch();
> t_relay();
> exit;
> }
>
>
> failure_route[3] {
> log(1,"FINE CHIAMATA 3 - SENZA FORWARD!\n");
> if ( t_check_status("603") || t_check_status("486") ){
> t_relay();
> exit;
> }
> exit;
>
> }
>
>
>
>
>
>
>
>
>
>
>
> =======================================
> Matteo Piazza, Junior Researcher
> CREATE-NET
> Via Solteri, 38 - 38100 Trento - Italy
> email: matteo.piazza at create-net.it
> Tel: +39-0461-408400ext:308
> www.create-net.it
> =======================================
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>
>
More information about the sr-users
mailing list