Hi, Jeff!
The main problem is that nor opensips neither rtpproxy can differentiate
between the first SDP streams and the second one. The reason is that
both OpenSIPS and RTPProxy only consider the order the streams are in
the SDP packet, and in your case, both of them are first.
Solving this on OpenSIPS side is quite challenging, since we have to
keep a state between the first SDP stream (remember it is an audio
session and mark it as stream no. 1) and when the second SDP stream
comes in, check whether it is a new one or not (in your case determine
it is a different one, T.38, and mark it as stream no. 2). We will
definitely not implement this in OpenSIPS, since it is not the correct
approach.
Ideally each SDP should have an unique identifier that is passed to
RTPProxy by OpenSIPS, but unfortunately this is not supported in RTPProxy.
So with the current code, I can't see how your issue can be solved. The
only think you can do is add a bug report for both projects, detailing
the problem.
Best regards,
Răzvan Crainea
OpenSIPS Solutions
www.opensips-solutions.com
On 09/12/2014 04:11 AM, Jeff Pyle wrote:
List,
I was never able to truly solve this issue. Instead I worked around
it by preventing the ports from changing between the G711 and the T38
sessions. Well, now I've encountered situations I can't control. I
need to ask again if anyone has any thoughts on how to handle a
refused re-invite in rtpproxy when the proposed session was going to
use different RTP port numbers than the existing one.
All the details are in the thread.
Thanks in advance for any suggestions.
- Jeff
On Thu, Feb 6, 2014 at 7:57 PM, Jeff Pyle <[email protected]
<mailto:[email protected]>> wrote:
Just for grins I tried the engage_rtp_proxy() approach instead.
It has the same problem, using the newly indicated ports on the
old session. This sounds like a bug to me.
- Jeff
On Tue, Feb 4, 2014 at 10:06 AM, Jeff Pyle
<[email protected] <mailto:[email protected]>> wrote:
Hello,
This is on Opensips 1.10 and rtpproxy 1.2.1. I have them
dual-homed on public and private networks with rtpproxy in
bridge mode. Overall, things work well. I've recently
encountered a problem I don't know how to solve relating to a
T.38 reinvite that is rejected by the public side. rtpproxy
uses the new ports in the T.38 SDP even though it was
rejected, effectively killing the G.711 session that should be
maintained.
Here's a specific call flow. A call comes in from the public
side and is routed to the private side, having rtpproxy_offer
run on it. The private UA 10.1.30.219 answers the G.711 call
with this SDP in its 200 OK:
v=0.
o=userX 198 2 IN IP4 10.1.30.219.
s=-.
c=IN IP4 10.1.30.219.
t=0 0.
m=audio *50460* RTP/AVP 0.
a=ptime:20.
a=rtpmap:0 PCMU/8000.
rtpproxy_answer happens on this; the call establishes with
two-way RTP and all is well. A few moments later the private
UA re-invites to T.38 with this SDP:
v=0.
o=userX 198 3 IN IP4 10.1.30.219.
s=-.
c=IN IP4 10.1.30.219.
t=0 0.
m=image *50462* udptl t38.
a=T38FaxVersion:0.
a=T38MaxBitRate:14400.
a=T38FaxRateManagement:transferredTCF.
a=T38FaxMaxBuffer:262.
a=T38FaxMaxDatagram:176.
a=T38FaxUdpEC:t38UDPRedundancy.
You'll notice the UA has changed its port from 50460 to 50462.
rtpproxy_offer("frocl") is called on this re-INVITE and
rtpproxy redirects the inbound RTP to 10.1.30.219
<http://10.1.30.219>:*50462*.
A few milliseconds later a 488 comes in from the public side.
We're left with our original G.711 session, which is fine,
but the RTP is now going to 50462 instead of 50460 and the UA
doesn't see it.
I'm struggling with an rtpproxy_offer/rtpproxy_answer
configuration to allow the session to revert in the event the
re-invite is rejected like this. I've tried rtpproxy_offer
without the "l" lookup flag - no effect. Any thoughts?
Another detail... I use rtpproxy_offer/rtpproxy_answer to
manage mixed early and late negotiation scenarios that
engage_rtp_proxy() cannot handle. The automatic function
isn't an option unfortunately.
- Jeff
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users