[OpenSIPS-Users] mediaproxy 2.3: reinvites' SDP not modified
Dan Pascu
dan at ag-projects.com
Fri Feb 13 16:48:09 CET 2009
On Friday 13 February 2009, Carlo Dimaggio wrote:
> Il giorno 13/feb/09, alle ore 13:56, Dan Pascu ha scritto:
> > The Patton device seems to be faulty. In its answer it strips all
> > params
> > from the Record-Route header except from lr=on. Similarly it strips
> > all
> > params from the Record-Route headers except lr=on when converting the
> > Record-Route headers to Route headers on subsequent re-INVITEs. Among
> > these params is the did (dialog-id) which is used to identify the
> > dialog
> > the message belongs to. My guess is that those re-INVITEs are not
> > matched
> > against their dialogs anymore so no mediaproxy callbacks are called
> > for
> > them to modify their SDP.
> >
> > You can try to use use_media_proxy() and end_media_session() instead
> > of
> > engage_media_proxy() to manually call on mediaproxy to handle the
> > SDP for
> > every INVITE/reply during the dialog. The dialog based method of
> > using engage_media_proxy can only work if the devices work properly
> > and do not
> > prevent the dialog module from recognizing an in-dialog message
> > because
> > its identification elements were altered.
>
> Thank you Dan/Adrian/Ruud for your quick and expert answers :-)
>
> I understand. Do you think I can write to tech support of Patton and
> explain the problem? It is a bug in their firmware or a "particular"
> behaviour?
> I would like to continue using engage_media_proxy...
It is a bug. Any UA should return the Record-Route headers in the 200 OK,
exactly as they were received. Also all Record-Route headers should be
copied exactly, but in reverse order into Route headers in subsequent
dialog requests. All params present in the Record-Route headers must be
preserved exactly, including their case.
However I belienve that this is not all there is to this problem. The
dialog module is able to fallback to matching SIP elements to identify
the dialog if the did is not present. If the missing dialog-id would have
been the only issue then it would have not been able to match the BYEs
either, but it does. Also with the call made in one direction, it always
works, even when the did is missing, but when the call is made in the
other direction it fails to match the re-INVITEs to the dialog and call
the mediaproxy callbacks.
There is a bug in the dialog module where it somethimes doesn't match
messages because there is a race in saving the to-tag internally. I have
seen many times how ACKs are not matches to the dialog and sometimes even
BYEs fail to match. It may be that what you have is a combination of all
these, not just the broken Record-Route headers.
One thing that I'm certain about is that mediaproxy is not called for
those messages because for some reason the dialog module fails to match
them as part of the dialog. Maybe someone who knows better how the
matching is done inside the dialog module, may shed some more light why
this happens, and more importantly why it only happens in one direction
(only when the patton initiates the call).
--
Dan
More information about the Users
mailing list