diff options
author | Gerald Begumisa <ben_g@users.sourceforge.net> | 2008-08-27 13:39:16 +0000 |
---|---|---|
committer | Gerald Begumisa <ben_g@users.sourceforge.net> | 2008-08-27 13:39:16 +0000 |
commit | b6519c2c1e4fa79049e5d5fba05a78d890c68aaf (patch) | |
tree | 3c515172a1a96c9555f1cda91f937b63181b1c73 /orkaudio/audiocaptureplugins/voip/RtpSession.cpp | |
parent | 758c81485d816de9fbf76889979e6bd853f118dd (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.cpp | 35 |
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); +} |