diff options
Diffstat (limited to 'orkaudio/audiocaptureplugins/voip/RtpSession.cpp')
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 89 |
1 files changed, 73 insertions, 16 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp index f571212..654a6e6 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp @@ -107,6 +107,9 @@ void RtpSession::ReportRtcpSrcDescription(RtcpSrcDescriptionPacketInfoRef& rtcpI } m_localParty.Format("%s@%s", rtcpInfo->m_cnameUsername, realm); + CStdString lp; + lp = m_localParty; + m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(lp); } else { @@ -155,11 +158,12 @@ void RtpSession::ReportRtcpSrcDescription(RtcpSrcDescriptionPacketInfoRef& rtcpI if(DLLCONFIG.m_inInMode == true) { - m_remoteParty = testParty; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(testParty); } else { - m_remoteParty = rtcpInfo->m_cnameUsername; + CStdString rp = rtcpInfo->m_cnameUsername; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(rp); } LOG4CXX_INFO(m_log, "[" + m_trackingId + "] Set remote party to RTCP CNAME:" + m_remoteParty); @@ -264,7 +268,8 @@ void RtpSession::ProcessMetadataRawRtp(RtpPacketInfoRef& rtpPacket) } if(!m_rtcpRemoteParty) { - m_remoteParty = szDestIp; + CStdString rp(szDestIp); + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(rp); } m_localIp = rtpPacket->m_sourceIp; @@ -290,7 +295,8 @@ void RtpSession::ProcessMetadataRawRtp(RtpPacketInfoRef& rtpPacket) } if(!m_rtcpRemoteParty) { - m_remoteParty = szSourceIp; + CStdString rp(szSourceIp); + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(rp); } m_localIp = rtpPacket->m_destIp; @@ -334,13 +340,13 @@ void RtpSession::ProcessMetadataSipIncoming() if((DLLCONFIG.m_sipRequestUriAsLocalParty == true) && (m_invite->m_requestUri.CompareNoCase(m_invite->m_to) != 0)) { m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_requestUri); - m_remoteParty = m_invite->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_from); m_direction = CaptureEvent::DirIn; m_localEntryPoint = m_invite->m_to; } else { - m_remoteParty = m_invite->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_from); m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_to); m_direction = CaptureEvent::DirIn; } @@ -369,13 +375,13 @@ void RtpSession::ProcessMetadataSipOutgoing() if((DLLCONFIG.m_sipRequestUriAsLocalParty == true) && (m_invite->m_requestUri.CompareNoCase(m_invite->m_to) != 0)) { m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_requestUri); - m_remoteParty = m_invite->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_from); m_direction = CaptureEvent::DirIn; m_localEntryPoint = m_invite->m_to; } else { - m_remoteParty = m_invite->m_to; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_to); m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_from); m_direction = CaptureEvent::DirOut; } @@ -463,13 +469,13 @@ void RtpSession::UpdateMetadataSip(RtpPacketInfoRef& rtpPacket, bool sourceRtpAd if((DLLCONFIG.m_sipRequestUriAsLocalParty == true) && (m_invite->m_requestUri.CompareNoCase(m_invite->m_to) != 0)) { m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_requestUri); - m_remoteParty = m_invite->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(m_invite->m_from); m_direction = CaptureEvent::DirIn; m_localEntryPoint = m_invite->m_to; } else { - m_remoteParty = invite->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(invite->m_from); m_localParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(invite->m_to); } @@ -1184,13 +1190,13 @@ void RtpSession::ReportSipBye(SipByeInfoRef& bye) if(m_localParty.CompareNoCase(translatedTo) != 0) { // localparty is set to m_from - m_remoteParty = bye->m_to; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(bye->m_to); logMsg.Format("[%s] dahdiIntercept: reset remoteparty:%s from BYE:%s", m_trackingId, m_remoteParty, byeString); } else { // localparty is set to m_to - m_remoteParty = bye->m_from; + m_remoteParty = RtpSessionsSingleton::instance()->GetLocalPartyMap(bye->m_from); logMsg.Format("[%s] dahdiIntercept: reset remoteparty:%s from BYE:%s", m_trackingId, m_remoteParty, byeString); } @@ -1561,6 +1567,34 @@ void RtpSessions::ReportSipSessionProgress(SipSessionProgressInfoRef& info) } } +void RtpSessions::ReportSip302MovedTemporarily(Sip302MovedTemporarilyInfoRef& info) +{ + CStdString m_trackingId; + + // Contact: is mapped to the To: + SaveLocalPartyMap(info->m_contact, info->m_to); + + // If there is already a session, log that information + std::map<CStdString, RtpSessionRef>::iterator pair; + + pair = m_byCallId.find(info->m_callId); + if (pair != m_byCallId.end()) + { + RtpSessionRef session = pair->second; + + m_trackingId = session->m_trackingId; + } + + if(m_trackingId.size()) + { + LOG4CXX_INFO(m_log, "[" + m_trackingId + "] " + info->m_contact + " mapped to " + info->m_to + " by SIP 302 Moved Temporarily"); + } + else + { + LOG4CXX_INFO(m_log, info->m_contact + " mapped to " + info->m_to + " by SIP 302 Moved Temporarily (session unknown)"); + } +} + void RtpSessions::ReportSip200Ok(Sip200OkInfoRef info) { std::map<CStdString, RtpSessionRef>::iterator pair; @@ -1652,6 +1686,7 @@ void RtpSessions::UpdateSessionWithCallInfo(SkCallInfoStruct* callInfo, RtpSessi { session->m_skinnyLineInstance = callInfo->lineInstance; CStdString lp; + CStdString rp; CStdString logMsg; char szEndPointIp[16]; @@ -1662,12 +1697,14 @@ void RtpSessions::UpdateSessionWithCallInfo(SkCallInfoStruct* callInfo, RtpSessi { case SKINNY_CALL_TYPE_INBOUND: lp = callInfo->calledParty; + rp = callInfo->callingParty; session->m_localParty = GetLocalPartyMap(lp); - session->m_remoteParty = callInfo->callingParty; + session->m_remoteParty = GetLocalPartyMap(rp); session->m_direction = CaptureEvent::DirIn; break; case SKINNY_CALL_TYPE_FORWARD: lp = callInfo->calledParty; + rp = callInfo->callingParty; if(endpoint.get() && ((endpoint->m_extension).size() > 0)) { session->m_localParty = GetLocalPartyMap(endpoint->m_extension); @@ -1675,19 +1712,21 @@ void RtpSessions::UpdateSessionWithCallInfo(SkCallInfoStruct* callInfo, RtpSessi logMsg.Format("[%s] callType is FORWARD: set localparty:%s (obtained from endpoint:%s)", session->m_trackingId, session->m_localParty, szEndPointIp); LOG4CXX_DEBUG(m_log, logMsg); } - session->m_remoteParty = callInfo->callingParty; + session->m_remoteParty = GetLocalPartyMap(rp); session->m_direction = CaptureEvent::DirIn; break; case SKINNY_CALL_TYPE_OUTBOUND: lp = callInfo->callingParty; + rp = callInfo->calledParty; session->m_localParty = GetLocalPartyMap(lp); - session->m_remoteParty = callInfo->calledParty; + session->m_remoteParty = GetLocalPartyMap(rp); session->m_direction = CaptureEvent::DirOut; break; default: lp = callInfo->calledParty; + rp = callInfo->callingParty; session->m_localParty = GetLocalPartyMap(lp); - session->m_remoteParty = callInfo->callingParty; + session->m_remoteParty = GetLocalPartyMap(rp); } } @@ -3103,6 +3142,24 @@ void SipInviteInfo::ToString(CStdString& string) } //========================================================== +Sip302MovedTemporarilyInfo::Sip302MovedTemporarilyInfo() +{ + m_senderIp.s_addr = 0; + m_receiverIp.s_addr = 0; +} + +void Sip302MovedTemporarilyInfo::ToString(CStdString& string) +{ + char senderIp[16]; + char receiverIp[16]; + + ACE_OS::inet_ntop(AF_INET, (void*)&m_senderIp, senderIp, sizeof(senderIp)); + ACE_OS::inet_ntop(AF_INET, (void*)&m_receiverIp, receiverIp, sizeof(receiverIp)); + + string.Format("sender:%s rcvr:%s from:%s@%s to:%s@%s contact:%s@%s fromname:%s toname:%s contactname:%s callid:%s", senderIp, receiverIp, m_from, m_fromDomain, m_to, m_toDomain, m_contact, m_contactDomain, m_fromName, m_toName, m_contactName, m_callId); +} + +//========================================================== SipFailureMessageInfo::SipFailureMessageInfo() { m_senderIp.s_addr = 0; |