summaryrefslogtreecommitdiff
path: root/orkaudio/audiocaptureplugins
diff options
context:
space:
mode:
Diffstat (limited to 'orkaudio/audiocaptureplugins')
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.cpp23
-rw-r--r--orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp1
-rw-r--r--orkaudio/audiocaptureplugins/voip/VoIpConfig.h1
3 files changed, 24 insertions, 1 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
index 4db436f..ad9f68c 100644
--- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
+++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
@@ -1113,7 +1113,28 @@ void RtpSessions::ReportSip200Ok(Sip200OkInfoRef info)
if(info->m_hasSdp && DLLCONFIG.m_sipUse200OkMediaAddress && !session->m_numRtpPackets)
{
unsigned short mediaPort = ACE_OS::atoi(info->m_mediaPort);
- SetMediaAddress(session, info->m_mediaIp, mediaPort);
+
+ if(!session->m_fromRtpIp.s_addr)
+ {
+ // Session has empty RTP address
+ SetMediaAddress(session, info->m_mediaIp, mediaPort);
+ }
+ else
+ {
+ if(!DLLCONFIG.m_lanIpRanges.Matches(session->m_fromRtpIp))
+ {
+ // Session has a public IP
+ if(!DLLCONFIG.m_lanIpRanges.Matches(info->m_mediaIp))
+ {
+ SetMediaAddress(session, info->m_mediaIp, mediaPort);
+ }
+ }
+ else
+ {
+ // Session has a private IP
+ SetMediaAddress(session, info->m_mediaIp, mediaPort);
+ }
+ }
}
//else
//{
diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp
index 9476885..cf48b83 100644
--- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp
+++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp
@@ -116,6 +116,7 @@ void VoIpConfig::Define(Serializer* s)
s->CsvValue("SipDomains", m_sipDomains);
s->CsvValue("SipDirectionRefenceIpAddresses", m_sipDirectionRefenceIpAddresses);
+ s->IpRangesValue("LanIpRanges", m_lanIpRanges);
}
void VoIpConfig::Validate()
diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h
index fcf7823..47a7351 100644
--- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.h
+++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.h
@@ -101,6 +101,7 @@ public:
int m_skinnyTcpPort;
std::list<CStdString> m_sipDomains;
std::list<CStdString> m_sipDirectionRefenceIpAddresses;
+ IpRanges m_lanIpRanges;
};
//========================================