summaryrefslogtreecommitdiff
path: root/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
diff options
context:
space:
mode:
authorGerald Begumisa <ben_g@users.sourceforge.net>2008-08-27 13:39:16 +0000
committerGerald Begumisa <ben_g@users.sourceforge.net>2008-08-27 13:39:16 +0000
commitb6519c2c1e4fa79049e5d5fba05a78d890c68aaf (patch)
tree3c515172a1a96c9555f1cda91f937b63181b1c73 /orkaudio/audiocaptureplugins/voip/RtpSession.cpp
parent758c81485d816de9fbf76889979e6bd853f118dd (diff)
A new configuration parameter, SipDetectSessionProgress, has been added. This parameter defaults to "true" and should be configured under the VoIpPlugin section of config.xml if it needs to be turned off. With this parameter set to "true", the SIP Session Progress message (SIP/2.0 183 Session Progress) is detected. The SDP in the message is used to force media address change on the session.
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@557 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/audiocaptureplugins/voip/RtpSession.cpp')
-rw-r--r--orkaudio/audiocaptureplugins/voip/RtpSession.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
index d6f147f..0a0bc91 100644
--- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
+++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp
@@ -1173,6 +1173,20 @@ void RtpSessions::ReportSipErrorPacket(SipFailureMessageInfoRef& info)
return;
}
+void RtpSessions::ReportSipSessionProgress(SipSessionProgressInfoRef& info)
+{
+ std::map<CStdString, RtpSessionRef>::iterator pair;
+
+ pair = m_byCallId.find(info->m_callId);
+ if (pair != m_byCallId.end())
+ {
+ RtpSessionRef session = pair->second;
+ unsigned short mediaPort = ACE_OS::atoi(info->m_mediaPort);
+
+ SetMediaAddress(session, info->m_mediaIp, mediaPort);
+ }
+}
+
void RtpSessions::ReportSip200Ok(Sip200OkInfoRef info)
{
std::map<CStdString, RtpSessionRef>::iterator pair;
@@ -2328,3 +2342,24 @@ void Sip200OkInfo::ToString(CStdString& string)
string.Format("sender:%s from:%s to:%s rcvr:%s callid:%s", senderIp, m_from, m_to, receiverIp, m_callId);
}
}
+
+SipSessionProgressInfo::SipSessionProgressInfo()
+{
+ m_mediaIp.s_addr = 0;
+ m_senderIp.s_addr = 0;
+ m_receiverIp.s_addr = 0;
+}
+
+void SipSessionProgressInfo::ToString(CStdString& string)
+{
+ char mediaIp[16];
+ ACE_OS::inet_ntop(AF_INET, (void*)&m_mediaIp, mediaIp, sizeof(mediaIp));
+
+ char senderIp[16];
+ ACE_OS::inet_ntop(AF_INET, (void*)&m_senderIp, senderIp, sizeof(senderIp));
+
+ char receiverIp[16];
+ ACE_OS::inet_ntop(AF_INET, (void*)&m_receiverIp, receiverIp, sizeof(receiverIp));
+
+ string.Format("sender:%s from:%s RTP:%s,%s to:%s rcvr:%s callid:%s", senderIp, m_from, mediaIp, m_mediaPort, m_to, receiverIp, m_callId);
+}