[Serusers] Turn 3xx into new Invite

Daniel-Constantin Mierla Daniel-Constantin.Mierla at fokus.fraunhofer.de
Tue Feb 22 23:55:25 CET 2005


you must move the processing to a failure_route if you want to be able 
to send an INVITE request downstream. Unfortunately you don't have 
access to the reply message in a failure_route in order to extract the 
redirect addresses and create new branches. You will need to do some 
development for that.

Daniel


On 02/22/05 20:02, Evan Borgstrom wrote:

>You are missing the t_relay() statement. It should be something like:
>
>if (t_check_status("30[12]")) {
>	xlog("L_NOTICE", "Got a 301 or 302 redirect");
>	append_branch();
>	t_relay();
>}
>
>I haven't tested this so I don't know if the append branch will put the
>RURI from the 301/302 message in there. It might be required to use an
>exec_dset in there to rewrite the recipient before you append_branch and
>t_relay.
>
>-Evan
>
>On Tue, 2005-02-22 at 13:56 -0500, Paul Belanger wrote:
>  
>
>>Just got a reply from a fellow SER user to add append_branch() fuction, but I still cannot see the INVITE from my SER.
>>
>>onreply_route[1] {
>>       xlog("L_NOTICE", "Reply status %rs: Reason %rr\n");
>>       if (t_check_status("302")) {
>>               xlog("L_NOTICE", "We got a 302!!!!!\n");
>>		   ## Used to send INVITE message? ##
>>	 	   append_branch();
>>       };
>>}
>>-----Original Message-----
>>From: Martin Koenig [mailto:martin.koenig at toplink-plannet.de] 
>>Sent: Tuesday, February 22, 2005 11:33 AM
>>To: Paul Belanger
>>Cc: serusers at lists.iptel.org
>>Subject: Re: [Serusers] Turn 3xx into new Invite
>>
>>
>>Hello,
>>
>>see: http://lists.iptel.org/pipermail/serusers/2004-December/014107.html
>>
>>looks like Juha Heinänen has a patch for this available somewhere, maybe 
>>he would like to share this?
>>
>>Regards,
>>Martin
>>
>>Paul Belanger schrieb:
>>
>>    
>>
>>>Ya, I have looked at that one, but I can see how it sends out the 
>>>INVITE.
>>>
>>>-----Original Message-----
>>>From: Martin Koenig [mailto:martin.koenig at toplink-plannet.de]
>>>Sent: Tuesday, February 22, 2005 11:09 AM
>>>To: Paul Belanger
>>>Cc: serusers at lists.iptel.org
>>>Subject: Re: [Serusers] Turn 3xx into new Invite
>>>
>>>
>>>Hello,
>>>
>>>there is this one so far:
>>>
>>>http://lists.iptel.org/pipermail/serusers/2004-August/010977.html
>>>
>>>Didn't really help...
>>>
>>>Regards,
>>>Martin
>>>
>>>Paul Belanger schrieb:
>>>
>>> 
>>>
>>>      
>>>
>>>>Rumor has it yes, but I have not been successful.  I posted a question
>>>>last week, and was told to search the archives.  I did, but not much 
>>>>came up!
>>>>
>>>>http://www.google.ca/search?hl=en&q=302+site%3Amail.iptel.org&btnG=Goo
>>>>g
>>>>le+Search&meta=
>>>>
>>>>I think I'm on the right track, but don't have time today to play with
>>>>it.  Here is what I got so far:
>>>>
>>>>#
>>>># $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
>>>>#
>>>># simple quick-start config script
>>>>#
>>>>
>>>># ----------- global configuration parameters ------------------------
>>>>
>>>>#debug=3         # debug level (cmd line: -dddddddddd)
>>>>#fork=yes
>>>>#log_stderror=no        # (cmd line: -E)
>>>>
>>>>debug=3
>>>>fork=no
>>>>log_stderror=yes
>>>>
>>>>check_via=no    # (cmd. line: -v)
>>>>dns=no           # (cmd. line: -r)
>>>>rev_dns=no      # (cmd. line: -R)
>>>>#port=5060
>>>>#children=4
>>>>fifo="/tmp/ser_fifo"
>>>>
>>>># ------------------ module loading ----------------------------------
>>>>
>>>># Uncomment this if you want to use SQL database
>>>>#loadmodule "/usr/local/lib/ser/modules/mysql.so"
>>>>
>>>>loadmodule "/usr/local/lib/ser/modules/sl.so"
>>>>loadmodule "/usr/local/lib/ser/modules/tm.so"
>>>>loadmodule "/usr/local/lib/ser/modules/rr.so"
>>>>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
>>>>loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>>>>loadmodule "/usr/local/lib/ser/modules/registrar.so"
>>>>loadmodule "/usr/local/lib/ser/modules/xlog.so"
>>>>
>>>># Uncomment this if you want digest authentication
>>>># mysql.so must be loaded !
>>>>#loadmodule "/usr/local/lib/ser/modules/auth.so"
>>>>#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>>>>
>>>># ----------------- setting module-specific parameters ---------------
>>>>
>>>># -- 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)
>>>>
>>>>modparam("tm", "fr_inv_timer", 15 )
>>>>modparam("tm", "fr_timer", 10 )
>>>>
>>>># -------------------------  request routing logic -------------------
>>>>
>>>># main routing logic
>>>>
>>>>route{
>>>>
>>>>      # 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");
>>>>              break;
>>>>      };
>>>>      if ( msg:len > max_len ) {
>>>>              sl_send_reply("513", "Message too big");
>>>>              break;
>>>>      };
>>>>
>>>>      # 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
>>>>      record_route();
>>>>      # loose-route processing
>>>>      if (loose_route()) {
>>>>              t_relay();
>>>>              break;
>>>>      };
>>>>
>>>>      # 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") {
>>>>                      save("location");
>>>>                      break;
>>>>              };
>>>>      };
>>>>
>>>>
>>>>      if (method=="INVITE") {
>>>>              rewritehostport("216.143.130.70:5060");
>>>>              t_on_reply("1");
>>>>              t_on_failure("1");
>>>>              t_relay();
>>>>              break;
>>>>      }
>>>>
>>>>}
>>>>
>>>>onreply_route[1] {
>>>>      xlog("L_NOTICE", "Reply status %rs: Reason %rr\n");
>>>>      if (t_check_status("302")) {
>>>>              xlog("L_NOTICE", "We got a 302!!!!!\n");
>>>>	 	    ## ADD CODE TO SEND OUT INVITE!! ###
>>>>      };
>>>>}
>>>>
>>>>failure_route[1] {
>>>>      xlog("L_NOTICE", "Failure status %rs: Reason %rr\n"); }
>>>>
>>>>Let me know if you find any information.
>>>>
>>>>Paul
>>>>
>>>>-----Original Message-----
>>>>From: serusers-bounces at iptel.org [mailto:serusers-bounces at lists.iptel.org] 
>>>>On
>>>>Behalf Of Martin Koenig
>>>>Sent: Tuesday, February 22, 2005 11:00 AM
>>>>To: serusers at lists.iptel.org
>>>>Subject: [Serusers] Turn 3xx into new Invite
>>>>
>>>>
>>>>Hello,
>>>>
>>>>is it possible to take 3xx-responses in a reply_route and turn them
>>>>into
>>>>a new INVITE on Ser using append_branch or simliar?
>>>>
>>>>Regards,
>>>>Martin
>>>>
>>>>_______________________________________________
>>>>Serusers mailing list
>>>>serusers at lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
>>>>
>>>>
>>>>
>>>>   
>>>>
>>>>        
>>>>
>>> 
>>>
>>>      
>>>
>>_______________________________________________
>>Serusers mailing list
>>serusers at lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>>    
>>
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>
>  
>




More information about the sr-users mailing list