[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