[Fwd: Re: [Users] newbie - have openser handle 302s]
Daniel-Constantin Mierla
daniel at voice-system.ro
Wed Jul 26 11:07:04 CEST 2006
The network trace will help in this case. Seems that the reply coming
from GW has only one Via header, while all replies should have at least
2 Via headers if the request was not initiated by OpenSER.
Cheers,
Daniel
On 07/25/06 19:16, Klaus Darilion wrote:
> 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
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>
More information about the sr-users
mailing list