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

David Vicente dvf231 at tid.es
Fri Feb 1 15:29:59 CET 2008


Muchas gracias.
Con lo que has puesto me funciona, pero no entiendo el por qué. Lo que yo entiendo en el código que tenía antes es que si llegaba con la sipURI que tengo marcada lo enrutara normal (route(1)), y sin embargo se lo enviaba a sí mismo el SER. No entiendo por qué pasaba eso. 
Un saludo y gracias.



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



Ramona escribió:
> 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
>>
>>   
>>     
>
>
> _______________________________________________
> 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