Hi Klaus,
Thanks a lot! You are right! The behavior of the Lucent Gw is as you
said, and the problem was solved. Thanks again!
Jorge
El vie, 17-06-2005 a las 03:20, Klaus Darilion escribió:
Hi!
Maybe the Lucent GW is a strict router (RFC 2534). Strict routers will
put the next hop in the request URI, and the final destination into the
last Route: header.
Using loose_route should take care of this.
if (loose_route()) {
... do some authentication stuff ...
xlog("...loose_route() processed");
t_relay;
break;
}
regards,
klaus
Jorge Crichigno wrote:
> Hi all,
>
> I have a problem with in the following scenario:
>
> Lucent GW SER IPPhone
> IP: 1.2.3.4 IP:5.6.7.8 IP:8.9.5.5
>
> INVITE-->
> <-- 100
> INVITE-->
> <--100
> <--180
> <--180
> <--200
> <--200
> ACK-->(Request-Uri = sip:5.6.7.8:5060) <-- PROBLEM HERE
>
>
> The problem arises only with the Lucent Gateway, because it sends the
> ACK with the Request-Uri as showed above (Request-Uri has the IP and
> port of the SER). I also found the same problem with BYEs. I attach the
> ser.cfg at this mail.
>
> I think this is a bug of Lucent, because I expected that Request-Uri
> of the ACKs should equal to the contact uri of the 200 message sent by
> the ipphone. The same for BYEs. Could some one clarify me that?
>
> Thanks in advance !!!
>
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
>
> debug=5 # debug level (cmd line: -dddddddddd)
> fork=yes
> log_stderror=yes # (cmd line: -E)
>
>
> check_via=no # (cmd. line: -v)
> dns=no # (cmd. line: -r)
> rev_dns=no # (cmd. line: -R)
> port=5060
> children=20
> fifo="/tmp/ser_fifo"
> listen=5.6.7.8
> alias = "mydomain.com"
>
> # ---------------------------------------------------------------------------
> loadmodule "/usr/local/lib/ser/modules/mysql.so" # needed for
domain.so
> loadmodule "/usr/local/lib/ser/modules/registrar.so"
> loadmodule "/usr/local/lib/ser/modules/dbtext.so" # necesario para
domain.so
> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> loadmodule "/usr/local/lib/ser/modules/domain.so" # necesario para
mediaproxy.so (is_from_local)
> loadmodule "/usr/local/lib/ser/modules/mediaproxy.so"
>
> loadmodule "/usr/local/lib/ser/modules/rr.so"
> loadmodule "/usr/local/lib/ser/modules/sl.so" # stateless
> loadmodule "/usr/local/lib/ser/modules/tm.so" # statefull
> loadmodule "/usr/local/lib/ser/modules/acc.so"
> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/ser/modules/textops.so"
> loadmodule "/usr/local/lib/ser/modules/auth.so" # needed for
xml_socket
> loadmodule "/usr/local/lib/ser/modules/xml_socket.so" # our module
>
> # ---------------------------------------------------------------------------
> modparam("usrloc", "db_mode", 0)
> modparam("domain", "db_mode", 0)
> #modparam("domain", "db_url",
"mysql://serro:47serro11@216.55.240.66/ser")
> modparam("domain", "db_url",
"mysql://serro:47serro11@localhost/ser")
> #Default value is "mysql://serro:47serro11@localhost/ser"
> modparam("mediaproxy", "natping_interval", 60)
> # unix socket to send commands to proxy dispatcher
> modparam("mediaproxy", "mediaproxy_socket",
"/var/run/proxydispatcher.sock")
> modparam("registrar","nat_flag",2)
> modparam("rr", "enable_full_lr", 1)
> #modparam("rr", "enable_double_rr", 0)
> modparam("tm", "fr_timer", 50)
> modparam("tm", "fr_inv_timer", 50)
> # ---------------------------------------------------------------------------
>
> route{
>
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483","Too Many Hops");
> break;
> };
>
> if (msg:len >= max_len ) {
> sl_send_reply("513", "Message too big");
> break;
> };
>
> # NAT control
> if (client_nat_test("3")) {
> setflag(2);
> force_rport();
> fix_contact();
> };
>
> if (method=="REGISTER") {
> route(1);
> break;
> };
>
> if (method == "INVITE"){
> route(2);
> break;
> };
>
> if (method == "BYE"){
> route(3);
> break;
> };
>
> route(4);
>
> }
>
>
>
#--------------------------------------------------------------------------------------
> # Aqui se procesan los REGISTERs - REGISTERs here
>
#--------------------------------------------------------------------------------------
> route[1]{
>
> if (xml_www_authorize_register("")) { # challenge -
response auth
> www_challenge("", "0");
> break;
> };
> consume_credentials();
> sl_send_reply("200", "Ok");
> }
>
>
#--------------------------------------------------------------------------------------
> # Aqui se procesan los INVITEs - INVITEs here
>
#--------------------------------------------------------------------------------------
> route[2]{
> t_on_reply("1");
> sl_send_reply("100"," Trying");
>
> if (t_lookup_request()){
> log(1, "route[2]: Transaction already in progress\n");
> break;
> };
>
>
> if (!xml_www_authorize_invite("")) { # chanllenge - response
auth - load msg->new_uri
> www_challenge("", "0");
> break;
> };
> consume_credentials();
>
> record_route();
> # use_media_proxy();
> log(1, "routing the invite...\n");
> if (!t_relay()){
> sl_reply_error();
> # end_media_session();
> break;
> };
>
>
> }
>
>
#--------------------------------------------------------------------------------------
> # Aqui se procesan los BYEs - BYEs here
>
#--------------------------------------------------------------------------------------
> route[3]{
> t_on_reply("1"); # p/ q en los reply tb
cambiemos contact
>
> if (t_lookup_request()){
> sl_send_reply("100", "Trying");
> log(1, "route[3]: Transaction already in progress\n");
> break;
> };
> #end_media_session();
> xml_acc(); # accounting
> if (!t_relay()) {
> sl_reply_error();
> break;
> };
> }
>
#--------------------------------------------------------------------------------------
> # Aqui se procesan los metodos que no son INVITEs ni BYEs, i.e., ACKs &
CANCELs
>
#--------------------------------------------------------------------------------------
> route[4]{
>
> xml_acc();
>
> if (!t_relay()) {
>
> sl_reply_error();
> break;
> };
>
> }
>
> # Cuando hay NAT, en la respuesta 200 (OK) del telefono destino se debe cambiar el
campo
> # contact este uri (el del campo contact) sera usado en las siguientes
transacciones
>
#--------------------------------------------------------------------------------------
> # Aqui se procesan los replies: 1xx, 200, 4xx, etc -
>
#--------------------------------------------------------------------------------------
>
> onreply_route[1] {
>
> xml_acc();
>
> if (status=~"(183)|(2[0-9][0-9])") {
> if (client_nat_test("1")) {
> fix_contact();
> };
> };
>
>
> }
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org
>
http://lists.iptel.org/mailman/listinfo/serusers