Hi Zeus:
No, although the rtpproxy default timeout value is 60,
In my test, if hold last more than 60 secs, the rtp packet is ok after
unhold
Seems ser will announce rtpproxy to rebuild another session,
Only when (1)holding time less than 60 sec, and (2)kphone change the rtp
port,
then the rtp session will failed,
If holding less than 60 sec, but kphone doesn't change the port,
The rtp packet will transfer correctly.
So, now I have two ways to achieve the goal
(1). Use rtp-keep -alive in client side
(2). In ser routing script, catch the re-invite and signal rtpproxy the
changes?
Is there any reference or example about (2)?
Thanks and regards
Jimmy
-----Original Message-----
From: Zeus Ng [mailto:zeus.ng@isquare.com.au]
Sent: Friday, March 18, 2005 11:17 AM
To: 'jimmy'
Cc: 'Iptel-Seruser'
Subject: RE: [Serusers] Hold/Unhold doesn't work with NATed clients
withrtpproxy in some case...
Jimmy,
See inline.
In my test, I put rtpproxy and ser in same pc, and
two UACs
are behind that pc,
When I use hold/unhold, most time it works but some times it
doesn't work
I checked the ethereal log, it seems that the fail happens only when
1. hold function last less than 60 seconds.
Do you mean more than 60 seconds? By default, rtpproxy has a session timeout
of 60s. If it detects no traffic for more than 60s, it assumes the call has
finished but SER has not signal it to stop. Thus, it disconnect the call.
Some UA, when on hold, does not send any RTP packets and so rtpproxy thinks
they have been disconnected.
You can change the SESSION_TIMEOUT and recompile rtpproxy to support a
higher value. Or, if your UA support RTP keep-alive, make it sends a packet
within the 60s interval.
2. once the re-invite's rtp port in SDP announced by client
has been changed
to different rtp port (different from original rtp port).
Most likely you have not catch re-INVITE and signal rtpproxy about that. One
area to look at is within your loose route routine.
So it seems rtpproxy doens't knows the ports come from both
UACs have changed...
and didn't forward UACs' rtp packets.
Here is the question I have conclude from above description
1. While receive the re-invite message, will ser recheck the
port in SDP
and announce rtpproxy again?
Yes, if you catch it.
2. Is this the limitation of Ser+rtpproxy with NATed UACs?
No.
3. Does there has any suggestion that can make this function works?
(ser+nathelper+rtpproxy with function hold/uhhold)
See above on rtp keep-alive.