Force processing of link flags if same flag is set and cleared.

Force a link cycle on maintenance test failure even if the link was inactive.


git-svn-id: http://yate.null.ro/svn/yate/trunk@3720 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2010-10-19 04:06:18 +00:00
parent 77d0b1e608
commit 95f7c9de99
2 changed files with 6 additions and 6 deletions

View File

@ -230,7 +230,7 @@ bool SS7Layer2::inhibit(int setFlags, int clrFlags)
{
int old = m_inhibited;
m_inhibited = (m_inhibited | setFlags) & ~clrFlags;
if (old != m_inhibited) {
if (old != m_inhibited || (setFlags & clrFlags)) {
bool cycle = (setFlags & Inactive) && operational();
if (cycle)
control(Pause);

View File

@ -1143,12 +1143,12 @@ void SS7MTP3::timerTick(const Time& when)
l2->sls(),l2->toString().c_str(),this);
if (m_checkT1)
check = m_checkT1;
int inhFlags = SS7Layer2::Unchecked;
int cycle = 0;
if (m_forcealign) {
check = 0;
inhFlags |= SS7Layer2::Inactive;
cycle = SS7Layer2::Inactive;
l2->m_checkFail = 0;
}
l2->inhibit(inhFlags);
l2->inhibit(SS7Layer2::Unchecked | cycle,cycle);
}
}
else if (m_checkT1) {
@ -1218,7 +1218,7 @@ void SS7MTP3::linkChecked(int sls, bool remote)
if (l2->inhibited(SS7Layer2::Unchecked)) {
// trigger a slightly delayed SLTM check
u_int64_t t = Time::now() + 100000;
if ((l2->m_checkTime > t) || (t - 4000000 > l2->m_checkTime))
if ((l2->m_checkTime > t + m_checkT1) || (t - 4000000 > l2->m_checkTime))
l2->m_checkTime = t;
}
}