Clear the ringing slave ID when the slave is disconnected on timer too.
git-svn-id: http://yate.null.ro/svn/yate/trunk@4792 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
927863685b
commit
f75aceca2a
|
@ -49,6 +49,7 @@ public:
|
||||||
{ return m_slaves; }
|
{ return m_slaves; }
|
||||||
bool msgToSlaves(const Message& msg, const String& match);
|
bool msgToSlaves(const Message& msg, const String& match);
|
||||||
protected:
|
protected:
|
||||||
|
bool clearRinging(const String& id);
|
||||||
void clear(bool softly);
|
void clear(bool softly);
|
||||||
String* getNextDest();
|
String* getNextDest();
|
||||||
bool forkSlave(String* dest);
|
bool forkSlave(String* dest);
|
||||||
|
@ -406,12 +407,7 @@ void ForkMaster::checkTimer(const Time& tmr)
|
||||||
void ForkMaster::lostSlave(ForkSlave* slave, const char* reason)
|
void ForkMaster::lostSlave(ForkSlave* slave, const char* reason)
|
||||||
{
|
{
|
||||||
Lock lock(CallEndpoint::commonMutex());
|
Lock lock(CallEndpoint::commonMutex());
|
||||||
bool ringing = m_ringing == slave->id();
|
bool ringing = clearRinging(slave->id());
|
||||||
if (ringing) {
|
|
||||||
m_fake = false;
|
|
||||||
m_ringing.clear();
|
|
||||||
clearEndpoint();
|
|
||||||
}
|
|
||||||
m_slaves.remove(slave,false);
|
m_slaves.remove(slave,false);
|
||||||
if (m_answered)
|
if (m_answered)
|
||||||
return;
|
return;
|
||||||
|
@ -575,6 +571,16 @@ bool ForkMaster::msgToSlaves(const Message& msg, const String& match)
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ForkMaster::clearRinging(const String& id)
|
||||||
|
{
|
||||||
|
if (m_ringing != id)
|
||||||
|
return false;
|
||||||
|
m_fake = false;
|
||||||
|
m_ringing.clear();
|
||||||
|
clearEndpoint();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void ForkMaster::clear(bool softly)
|
void ForkMaster::clear(bool softly)
|
||||||
{
|
{
|
||||||
RefPointer<ForkSlave> slave;
|
RefPointer<ForkSlave> slave;
|
||||||
|
@ -583,6 +589,7 @@ void ForkMaster::clear(bool softly)
|
||||||
while (slave = static_cast<ForkSlave*>(iter.get())) {
|
while (slave = static_cast<ForkSlave*>(iter.get())) {
|
||||||
if (softly && (slave->type() == ForkSlave::Persistent))
|
if (softly && (slave->type() == ForkSlave::Persistent))
|
||||||
continue;
|
continue;
|
||||||
|
clearRinging(slave->id());
|
||||||
m_slaves.remove(slave,false);
|
m_slaves.remove(slave,false);
|
||||||
slave->clearMaster();
|
slave->clearMaster();
|
||||||
CallEndpoint::commonMutex().unlock();
|
CallEndpoint::commonMutex().unlock();
|
||||||
|
|
Loading…
Reference in New Issue