summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Begumisa <ben_g@users.sourceforge.net>2008-05-27 21:11:15 +0000
committerGerald Begumisa <ben_g@users.sourceforge.net>2008-05-27 21:11:15 +0000
commitb4e1ba423478f40484319fc1e16583dd4be64132 (patch)
tree50198dc32167868f0de3566c8cf7e8e5d0ca52c9
parentaaad6163c79cdab20f6dfe5255887287306608af (diff)
Modified VoIP plugin such that if a session has a valid public RTP address, the RTP address in a received SIP 200 OK packet only replaces it if it is also public or if the session RTP address is not set. As before use of SIP 200 OK is still goverened by the SipUse200OkMediaAddress variable
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@539 09dcff7a-b715-0410-9601-b79a96267cd0
-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;
};
//========================================