From c5c036c1517c518484f6316cf8d61c9692da3d76 Mon Sep 17 00:00:00 2001 From: Tripon Alexandru-Ionut Date: Fri, 12 Apr 2019 12:08:12 +0300 Subject: [PATCH] Added dispatcher as internal connection to the radius agent --- cmd/cgr-engine/cgr-engine.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index b83e1739e..7ea3bc5c0 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -346,16 +346,15 @@ func startDiameterAgent(internalSsChan, internalDispatcherSChan chan rpcclient.R filterSChan <- filterS var sS rpcclient.RpcClientConnection var sSInternal bool - if len(cfg.DiameterAgentCfg().SessionSConns) == 0 { + if cfg.DispatcherSCfg().Enabled { + sS = <-internalDispatcherSChan + internalDispatcherSChan <- sS + } else if len(cfg.DiameterAgentCfg().SessionSConns) == 0 { utils.Logger.Crit( fmt.Sprintf("<%s> no SessionS connections defined", utils.DiameterAgent)) exitChan <- true return - } - if cfg.DispatcherSCfg().Enabled { - sS = <-internalDispatcherSChan - internalDispatcherSChan <- sS } else if cfg.DiameterAgentCfg().SessionSConns[0].Address == utils.MetaInternal { sSInternal = true sSIntConn := <-internalSsChan @@ -400,14 +399,17 @@ func startDiameterAgent(internalSsChan, internalDispatcherSChan chan rpcclient.R exitChan <- true } -func startRadiusAgent(internalSMGChan chan rpcclient.RpcClientConnection, exitChan chan bool, +func startRadiusAgent(internalSMGChan, internalDispatcherSChan chan rpcclient.RpcClientConnection, exitChan chan bool, filterSChan chan *engine.FilterS) { filterS := <-filterSChan filterSChan <- filterS utils.Logger.Info("Starting CGRateS RadiusAgent service") var err error - var smgConn *rpcclient.RpcClientPool - if len(cfg.RadiusAgentCfg().SessionSConns) != 0 { + var smgConn rpcclient.RpcClientConnection + if cfg.DispatcherSCfg().Enabled { + smgConn = <-internalDispatcherSChan + internalDispatcherSChan <- smgConn + } else if len(cfg.RadiusAgentCfg().SessionSConns) != 0 { smgConn, err = engine.NewRPCPool(rpcclient.POOL_FIRST, cfg.TlsCfg().ClientKey, cfg.TlsCfg().ClientCerificate, cfg.TlsCfg().CaCertificate, @@ -416,19 +418,25 @@ func startRadiusAgent(internalSMGChan chan rpcclient.RpcClientConnection, exitCh cfg.RadiusAgentCfg().SessionSConns, internalSMGChan, cfg.GeneralCfg().InternalTtl, false) if err != nil { - utils.Logger.Crit(fmt.Sprintf(" Could not connect to SMG: %s", err.Error())) + utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to SMG: %s", utils.RadiusAgent, err.Error())) exitChan <- true return } + } else { + utils.Logger.Crit( + fmt.Sprintf("<%s> no SessionS connections defined", + utils.RadiusAgent)) + exitChan <- true + return } ra, err := agents.NewRadiusAgent(cfg, filterS, smgConn) if err != nil { - utils.Logger.Err(fmt.Sprintf(" error: <%s>", err.Error())) + utils.Logger.Err(fmt.Sprintf("<%s> error: <%s>", utils.RadiusAgent, err.Error())) exitChan <- true return } if err = ra.ListenAndServe(); err != nil { - utils.Logger.Err(fmt.Sprintf(" error: <%s>", err.Error())) + utils.Logger.Err(fmt.Sprintf("<%s> error: <%s>", utils.RadiusAgent, err.Error())) } exitChan <- true } @@ -1547,7 +1555,7 @@ func main() { } if cfg.RadiusAgentCfg().Enabled { - go startRadiusAgent(internalSMGChan, exitChan, filterSChan) + go startRadiusAgent(internalSMGChan, internalDispatcherSChan, exitChan, filterSChan) } if cfg.DNSAgentCfg().Enabled {