Detach any remaining regular or override DataSource from a DataConsumer that is removed from a DataEndpoint.

git-svn-id: http://yate.null.ro/svn/yate/trunk@4650 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2011-10-24 15:26:04 +00:00
parent 891dcd4c20
commit edef21c123
1 changed files with 16 additions and 1 deletions

View File

@ -899,8 +899,23 @@ void DataEndpoint::setConsumer(DataConsumer* consumer)
m_consumer = consumer;
if (source && temp)
DataTranslator::detachChain(source,temp);
if (temp)
if (temp) {
s_consSrcMutex.lock();
RefPointer<DataSource> src = temp->getConnSource();
s_consSrcMutex.unlock();
if (src) {
src->detach(temp);
src = 0;
}
s_consSrcMutex.lock();
src = temp->getOverSource();
s_consSrcMutex.unlock();
if (src) {
src->detach(temp);
src = 0;
}
temp->attached(false);
}
if (consumer)
consumer->attached(true);
lock.drop();