From b4f73de93002e79ccdf6ee62cd91a533c0f7ba1f Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Mon, 10 Dec 2007 16:36:00 +0000 Subject: Added SipDynamicMediaAddress config boolean. When enabled, orkaudio will take changing media addresses from new SIP INVITES for any given session into account. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@515 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 20 +++----------------- orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp | 3 +++ orkaudio/audiocaptureplugins/voip/VoIpConfig.h | 1 + 3 files changed, 7 insertions(+), 17 deletions(-) (limited to 'orkaudio/audiocaptureplugins') diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp index fa312ae..9ed7360 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp @@ -979,23 +979,9 @@ void RtpSessions::ReportSipInvite(SipInviteInfoRef& invite) } } - // For now, do not report new INVITEs that have the same SIP call ID but a different media address - // those INVITEs are ignored altogether. - if(!session->m_ipAndPort.Equals(ipAndPort)) - { - //===== The following is disabled because it disrupts valid sessions ==== - //===== We need to make sure that at least one RTP packet has been ==== - //===== seen that validates any new INVITE associated with the session ==== - //// The session RTP connection address has changed - //// Remove session from IP and Port map - //m_byIpAndPort.erase(session->m_ipAndPort); - //// ... update - //session->m_ipAndPort = ipAndPort; - //session->ReportSipInvite(invite); - //// ... and reinsert - //m_byIpAndPort.insert(std::make_pair(session->m_ipAndPort, session)); - // - //LOG4CXX_INFO(m_log, "[" + session->m_trackingId + "] updated with new INVITE data"); + if(!session->m_ipAndPort.Equals(ipAndPort) && DLLCONFIG.m_sipDynamicMediaAddress) + { + SetMediaAddress(session, invite->m_fromRtpIp, rtpPort); } return; } diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp index cc4213b..4ab8abd 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp @@ -44,6 +44,7 @@ VoIpConfig::VoIpConfig() m_sipLogFailedCalls = false; m_sipUse200OkMediaAddress = false; m_sipReportFullAddress = false; + m_sipDynamicMediaAddress = false; m_useMacIfNoLocalParty = false; // Uses IP address by default m_localPartyForceLocalIp = false; @@ -93,6 +94,8 @@ void VoIpConfig::Define(Serializer* s) s->BoolValue("SipLogFailedCalls", m_sipLogFailedCalls); s->BoolValue("SipUse200OkMediaAddress", m_sipUse200OkMediaAddress); s->BoolValue("SipReportFullAddress", m_sipReportFullAddress); + s->BoolValue("SipDynamicMediaAddress", m_sipDynamicMediaAddress); + s->BoolValue("UseMacIfNoLocalParty", m_useMacIfNoLocalParty); s->BoolValue("LocalPartyForceLocalIp", m_localPartyForceLocalIp); diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h index b5e5d43..f5e04c7 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h +++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h @@ -78,6 +78,7 @@ public: bool m_sipLogFailedCalls; bool m_sipUse200OkMediaAddress; bool m_sipReportFullAddress; + bool m_sipDynamicMediaAddress; bool m_useMacIfNoLocalParty; bool m_localPartyForceLocalIp; -- cgit v1.2.3