diff options
Diffstat (limited to 'orkaudio/audiocaptureplugins')
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 23 | ||||
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp | 1 | ||||
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIpConfig.h | 1 |
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; }; //======================================== |