Added hack to preserve the RTP session when just the address has changed.

Can be used together with the hack for ignoring port change.


git-svn-id: http://voip.null.ro/svn/yate@4639 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2011-10-05 20:43:25 +00:00
parent f13c04f9d1
commit 2dc0283ae6
2 changed files with 8 additions and 1 deletions

View File

@ -267,6 +267,10 @@
; This allows preserving the local RTP session and port
;ignore_sdp_port=no
; ignore_sdp_addr: bool: Ignore SDP changes if only the address is different
; This allows preserving the local RTP session and port
;ignore_sdp_addr=no
;[listener general]
; This section has the following purposes:

View File

@ -1025,6 +1025,7 @@ static bool s_info = false;
static bool s_start_rtp = false;
static bool s_ack_required = true;
static bool s_1xx_formats = true;
static bool s_rtp_preserve = false;
static bool s_auth_register = true;
static bool s_reg_async = true;
static bool s_multi_ringing = false;
@ -5686,7 +5687,8 @@ void YateSIPConnection::reInvite(SIPTransaction* t)
m_rtpAddr = addr;
Debug(this,DebugAll,"New RTP addr '%s'",m_rtpAddr.c_str());
// clear all data endpoints - createRtpSDP will build new ones
clearEndpoint();
if (!s_rtp_preserve)
clearEndpoint();
}
setMedia(lst);
@ -7365,6 +7367,7 @@ void SIPDriver::initialize()
s_reg_async = s_cfg.getBoolValue("registrar","async_process",true);
s_ack_required = !s_cfg.getBoolValue("hacks","ignore_missing_ack",false);
s_1xx_formats = s_cfg.getBoolValue("hacks","1xx_change_formats",true);
s_rtp_preserve = s_cfg.getBoolValue("hacks","ignore_sdp_addr",false);
m_parser.initialize(s_cfg.getSection("codecs"),s_cfg.getSection("hacks"),s_cfg.getSection("general"));
if (!m_endpoint) {
Thread::Priority prio = Thread::priority(s_cfg.getValue("general","thread"));