[Fwd: Re: [Users] newbie - have openser handle 302s]

Klaus Darilion klaus.mailinglists at pernau.at
Tue Jul 25 18:16:06 CEST 2006


forwarded to list

-------- Original Message --------
Subject: Re: [Users] newbie - have openser handle 302s
Date: Tue, 25 Jul 2006 08:48:38 -0700 (PDT)
From: Eliezer Ramm <lazerramm at yahoo.com>
To: Klaus Darilion <klaus.mailinglists at pernau.at>

Hi,

thanx for taking the time to answer.

the scenerio i have is like this

openser sends all numbers that are not registerd to it
to a special GW. the special GW then responds w/ a 302
redirect providing the correct route info for that
number. i need openser to take the info from the 302
and resend the invite to the address in the 302
(contatct field).

i am using a cfg from the uac_redirect sample to make
it as simple as possible.

w/ openser debug=7 i see the following :

6(22001) SIP Request:
  6(22001)  method:  <INVITE>
  6(22001)  uri:     <sip:2127896543 at 212.25.92.160>
  6(22001)  version: <SIP/2.0>
  6(22001) parse_headers: flags=2
  6(22001) Found param type 235, <rport> = <n/a>;
state=6
  6(22001) Found param type 232, <branch> =
<z9hG4bK743485B539502E0CEF68B9C9AD6C2DFD>; state=16
  6(22001) end of header reached, state=5
  6(22001) parse_headers: Via found, flags=2
  6(22001) parse_headers: this is the first via
  6(22001) After parse_msg...
  6(22001) preparing to run routing scripts...
  6(22001) grep_sock_info - checking if host==us: 13==9
&&  [212.25.92.160] == [127.0.0.1]
  6(22001) grep_sock_info - checking if port 6666
matches port 5060
  6(22001) grep_sock_info - checking if host==us:
13==13 &&  [212.25.92.160] == [212.25.92.160]
  6(22001) grep_sock_info - checking if port 6666
matches port 5060
  6(22001) grep_sock_info - checking if host==us: 13==9
&&  [212.25.92.160] == [127.0.0.1]
  6(22001) grep_sock_info - checking if port 6666
matches port 5060
  6(22001) grep_sock_info - checking if host==us:
13==13 &&  [212.25.92.160] == [212.25.92.160]
  6(22001) grep_sock_info - checking if port 6666
matches port 5060
  6(22001) lookup(): '2127896543' Not found in usrloc
  6(22001) DEBUG: t_newtran: msg id=1 , global msg id=0
, T on entrance=0xffffffff
  6(22001) parse_headers: flags=ffffffffffffffff
  6(22001) DEBUG:parse_to:end of header reached,
state=9
  6(22001) DEBUG: get_hdr_field: <To> [32];
uri=[sip:2127896543 at 212.25.92.160]
  6(22001) DEBUG: to body
[<sip:2127896543 at 212.25.92.160>
]
  6(22001) get_hdr_field: cseq <CSeq>: <39892> <INVITE>
  6(22001) DEBUG: get_hdr_body : content_length=293
  6(22001) found end of header
  6(22001) parse_headers: flags=78
  6(22001) t_lookup_request: start searching:
hash=12315, isACK=0
  6(22001) DEBUG: RFC3261 transaction matching failed
  6(22001) DEBUG: t_lookup_request: no transaction
found
  6(22001) DEBUG: add_param: tag=1071031469
  6(22001) DEBUG:parse_to:end of header reached,
state=29
  6(22001) DEBUG:tm:t_relay: new INVITE
  6(22001) parse_headers: flags=ffffffffffffffff
  6(22001) check_via_address(172.16.100.101,
172.16.100.101, 0)
  6(22001) WARNING:vqm_resize: resize(0) called
  6(22001) DEBUG:tm:_reply_light: reply sent out.
buf=0x8109f18: SIP/2.0 1..., shmem=0xb57725e0: SIP/2.0
1
  6(22001) DEBUG:tm:_reply_light: finished
  6(22001) DEBUG: mk_proxy: doing DNS lookup...
  6(22001) check_via_address(172.16.100.101,
172.16.100.101, 0)
  6(22001) DEBUG: add_to_tail_of_timer[4]: 0xb577133c
  6(22001) DEBUG: add_to_tail_of_timer[0]: 0xb577134c
  6(22001) SER: new transaction fwd'ed
  6(22001) DEBUG:destroy_avp_list: destroying list
(nil)
  6(22001) receive_msg: cleaning up
  7(22002) SIP Reply  (status):
  7(22002)  version: <SIP/2.0>
  7(22002)  status:  <302>
  7(22002)  reason:  <redirect>
  7(22002) parse_headers: flags=2
  7(22002) get_hdr_field: cseq <CSeq>: <39892> <INVITE>
  7(22002) DEBUG: add_param: tag=1
  7(22002) DEBUG:parse_to:end of header reached,
state=29
  7(22002) DEBUG: get_hdr_field: <To> [38];
uri=[sip:2127896543 at 212.25.92.160]
  7(22002) DEBUG: to body
[<sip:2127896543 at 212.25.92.160>]
  7(22002) Found param type 235, <rport> = <5060>;
state=6
  7(22002) Found param type 232, <branch> =
<z9hG4bK743485B539502E0CEF68B9C9AD6C2DFD>; state=6
  7(22002) Found param type 235, <rport> = <6666>;
state=6
  7(22002) Found param type 234, <received> =
<212.25.92.160>; state=16
  7(22002) end of header reached, state=5
  7(22002) parse_headers: Via found, flags=2
  7(22002) parse_headers: this is the first via
  7(22002) After parse_msg...
  7(22002) forward_reply: found module tm, passing
reply to it
  7(22002) DEBUG: t_check: msg id=1 global id=0 T
start=0xffffffff
  7(22002) parse_headers: flags=22
  7(22002) parse_headers: flags=8
  7(22002) DEBUG: t_reply_matching: failure to match a
transaction
  7(22002) DEBUG: t_check: msg id=1 global id=1 T
end=(nil)
  7(22002) parse_headers: flags=4
  7(22002) DEBUG: get_hdr_body : content_length=0
  7(22002) found end of header
  7(22002) ERROR: forward_reply: no 2nd via found in
reply
  7(22002) DEBUG:destroy_avp_list: destroying list
(nil)
  7(22002) receive_msg: cleaning up
10(22005) DEBUG: timer routine:4,tl=0xb577133c
next=(nil)
10(22005) DEBUG: retransmission_handler : request
resending (t=0xb5771220, INVITE si ... )
10(22005) DEBUG: add_to_tail_of_timer[5]: 0xb577133c
10(22005) DEBUG: retransmission_handler : done
  8(22003) SIP Reply  (status):

the cfg is as follows:

route{
         if (uri==myself) {

                 if (method=="REGISTER") {
                         save("location");
                         exit;
                 };

                 if (!lookup("location")) {
                 #       sl_send_reply("404", "Not
Found");
         #               forward( 212.25.94.16, 7777);
rewritehostport ("212.25.94.16:7777");
  t_relay();
                         exit;
                 };

         }
         else {
                 # just do redirect
                         t_on_failure("1");
                 }

                 if (!t_relay()) {
                         sl_reply_error();
                 };
         }

                 failure_route[1] {
                         get_redirects("*");
                         t_relay();
                 }

thanx again for your time.

eliezer


--- Klaus Darilion <klaus.mailinglists at pernau.at>
wrote:

> Take a look at the README of the uac_redirect module
> 
> http://openser.org/docs/
> 
> regards
> klaus
> 
> Eliezer Ramm wrote:
> > Hi,
> > 
> > i have a proxy that sends a 302 to my openser.
> > 
> > what do i need to do to have the openser ack the
> 302
> > and send a new invite to the address recieved in
> the
> > 302 ? where would i insert it in my cfg file ?
> > 
> > thanx !!
> > 
> > # ------------------ module loading
> > ----------------------------------
> > 
> > # Uncomment this if you want to use SQL database
> > #loadmodule "/usr/lib/openser/modules/mysql.so"
> > 
> > loadmodule
> "/usr/local/openser-1.0.1/modules/sl/sl.so"
> > loadmodule
> "/usr/local/openser-1.0.1/modules/tm/tm.so"
> > loadmodule
> "/usr/local/openser-1.0.1/modules/rr/rr.so"
> > loadmodule
> >
> "/usr/local/openser-1.0.1/modules/maxfwd/maxfwd.so"
> > loadmodule
> >
> "/usr/local/openser-1.0.1/modules/usrloc/usrloc.so"
> > loadmodule
> >
>
"/usr/local/openser-1.0.1/modules/registrar/registrar.so"
> > loadmodule
> >
>
"/usr/local/openser-1.0.1/modules/textops/textops.so"
> > loadmodule
> > "/usr/local/openser-1.0.1/modules/enum/enum.so"
> > loadmodule
> > "/usr/local/openser-1.0.1/modules/xlog/xlog.so"
> > loadmodule
> >
>
"/usr/local/openser-1.0.1/modules/uac_redirect/uac_redirect.so"
> > 
> > # Uncomment this if you want digest authentication
> > # mysql.so must be loaded !
> > #loadmodule "/usr/lib/openser/modules/auth.so"
> > #loadmodule "/usr/lib/openser/modules/auth_db.so"
> > 
> > # ----------------- setting module-specific
> parameters
> > ---------------
> >  modparam("usrloc", "db_mode", 0)
> >  modparam("rr", "enable_full_lr", 1)
> > 
> > route {
> > 
> > 
> >   #
> >
>
------------------------------------------------------------------------
> >   # Sanity Check Section
> >   #
> >
>
------------------------------------------------------------------------
> > 
> > 
> > 
> >   if (!mf_process_maxfwd_header("10")) {
> >     sl_send_reply("483", "Too Many Hops");
> >     exit;
> >   };
> > 
> > 
> > 
> >   if (msg:len > max_len) {
> >     sl_send_reply("513", "Message Overflow");
> >     exit;
> >   };
> > 
> >   #
> >
>
------------------------------------------------------------------------
> > 
> >   #
> >
>
------------------------------------------------------------------------
> >   if (method!="REGISTER") {
> >     record_route();
> >   };
> > 
> >   #
> >
>
------------------------------------------------------------------------
> >   # Loose Route Section
> >   #
> >
>
------------------------------------------------------------------------
> >   if (loose_route()) {
> >     route(1);
> >     exit;
> >   };
> > 
> >  #
> >
>
------------------------------------------------------------------------
> >   # Call Type Processing Section
> >   #
> >
>
------------------------------------------------------------------------
> > 
> > 
> >   if (uri!=myself) {
> >     route(1);
> >     exit;
> >   };
> > 
> > #
> > 
> > if (method=="ACK") {
> >     route(1);
> >     exit;
> >   }
> > 
> >  if (method=="REGISTER") {
> >     route(2);
> >     exit;
> >   };
> > 
> > 
> > 
> > lookup("aliases");
> >   if (uri!=myself) {
> >     route(1);
> >     exit;
> >   };
> > 
> > 
> >   if (!lookup("location")) {
> >     #sl_send_reply("404", "User Not Found");
> > forward( 10.10.10.10, 5060);
> > 
> >     exit;
> >   };
> > 
> >   route(1);
> >  }
> > 
> > route[1] {
> >   #
> >
>
------------------------------------------------------------------------
> >     # Default Message Handler
> >   #
> >
>
------------------------------------------------------------------------
> >   if (!t_relay()) {
> >     sl_reply_error();
> >   };
> >   }
> > 
> > route[2] {
> >   #
> >
>
------------------------------------------------------------------------
> > 
> >   #
> >
>
------------------------------------------------------------------------
> > # simple no-auth registration
> > 
> >  if   (save("location")) {
> >        sl_send_reply("200","OK");
> > };
> > 
> >   if (!save("location")) {
> >     sl_reply_error();
> >   };
> > }
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around 
> > http://mail.yahoo.com 
> > 
> > _______________________________________________
> > Users mailing list
> > Users at openser.org
> > http://openser.org/cgi-bin/mailman/listinfo/users
> 
> 




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com




More information about the Users mailing list