From bf511fd69435522beec7a19e2d74f565317006f7 Mon Sep 17 00:00:00 2001 From: henrih Date: Tue, 24 Nov 2009 21:42:38 +0000 Subject: Added SkinnyAllowMediaAddressTransfer configuration parameter. Default is false. When set, any new Skinny session can take the media address from an old session, even if the old session already has received RTP. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@655 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'orkaudio/audiocaptureplugins/voip/RtpSession.cpp') diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp index 891a4b1..ceda5f7 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp @@ -2177,13 +2177,19 @@ void RtpSessions::SetMediaAddress(RtpSessionRef& session, struct in_addr mediaIp if(oldSession.get()) { // A session exists on the same IP+port - if(oldSession->m_protocol == RtpSession::ProtRawRtp || oldSession->m_numRtpPackets == 0) + if(oldSession->m_protocol == RtpSession::ProtRawRtp || oldSession->m_numRtpPackets == 0 || + (session->m_protocol == RtpSession::ProtSkinny && DLLCONFIG.m_skinnyAllowMediaAddressTransfer) ) { logMsg.Format("[%s] on %s replaces [%s]", session->m_trackingId, mediaAddress, oldSession->m_trackingId); LOG4CXX_INFO(m_log, logMsg); //Stop(oldSession); // Let the session go into timeout rather than stop is straight away, useful for skinny internal calls where media address back and forth must not kill sessions with the best metadata. } + else if(oldSession->m_trackingId.Equals(session->m_trackingId)) + { + // Old and new are the same session, do nothing + doChangeMediaAddress = false; + } else { doChangeMediaAddress = false; -- cgit v1.2.3