[OpenSIPS-Users] Problem with mediaproxy/engage_media_proxy with branches to same endpoint
    Saúl Ibarra Corretgé 
    saul at ag-projects.com
       
    Tue Mar  9 17:40:25 CET 2010
    
    
  
Hi Henk,
On 7/3/10 12:37 AM, Henk Hesselink wrote:
> We're running up against a problem where engage_media_proxy seems to
> handle multiple branches to the same endpoint incorrectly.  We've been
> getting sporadic cases of no audio and we can now reproduce it.  This
> is the simplest setup where it happens:
>
>               R
>               |
>       A ----- P ----- D ----- T
>                       |
>                       M
>
> A = Asterisk
> P = proxy (OpenSIPS)
> R = registrar (OpenSIPS)
> D = dispatcher (OpenSIPS)
> M = Mediaproxy
> T = phone
>
> What happens is:
>
> 1. the phone is unplugged (so can't unregister)
> 2. the phone is plugged in again and registers - there are now 2 entries
>      in the location table until the old registration expires
> 3. a call is made from Asterisk to the phone
> 4. the lookup() in the proxy results in 2 branches
> 5. both INVITE branches are sent to the dispatcher
> 6. both result in a call to engage_media_proxy()
> 7. both INVITE branches are forwarded to the phone
> 8. the phone responds to one branch with
>        a. "482 Loop Detected"
>      and the other with
>        b. "180 Ringing" and then "200 OK" with an SDP payload
>
> If the dispatcher receives the 482 response before the 180/200 then the
> SDP payload in the OK is for a different (new) mediaproxy session and we
> get no audio.  What it looks like is happening is that the 482 response
> causes the original mediaproxy session for all branches to terminate.
>
> This doesn't seem correct behaviour to us, or is it correct and should
> we be handling it in one of the configs?  We currently have a workaround
> where we regularly flush old duplicate registrations, but it seems like
> that shouldn't be necessary.
I may need some confirmation on this from Bogdan, but I think your 
problem here has to do with the actual lack of support for early dialogs 
in the dialog module IIRC.
There was a long thread discussing this: 
http://www.openser.org/pipermail/devel/2009-August/003806.html but I'n 
not sure of what got finally implemented or if it was left for the 2.0 
version.
If I'm not mistaken, then this is a situation that currently we can't 
deal with.
In order to solve it, you may use the  separate functions for doing the 
nat traversal: use_media_proxy and end_media_session. Those functions 
don't use the dialog module, so are not affected by this issue.
Kind regards,
-- 
Saúl Ibarra Corretgé
AG Projects
    
    
More information about the Users
mailing list