summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2009-05-28 16:31:39 +0000
committerHenri Herscher <henri@oreka.org>2009-05-28 16:31:39 +0000
commit6867a3fbe0111d352b9e00388a46249057818cef (patch)
tree2d4a1bd770736f75c5d35f3d127d24c7781a1964
parent071fbf11a15cada9cb9c77d518a8d7474f11b774 (diff)
SIP INVITE advertising an RTP address matching an existing session (with a different SIP Call ID) will now result in the existing session being stopped and a new session being created.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@616 09dcff7a-b715-0410-9601-b79a96267cd0
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
index 9424cd9..e6f789c 100644
--- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
+++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
@@ -1308,6 +1308,13 @@ void RtpSessions::ReportSipInvite(SipInviteInfoRef& invite)
// Do nothing here so that we end up stopping this Raw RTP session
// and creating new session below
}
+ else if (invite->m_callId.Equals(session->m_callId) == false)
+ {
+ LOG4CXX_INFO(m_log, "[" + session->m_trackingId + "] Detecting new SIP callId:" + invite->m_callId + " stopping...");
+ // Forcing previous session type to Raw RTP so that SetMediaAddress() successfully
+ // replaces it by a new session below.
+ session->m_protocol = RtpSession::ProtRawRtp;
+ }
else
{
if(invite->m_attrSendonly)