diff options
author | Henri Herscher <henri@oreka.org> | 2009-05-28 16:31:39 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2009-05-28 16:31:39 +0000 |
commit | 6867a3fbe0111d352b9e00388a46249057818cef (patch) | |
tree | 2d4a1bd770736f75c5d35f3d127d24c7781a1964 | |
parent | 071fbf11a15cada9cb9c77d518a8d7474f11b774 (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.cpp | 7 |
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) |