From aeb983e3e0404dd7378fd29215007c71aabc6d9d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 14 Jul 2020 14:05:02 +0300 Subject: [PATCH] Updated agents maxUsage flag handle --- agents/agentreq.go | 10 ++++++++++ agents/diamagent.go | 4 +--- agents/dnsagent.go | 4 +--- agents/httpagent.go | 4 +--- agents/radagent.go | 4 +--- agents/sipagent.go | 5 ++--- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/agents/agentreq.go b/agents/agentreq.go index f003dfb1e..9ad7e5789 100644 --- a/agents/agentreq.go +++ b/agents/agentreq.go @@ -531,3 +531,13 @@ func (ar *AgentRequest) setCGRReply(rply utils.NavigableMapper, errRply error) ( *ar.CGRReply = nm // update value so we can share CGRReply return } + +func needsMaxUsage(ralsFlags []string) bool { + for _, flag := range ralsFlags { + if utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, + flag) { + return true + } + } + return false +} diff --git a/agents/diamagent.go b/agents/diamagent.go index 57e8c0e89..cf5038d5d 100644 --- a/agents/diamagent.go +++ b/agents/diamagent.go @@ -432,14 +432,12 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor, Paginator: *cgrArgs.RoutePaginator, Opts: opts, } - needMaxUsage := utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, - reqProcessor.Flags.ParamsSlice(utils.MetaRALs)[0]) rply := new(sessions.V1ProcessEventReply) err = da.connMgr.Call(da.cgrCfg.DiameterAgentCfg().SessionSConns, da, utils.SessionSv1ProcessEvent, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { cgrEv.Event[utils.Usage] = 0 // avoid further debits - } else if needMaxUsage { + } else if needsMaxUsage(reqProcessor.Flags.ParamsSlice(utils.MetaRALs)) { cgrEv.Event[utils.Usage] = rply.MaxUsage // make sure the CDR reflects the debit } if err = agReq.setCGRReply(rply, err); err != nil { diff --git a/agents/dnsagent.go b/agents/dnsagent.go index 76b95768e..d06c3ec52 100644 --- a/agents/dnsagent.go +++ b/agents/dnsagent.go @@ -323,15 +323,13 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor, Paginator: *cgrArgs.RoutePaginator, Opts: opts, } - needMaxUsage := utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, - reqProcessor.Flags.ParamsSlice(utils.MetaRALs)[0]) rply := new(sessions.V1ProcessEventReply) err = da.connMgr.Call(da.cgrCfg.DNSAgentCfg().SessionSConns, nil, utils.SessionSv1ProcessEvent, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { cgrEv.Event[utils.Usage] = 0 // avoid further debits - } else if needMaxUsage { + } else if needsMaxUsage(reqProcessor.Flags.ParamsSlice(utils.MetaRALs)) { cgrEv.Event[utils.Usage] = rply.MaxUsage // make sure the CDR reflects the debit } if err = agReq.setCGRReply(rply, err); err != nil { diff --git a/agents/httpagent.go b/agents/httpagent.go index 4fc136821..608f13fbb 100644 --- a/agents/httpagent.go +++ b/agents/httpagent.go @@ -253,14 +253,12 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor, Paginator: *cgrArgs.RoutePaginator, Opts: opts, } - needMaxUsage := utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, - reqProcessor.Flags.ParamsSlice(utils.MetaRALs)[0]) rply := new(sessions.V1ProcessEventReply) err = ha.connMgr.Call(ha.sessionConns, nil, utils.SessionSv1ProcessEvent, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { cgrEv.Event[utils.Usage] = 0 // avoid further debits - } else if needMaxUsage { + } else if needsMaxUsage(reqProcessor.Flags.ParamsSlice(utils.MetaRALs)) { cgrEv.Event[utils.Usage] = rply.MaxUsage // make sure the CDR reflects the debit } if err = agReq.setCGRReply(rply, err); err != nil { diff --git a/agents/radagent.go b/agents/radagent.go index b8844a4ea..1bd40e844 100644 --- a/agents/radagent.go +++ b/agents/radagent.go @@ -308,14 +308,12 @@ func (ra *RadiusAgent) processRequest(req *radigo.Packet, reqProcessor *config.R CGREvent: cgrEv, ArgDispatcher: cgrArgs.ArgDispatcher, } - needMaxUsage := utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, - reqProcessor.Flags.ParamsSlice(utils.MetaRALs)[0]) rply := new(sessions.V1ProcessEventReply) err = ra.connMgr.Call(ra.cgrCfg.RadiusAgentCfg().SessionSConns, nil, utils.SessionSv1ProcessEvent, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { cgrEv.Event[utils.Usage] = 0 // avoid further debits - } else if needMaxUsage { + } else if needsMaxUsage(reqProcessor.Flags.ParamsSlice(utils.MetaRALs)) { cgrEv.Event[utils.Usage] = rply.MaxUsage // make sure the CDR reflects the debit } if err = agReq.setCGRReply(rply, err); err != nil { diff --git a/agents/sipagent.go b/agents/sipagent.go index e580e8a34..341bf57ab 100644 --- a/agents/sipagent.go +++ b/agents/sipagent.go @@ -518,14 +518,13 @@ func (sa *SIPAgent) processRequest(reqProcessor *config.RequestProcessor, Paginator: *cgrArgs.RoutePaginator, Opts: opts, } - needMaxUsage := utils.IsSliceMember([]string{utils.MetaAuthorize, utils.MetaInitiate, utils.MetaUpdate}, - reqProcessor.Flags.ParamsSlice(utils.MetaRALs)[0]) + rply := new(sessions.V1ProcessEventReply) err = sa.connMgr.Call(sa.cfg.SIPAgentCfg().SessionSConns, nil, utils.SessionSv1ProcessEvent, evArgs, rply) if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) { cgrEv.Event[utils.Usage] = 0 // avoid further debits - } else if needMaxUsage { + } else if needsMaxUsage(reqProcessor.Flags.ParamsSlice(utils.MetaRALs)) { cgrEv.Event[utils.Usage] = rply.MaxUsage // make sure the CDR reflects the debit } if err = agReq.setCGRReply(rply, err); err != nil {