Start circuit reset when un unexpected (no existing call) call message is received.
git-svn-id: http://voip.null.ro/svn/yate@3519 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
fcc3790794
commit
b56eb0ad88
|
@ -2852,6 +2852,7 @@ SS7ISUP::SS7ISUP(const NamedList& params, unsigned char sio)
|
|||
m_t13Interval(300000), // Q.764 T13 (BLK global) 5..15 minutes
|
||||
m_t14Interval(20000), // Q.764 T14 (UBL) 15..60 seconds
|
||||
m_t15Interval(300000), // Q.764 T15 (UBL global) 5..15 minutes
|
||||
m_t16Interval(20000), // Q.764 T16 (RSC) 15..60 seconds
|
||||
m_t17Interval(300000), // Q.764 T17 5..15 minutes
|
||||
m_t18Interval(20000), // Q.764 T18 (CGB) 15..60 seconds
|
||||
m_t19Interval(300000), // Q.764 T19 (CGB global) 5..15 minutes
|
||||
|
@ -4071,7 +4072,12 @@ bool SS7ISUP::startCircuitReset(SignallingCircuit*& cic, const String& timer)
|
|||
"Starting circuit %u reset on timer %s [%p]",
|
||||
cic->code(),timer.c_str(),this);
|
||||
// TODO: alert maintenance if T5 timer expired
|
||||
SignallingMessageTimer* m = m_pending.add(m_t17Interval);
|
||||
SignallingMessageTimer* m = 0;
|
||||
if (relTimeout)
|
||||
m = new SignallingMessageTimer(m_t17Interval);
|
||||
else
|
||||
m = new SignallingMessageTimer(m_t16Interval,m_t17Interval);
|
||||
m = m_pending.add(m);
|
||||
if (m) {
|
||||
cic->setLock(SignallingCircuit::Resetting);
|
||||
SS7MsgISUP* msg = new SS7MsgISUP(SS7MsgISUP::RSC,cic->code());
|
||||
|
@ -4110,8 +4116,16 @@ void SS7ISUP::processCallMsg(SS7MsgISUP* msg, const SS7Label& label, int sls)
|
|||
DROP_MSG("invalid CIC")
|
||||
// non IAM message. Drop it if there is no call for it
|
||||
if ((msg->type() != SS7MsgISUP::IAM) && (msg->type() != SS7MsgISUP::CCR)) {
|
||||
if (!call)
|
||||
DROP_MSG("no call for this CIC")
|
||||
if (!call) {
|
||||
if (msg->type() != SS7MsgISUP::RLC) {
|
||||
// Initiate circuit reset
|
||||
SignallingCircuit* cic = 0;
|
||||
String s(msg->cic());
|
||||
if (reserveCircuit(cic,0,SignallingCircuit::LockLockedBusy,&s))
|
||||
startCircuitReset(cic,"T16");
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// IAM or CCR message
|
||||
|
|
|
@ -7682,6 +7682,7 @@ private:
|
|||
u_int64_t m_t13Interval; // Q.764 T13 BLK global timer interval
|
||||
u_int64_t m_t14Interval; // Q.764 T14 UBL timer interval
|
||||
u_int64_t m_t15Interval; // Q.764 T15 UBL global timer interval
|
||||
u_int64_t m_t16Interval; // Q.764 T16 RSC timer interval
|
||||
u_int64_t m_t17Interval; // Q.764 T17 timer interval
|
||||
u_int64_t m_t18Interval; // Q.764 T18 CGB timer interval
|
||||
u_int64_t m_t19Interval; // Q.764 T19 CGB global timer interval
|
||||
|
|
Loading…
Reference in New Issue