[Opalvoip-svn] SF.net SVN: opalvoip:[24536] opal/branches/v3_8
Brought to you by:
csoutheren,
rjongbloed
From: <rjo...@us...> - 2010-06-24 03:15:44
|
Revision: 24536 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=24536&view=rev Author: rjongbloed Date: 2010-06-24 03:15:38 +0000 (Thu, 24 Jun 2010) Log Message: ----------- Yet another try at fixing the offer/answer, empty SDP Re-INVITE nightmare. Needs a serious re-think on how we do that, but not happening in this branch. Modified Paths: -------------- opal/branches/v3_8/include/sip/sipcon.h opal/branches/v3_8/src/sip/sipcon.cxx Modified: opal/branches/v3_8/include/sip/sipcon.h =================================================================== --- opal/branches/v3_8/include/sip/sipcon.h 2010-06-23 11:47:10 UTC (rev 24535) +++ opal/branches/v3_8/include/sip/sipcon.h 2010-06-24 03:15:38 UTC (rev 24536) @@ -501,7 +501,8 @@ const OpalMediaType & mediaType, unsigned sessionID, OpalRTPSessionManager & rtpSessions, - SDPSessionDescription & sdpOut + SDPSessionDescription & sdpOut, + bool offerOpenMediaStreamOnly = false ); virtual bool AnswerSDPMediaDescription( const SDPSessionDescription & sdpIn, Modified: opal/branches/v3_8/src/sip/sipcon.cxx =================================================================== --- opal/branches/v3_8/src/sip/sipcon.cxx 2010-06-23 11:47:10 UTC (rev 24535) +++ opal/branches/v3_8/src/sip/sipcon.cxx 2010-06-24 03:15:38 UTC (rev 24536) @@ -680,19 +680,22 @@ } if (m_needReINVITE && !mediaStreams.IsEmpty()) { + PTRACE(4, "SIP\tOffering only current media streams in Re-INVITE"); std::vector<bool> sessions; for (OpalMediaStreamPtr stream(mediaStreams, PSafeReference); stream != NULL; ++stream) { std::vector<bool>::size_type session = stream->GetSessionID(); sessions.resize(std::max(sessions.size(),session+1)); if (!sessions[session]) { sessions[session] = true; - sdpOK |= OfferSDPMediaDescription(stream->GetMediaFormat().GetMediaType(), session, rtpSessions, sdpOut); + sdpOK |= OfferSDPMediaDescription(stream->GetMediaFormat().GetMediaType(), session, rtpSessions, sdpOut, true); } } return sdpOK; } + PTRACE(4, "SIP\tOffering all configured media."); + // construct offer as per RFC 3261, para 14.2 // Use |= to avoid McCarthy boolean || from not calling video/fax @@ -762,7 +765,8 @@ bool SIPConnection::OfferSDPMediaDescription(const OpalMediaType & mediaType, unsigned rtpSessionId, OpalRTPSessionManager & rtpSessions, - SDPSessionDescription & sdp) + SDPSessionDescription & sdp, + bool offerOpenMediaStreamOnly) { OpalMediaType::AutoStartMode autoStart = GetAutoStart(mediaType); if (rtpSessionId == 0 && autoStart == OpalMediaType::DontOffer) @@ -856,7 +860,7 @@ if (sdp.GetDefaultConnectAddress().IsEmpty()) sdp.SetDefaultConnectAddress(sdpContactAddress); - if (m_needReINVITE) { + if (offerOpenMediaStreamOnly) { OpalMediaStreamPtr sendStream = GetMediaStream(rtpSessionId, false); bool sending = sendStream != NULL && sendStream->IsOpen(); OpalMediaStreamPtr recvStream = GetMediaStream(rtpSessionId, true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |