From d7cceb33666c3ef6a0202a7b5ad866c02bcc655b Mon Sep 17 00:00:00 2001 From: paulc Date: Mon, 30 Aug 2010 12:56:35 +0000 Subject: [PATCH] Properly handle Link Forced Uninhibit but keep the timer running so the LIA response is matched. git-svn-id: http://yate.null.ro/svn/yate/trunk@3586 acf43c95-373e-0410-b603-e72c3f656dc1 --- libs/ysig/management.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/ysig/management.cpp b/libs/ysig/management.cpp index 5755178f..0b32cff6 100644 --- a/libs/ysig/management.cpp +++ b/libs/ysig/management.cpp @@ -596,12 +596,22 @@ HandledMSU SS7Management::receivedMSU(const SS7MSU& msu, const SS7Label& label, return transmitMSU(SS7MSU(msu.getSIO(),lbl,&lua,1),lbl,sls) >= 0; } } + else if (msg->type() == SS7MsgSNM::LFU) { + Debug(this,DebugAll,"%s (code len=%u) [%p]",msg->name(),len,this); + SS7Label lbl(label,label.sls(),0); + static unsigned char data = SS7MsgSNM::LUN; + int global = 0; + // if link is locally inhibited execute the complete procedure + if (router && router->inhibited(lbl,SS7Layer2::Local)) + global = 2400; + return postpone(new SS7MSU(msu.getSIO(),lbl,&data,1),lbl,sls,1200,global); + } else if (msg->type() == SS7MsgSNM::LRT) { Debug(this,DebugAll,"%s (code len=%u) [%p]",msg->name(),len,this); SS7Label lbl(label,label.sls(),0); if (router && router->inhibited(lbl,SS7Layer2::Local)) return true; - unsigned char data = SS7MsgSNM::LUN; + static unsigned char data = SS7MsgSNM::LUN; return postpone(new SS7MSU(msu.getSIO(),lbl,&data,1),lbl,sls,1200,2400); } else if (msg->type() == SS7MsgSNM::LLT) { @@ -609,7 +619,7 @@ HandledMSU SS7Management::receivedMSU(const SS7MSU& msu, const SS7Label& label, SS7Label lbl(label,label.sls(),0); if (router && router->inhibited(lbl,SS7Layer2::Remote)) return true; - unsigned char data = SS7MsgSNM::LFU; + static unsigned char data = SS7MsgSNM::LFU; return postpone(new SS7MSU(msu.getSIO(),lbl,&data,1),lbl,sls,1200,2400); } else if (msg->type() == SS7MsgSNM::UPU) {