[OpenSIPS-Users] 302 handling

Bogdan-Andrei Iancu bogdan at voice-system.ro
Thu Aug 21 12:07:05 CEST 2008


Hi Alex,

If you have multiple branches that requires different treatment, you 
must apply this treatment (read changes) in branch route to be sure that 
only the current branch.

So, if you enable rtpproxy for the first branch of a call, but you 
suspect that the call may be diverted to a location that does not 
require rtpproxy, that call force_rtpproxy() in branch route and not in 
request route.

All changes you do in request route will be inherited by all branches. 
So if you do force_rtpproxy() in request route, than you should stick 
with rtpproxy in all branches, whatever you need it or not.

Regards,
Bogdan

Alex G wrote:
> correct..  
>
> first branch originates on pstn -> openser -> asterisk -> openser-> 
> phone(sends diversion) -> |LOGIC REQUIRED| openser(change diversion 
> ip) -> pstn
>
> where LOGIC REQUIRED exists the following happens
>
> asterisk is waiting for the phone to reply on it's invite
> i grab the reply to the invite (302) in the onreply_route. I set the 
> contact(which is the diversion contact) and set it to an avp
> the packet then comes to the failure route where something strange 
> persists.. the contact,from, and to addresses are all the same and are 
> the uri of the phone providing the redirect
>
> here i try to route the request out to the pstn
> my gateway requires me to place the diversion contact in the rpid and 
> then set a diversion header with the did they provide which is usually 
> required to be in the rpid to make calls, but in the case of a 
> diversion must be placed in the diversion header
> once i do set these headers i set another avp as a flag for the 
> rerouting to the diversion
> i then invoke t_relay
>
> the packet then moves into the branch_route
> here I look for the avp flag from failure_route, if it exists I 
> rewrite the port to the pstn gateway and off goes the packet
>
> so now i have this messy bridge through asterisk (i have to bridge 
> through it to maintain the media path for call features) that allows 
> me to connect the call, the only thing I can't seem to get to work is 
> the audio
>
> should I be looking to still push this through rtp proxy at this 
> point? I'm pretty sure that it is in the packets as the original 
> request that went to the phone is behind nat and on the invite I'm 
> sure rtp proxy is invoked.
>
> should i just unforce it before i t_relay? or do i need to maintain it 
> for the path through asterisk?
>
> this is where it all gets very cloudy lol
>
> any pointers are always appreciated :)
>
>
>
>
>
> On Wed, Aug 20, 2008 at 8:14 AM, Bogdan-Andrei Iancu 
> <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>
>     So, the first branch goes behind a NAT and gets redirected; the
>     second branch goes to PSTN and has the SDP from the first branch,
>     right ?
>
>     get_redirects() works only in failure route.
>
>
>     Regards,
>     Bogdan
>
>     Alex G wrote:
>
>         I did some more testing with this yesterday. The phone that is
>         redirecting indeed is behind nat, but my pstn gateway is all
>         open net. What I did find was that opensips was rediricting
>         sdp to the phone still and not the gateway. Why there is still
>         rtp traffic in asterisk is still a mystery, but I think with
>         the right code I can also redirect the sdp out to the pstn as
>         well.
>
>         Will update you all on how this goes as I don't anticipate to
>         start this scripting challenge till late in the week.
>
>         A question that comes up is does the get_redirect function
>         actually work in the failure route or am I misplacing it and
>         it should be somewhere else?
>
>         Thanks,
>
>         Alex
>
>         On Tue, Aug 19, 2008 at 6:30 AM, Bogdan-Andrei Iancu
>         <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>
>         <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro>>> wrote:
>
>            Hi Alex,
>
>            Glad you solved the problem - at least at signalling level :)
>
>            Do you have NAT involved ? Have you checked the SDP (Ip and
>         port)
>            in both request and reply to see if where the problem comes?
>
>            Regards,
>            Bogdan
>
>            Alex G wrote:
>
>                well i did make some headway on this, unfortunately i
>         had to
>                get tricky with it.
>
>                Even with the get redirects, it was still not placing the
>                correct redirect in there. As a matter of fact,  it
>         seems like
>                the function was not working at all in the
>         failure_route. My
>                solution involved setting an avp in the reply route becuase
>                both the source and destination of the paceket were the
>         same
>                when it was in the failure route.  So in on reply i set
>         an avp
>                that then if was true in the branch route just rewrote the
>                host port. So great I was able to make the call path divert
>                but when the 2 pstn endpoints actually link, there is no
>                sound. There seems to be rtp when i look in asterisk's cli,
>                but neither side is giving me audio  :(
>
>                In the branch route, i tried with and without forecrtp
>         proxy,
>                but no dice....
>
>                anyone have an idea as to what might be going on?
>
>                as always any input is greatly appreciated :)
>
>
>                On Sun, Aug 17, 2008 at 2:16 PM, Bogdan-Andrei Iancu
>                <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>
>         <mailto:bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>>
>                <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro>
>                <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro>>>> wrote:
>
>                   Hi Alex,
>
>                   Actually, after the get_redirects(), you should not do a
>                   rewiteXXXX() - just to t_relay(); the
>         get_redirects() already
>                   populates the new branch with all the information.
>
>                   Regards,
>                   Bogdan
>
>
>                   Ovidiu Sas wrote:
>
>                       If you want to rewrite the port, you need to use the
>                following
>                       syntax:
>                       rewritehostport("XXX.XXX.XXX.XXX:ZZZZZ");
>                       where ZZZZZ is the new port.
>
>
>                       Regards,
>                       Ovidiu Sas
>
>                       On Wed, Aug 13, 2008 at 4:54 PM, Alex G
>                       <greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com> <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>>
>                <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>
>
>                <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>>>> wrote:
>                                         unfortunately the solution is
>         a bit vague for what I'm
>                           trying to do...
>
>
>                           in the 302 packet the contact for redirect
>         is sip
>                           xyz at abc.abc.abc.abc
>
>                           failure_route[1] {
>                              if (t_check_status("302")) {
>                              xlog("in redirect failure $fu");
>                               get_redirects("*:1","redirect");
>                                rewritehostport("XXX.XXX.XXX.XXX");
>                               t_relay();
>                              }
>
>                           this should take the contact address and rewrite
>                the host
>                           port for it
>                           relaying it to the new location right?
>         should be an
>                           immediate invite to
>                           abc at XXX.XXX.XXX.XXX
>
>                           unfortunately it doesn't rewrite the host
>         port. It
>                merely
>                           relays directly to
>                           the contact in the 302 packet
>         xyz at abc.abc.abc.abc
>
>                           any ideas would be welcome :)
>
>                           thanks
>
>                           alex
>
>                           On Wed, Aug 13, 2008 at 2:38 PM, Ovidiu Sas
>                           <osas at voipembedded.com
>         <mailto:osas at voipembedded.com>
>                <mailto:osas at voipembedded.com
>         <mailto:osas at voipembedded.com>> <mailto:osas at voipembedded.com
>         <mailto:osas at voipembedded.com>
>
>                <mailto:osas at voipembedded.com
>         <mailto:osas at voipembedded.com>>>> wrote:
>                                                   It is all here:
>                                    
>         http://www.opensips.org/html/uac_redirect.html#id2519995
>
>                               Regards,
>                               Ovidiu Sas
>
>                               On Wed, Aug 13, 2008 at 2:03 PM, Alex G
>                               <greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>
>                <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>>
>                               <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>
>
>                <mailto:greekman0000 at gmail.com
>         <mailto:greekman0000 at gmail.com>>>> wrote:
>                                                             I know
>         there was some stuff about how to handle
>                                   302s and send forward a
>                                   new
>                                   invite to the diversion contact on
>         the old
>                mailing
>                                   list archives, but
>                                   they
>                                   are all gone now :(
>
>                                   wondering if anyone can help me with
>         this.....
>
>                                   opensips -> ua -> moved -> opensips
>         invite
>                contact
>                                   from diversion
>
>
>
>                                   basically opensips makes an invite
>         to locally
>                                   registered uac, the uac
>                                   redirects to an external pstn number
>                XXX-XXX-XXXX,
>                                   opensips then needs
>                                   to
>                                   handle the 302 and generate an invite to
>                XXX-XXX-XXXX
>
>
>                                   any help would be most appreciated
>
>                                   thanks Alex
>
>                                  
>         _______________________________________________
>                                   Users mailing list
>                                   Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>                <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>                                   <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>                <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>
>                                        
>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
>                                                            
>                       _______________________________________________
>                       Users mailing list
>                       Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>                <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>                <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>                <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>
>                      
>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>                      
>
>
>
>
>




More information about the Users mailing list