summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.cpp20
-rw-r--r--orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp3
-rw-r--r--orkaudio/audiocaptureplugins/voip/VoIpConfig.h1
3 files changed, 7 insertions, 17 deletions
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;