From 99c3dbf70cb598675a988a5124629796a6d10632 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Wed, 20 Dec 2006 16:06:55 +0000 Subject: Fixed bug where SIP calls could be reported with the wrong metadata when involved media addresses were not within LAN. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@373 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp index 9ca049a..9bc0e01 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp @@ -174,9 +174,7 @@ void RtpSession::ProcessMetadataRawRtp(RtpPacketInfoRef& rtpPacket) void RtpSession::ProcessMetadataSip(RtpPacketInfoRef& rtpPacket) { - bool done = false; - - // work out invitee IP address + // work out invitee media IP address if((unsigned int)rtpPacket->m_sourceIp.s_addr == (unsigned int)m_invitorIp.s_addr) { m_inviteeIp = rtpPacket->m_destIp; @@ -199,12 +197,20 @@ void RtpSession::ProcessMetadataSip(RtpPacketInfoRef& rtpPacket) { if(DLLCONFIG.IsMediaGateway(m_inviteeIp)) { - // dismiss + // Media gateway talking to media gateway, this is probably incoming + ProcessMetadataSipIncoming(); } - if(DLLCONFIG.IsPartOfLan(m_inviteeIp)) + else if(DLLCONFIG.IsPartOfLan(m_inviteeIp)) { + // Gateway to LAN, this is pobably incoming ProcessMetadataSipIncoming(); - } + } + else + { + // Gateway to outside address, probably outgoing but treat as incoming for now because + // It can be due to misconfigured LAN Mask, odds are it's still incoming. + ProcessMetadataSipIncoming(); + } } else if (DLLCONFIG.IsPartOfLan(m_invitorIp)) { @@ -212,10 +218,10 @@ void RtpSession::ProcessMetadataSip(RtpPacketInfoRef& rtpPacket) } else { - // SIP invitor IP address is an outside IP address + // SIP invitor media IP address is an outside IP address if(DLLCONFIG.IsMediaGateway(m_inviteeIp)) { - // dismiss + ProcessMetadataSipIncoming(); } else if(DLLCONFIG.IsPartOfLan(m_inviteeIp)) { @@ -223,7 +229,7 @@ void RtpSession::ProcessMetadataSip(RtpPacketInfoRef& rtpPacket) } else { - // SIP invitee IP address is an outside IP address + // SIP invitee media address is an outside IP address ProcessMetadataSipOutgoing(); } } -- cgit v1.2.3