[Opalvoip-svn] SF.net SVN: opalvoip:[31337] opal/trunk/src/h323/h323.cxx
Brought to you by:
csoutheren,
rjongbloed
From: <rjo...@us...> - 2014-01-31 23:46:39
|
Revision: 31337 http://sourceforge.net/p/opalvoip/code/31337 Author: rjongbloed Date: 2014-01-31 23:46:36 +0000 (Fri, 31 Jan 2014) Log Message: ----------- Fixed some weird compatibility issues with some systems around the on hold/off hold TCS media switcharoo thing, part 3. Modified Paths: -------------- opal/trunk/src/h323/h323.cxx Modified: opal/trunk/src/h323/h323.cxx =================================================================== --- opal/trunk/src/h323/h323.cxx 2014-01-31 22:15:00 UTC (rev 31336) +++ opal/trunk/src/h323/h323.cxx 2014-01-31 23:46:36 UTC (rev 31337) @@ -3926,29 +3926,20 @@ // Check for if all the 245 conditions are met so can start up logical // channels and complete the connection establishment. - if (h245_available) { + if (h245_available) endSessionNeeded = true; - H323Channel * chan = logicalChannels->FindChannelBySession(H323Capability::DefaultAudioSessionID, false); - if (chan == NULL) + // Delay handling of off hold until we finish redoing TCS, MSD & OLC. + if (m_holdFromRemote == eRetrieveFromRemote) { + H323Channel * chan; + if ((logicalChannels->FindChannelBySession(H323Capability::DefaultAudioSessionID, false)) == NULL) chan = logicalChannels->FindChannelBySession(H323Capability::DefaultVideoSessionID, false); if (chan != NULL) { - /* Check if we have just been connected, or have come out of a - transmitter side paused, or we are "early starting" , that is media - over H.245 before CONNECT */ - if ( m_holdFromRemote == eRetrieveFromRemote || - connectionState == HasExecutedSignalConnect || - (earlyStart && m_fastStartState != FastStartAcknowledged && IsH245Master())) - OnSelectLogicalChannels(); // Start some media - - // Delay handling of off hold until we finish redoing TCS, MSD & OLC. - if (m_holdFromRemote == eRetrieveFromRemote && logicalChannels->GetChannels()[chan->GetNumber()].IsEstablished()) { - if ((chan = logicalChannels->FindChannelBySession(H323Capability::DefaultAudioSessionID, true)) != NULL) - chan = logicalChannels->FindChannelBySession(H323Capability::DefaultVideoSessionID, true); - if (chan != NULL && logicalChannels->GetChannels()[chan->GetNumber()].IsEstablished()) { - m_holdFromRemote = eOffHoldFromRemote; - OnHold(true, false); - } + if ((chan = logicalChannels->FindChannelBySession(H323Capability::DefaultAudioSessionID, true)) == NULL) + chan = logicalChannels->FindChannelBySession(H323Capability::DefaultVideoSessionID, true); + if (chan != NULL) { + m_holdFromRemote = eOffHoldFromRemote; + OnHold(true, false); } } } @@ -3957,7 +3948,7 @@ case SetUpPhase : case ProceedingPhase : case AlertingPhase : - if (connectionState == HasExecutedSignalConnect) { + if (h245_available) { bool hasEstablishedChannel = false; bool inProgressChannel = false; for (H245LogicalChannelDict::iterator it = logicalChannels->GetChannels().begin(); @@ -3967,7 +3958,8 @@ if (it->second.IsAwaitingEstablishment()) inProgressChannel = true; } - if (hasEstablishedChannel && !inProgressChannel) + if (hasEstablishedChannel && !inProgressChannel && + (connectionState == HasExecutedSignalConnect || (earlyStart && m_fastStartState != FastStartAcknowledged))) OnConnectedInternal(); } break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |