[Kamailio-Users] 30x Redirect / Forward, even questions

Daniel-Constantin Mierla miconda at gmail.com
Wed Jan 13 12:44:47 CET 2010


Hello,

On 1/11/10 1:56 PM, Samuel Muller wrote:
> Hello all,
>
> I've questions 'bout the redirect/forward with 30x requests.
>
> Actually, it does not work, it seems the uac redirect module doesn' t 
> use the new contact for the new invite.
>
> simple schema : pstn gw -> kamailio -> linksys -> call forward 
> unconditionnal to another pstn number -> kamailio -> gw pstn
>
> the 302 as seen with ngrep tool :
>
> #SIP/2.0 302 Moved Temporarily.
> #To: <sip:B at sip_proxy;user=phone>;tag=91515579fff6b8d1i0.
> #From: <sip:A at pstn_gw1;user=phone>;tag=16627-UI-00020cf3-54eea92c4.
> #Call-ID: 16627-RO-00020cf2-4186e9762 at pstn_gw1.
> #CSeq: 81990 INVITE.
> #Via: SIP/2.0/UDP sip_proxy;branch=z9hG4bK0f0c.22989b87.1.
> #Via: SIP/2.0/UDP 
> pstn_gw1:5060;rport=5060;received=ip_pstn_gw1;branch=z9hG4bK-25EA-243F3.
> #Record-Route: 
> <sip:sip_proxy;lr=on;ftag=16627-UI-00020cf3-54eea92c4;did=f65.bcc44f06>.
> #Contact: <sip:C at sip_proxy>.
> #Diversion: "B" <sip:B at sip_proxy>;reason=unconditional.
> #Server: Linksys/SPA942-6.1.3(a).
>
> DBG:uac_redirect:shmcontact2dset: adding contact <sip:C at sip_proxy>
> dest set : Contact: sip:B at ip_B, <sip:C at sip_proxy>;q=0.01
> contact $ct: <sip:pstn_gw1:5060>
>
> the second pstn gateway received a request to B, and not C (so it 
> creates a loop through pstn ...).
>
> in my config :
>
> loadmodule "uac.so"
> modparam("uac", "rr_store_param", "vsf")
> modparam("uac", "from_restore_mode", "auto")
>
> loadmodule "uac_redirect.so"
> modparam("uac_redirect", "default_filter", "accept")
> modparam("uac_redirect","bflags", 1)
>
> loadmodule "diversion.so"
>
> failure_route[2]
> {
>         setdebug(4);
>
>         if (t_check_status("301|302"))
>         {
>                 route(26)     # acc fwd
>                 $avp(s:acc_status) = "cfu";
>
>                 if (!get_redirects("2:1"))
>                 {
>                         xlog("L_NOTICE", "failed to extract contact 
> info from 30x header");
>                         route(10);      # stop rtp
>                         t_reply("480", "Temporarily Unavailable");
>                         exit;
>                 }
>
>                 # flag 3xx status, open a new branch and back to find 
> the new callee
>                 setflag(28);
>                 append_branch();
>                 t_on_branch("1");
>                 route(3);     # search the new callee
>                 setdebug();
>                 exit;
>         }
>
>         t_on_branch("1");
>         setdebug();
>         route(3);       # find callee
>         route(12);      # local outbound
>         route(10);      # stop rtp
> }
>
> I'm using lcr module to route calls, kamailio v. 1.5.3.
>
> I've another question, is the 30x always considered as a failure_route ?
>
> Any help and/or explanations about the tricks would be really 
> appreciated ... thanks,
as I can see from you comments, in failure_route you get the contacts 
from 30x and append branch then call route(3) which is find callee -- 
what is that, is it appending another branch? Practically after append 
branch you should just do relay.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
* http://www.asipto.com/





More information about the sr-users mailing list