[OpenSER-Users-ES] Problema al cambiar la Request URI en un INVITE

Ramona ramona at openser.org
Fri Feb 1 14:08:37 CET 2008


Hola,

entra en un bucle infinito, por el codigo que lo has metido.

Intentalo asi:

       if(method=="INVITE")
        {
            if($ru!="sip:343 at flanders-bis.hi.inet")
            {
                forward("10.95.42.92:5060");
                exit;
            }
        }


Saludos,
Ramona



David Vicente wrote:
> Buenas a todos.
>
> Hace unos días comenté que estaba trabajando con un SER de IPTEL. Al 
> hacer un INVITE lo hacía pasar por un Applicattion Server y le cambiaba 
> la Request URI, pero no el TO, y el SER hacía caso omiso y funcionaba 
> con el TO. Después de bastante buscar descubrí que era un bug que tenían 
> abierto hace más de un año y que aún no han solucionado (al menos 
> aparece como abierto en su lista de bugs). Probé con una versión más 
> actual y aún así tenía el mismo problema.
> Hemos decidido pasarnos a openser y tengo otro problema relacionado con 
> lo mismo. El escenario es el mismo. Todos los REGISTER e INVITE son 
> reenviados del openser al Applicattion Server, y este se los devuelve. 
> Si no realizo ningún cambio en los INVITE el ser los reencamina bien. 
> Pero cuando cambio la Request URI a la sipURI de otro softphone que esté 
> también registrado, el SER hace algo extraño. Por lo que he observado en 
> las trazas entra en un bucle infinito, como si se enviara el INVITE a sí 
> mismo. En el ethereal no salé nada hacia afuera. Y al final el SER acaba 
> devolviendo un 513 Message Too Big al Applicattion Server.
> Siento haberme alargado. El openser.cfg apenas lo he modificado, sólo he 
> metido un if para que todos los INVITE los reenvíe al Applicattion 
> Server, menos los que vienen con la nueva sipURI, que son los que tiene 
> que reencaminar. Os pego el openser.cfg.
> ¿Alguna idea?
> Un saludo.
>
>
>
>
> debug=2       # debug level (cmd line: -dddddddddd)
> fork=yes
> log_stderror=no    # (cmd line: -E)
> children=4
>
>
> disable_dns_blacklist=true
>
>
>
>
>
> # Uncomment these lines to enter debugging mode
> #fork=no
> #log_stderror=yes
> #
>
> port=5060
>
> # uncomment the following lines for TLS support
> #disable_tls = 0
> #listen = tls:your_IP:5061
> #tls_verify_server = 1
> #tls_verify_client = 1
> #tls_require_client_certificate = 0
> #tls_method = TLSv1
> #tls_certificate = "/etc/openser/tls/user/user-cert.pem"
> #tls_private_key = "/etc/openser/tls/user/user-privkey.pem"
> #tls_ca_list = "/etc/openser/tls/user/user-calist.pem"
>
>
>
> alias="flanders-bis.hi.inet:5060"
>
>
> # ------------------ 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"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
> loadmodule "xlog.so"
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> #loadmodule "auth.so"
> #loadmodule "auth_db.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- mi_fifo params --
>
> modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
>
> # -- usrloc params --
>
> 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)
>
> # -------------------------  request routing logic -------------------
>
> # main routing logic
>
> route{
>
>
> xlog("L_ERR", " ");
> xlog("L_ERR", " INICIAMOS PROCESADO ..............");
>
>     # 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 ) {
>         xlog("L_ERR", "PUES VA A SER DEMASIADO LARGO ..............");
>
>         sl_send_reply("513", "Message too big");
>         exit;
>     };
>
>     # 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();
>
>
>
> #    if(method=="REGISTER")
> #     {
> #        xlog("L_ERR", "uri = $ru  \n");
> #        save("location");
>         #log(1, myself);
> #        exit;   
> #    }
>
>
>     # subsequent messages withing a dialog should take the
>     # path determined by record-routing
>     if (loose_route()) {
>         # 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("tls:domain1.net");
>         #    exit;
>         #} else if(uri=~"@tls_domain2.net") {
>         #    t_relay("tls:domain2.net");
>         #    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("openser.org", "subscriber")) {
>             #    www_challenge("openser.org", "0");
>             #    exit;
>             #};
>
>             forward("10.95.42.92:5060");
>             save("location");
>             exit;
>         };
>
>
>         if(method=="INVITE")
>         {
>             if($ru=="sip:343 at flanders-bis.hi.inet")
>             {
>                 route(1);   
>                 exit;       
>             }   
>             else
>             {
>                 forward("10.95.42.92:5060");
>                 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");
>     };
>     route(1);
> }
>
>
> route[1] {
>     # send it out now; use stateful forwarding as it works reliably
>     # even for UDP2TCP
>
>     if (!t_relay()) {
>  
>         sl_reply_error();
>     };
>     exit;
> }
>
>
>
>
> _______________________________________________
> Users-es mailing list
> Users-es at lists.openser.org
> http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
>
>   





More information about the Users-es mailing list