Updated agents maxUsage flag handle

This commit is contained in:
Trial97
2020-07-14 14:05:02 +03:00
committed by Dan Christian Bogos
parent 715439475e
commit aeb983e3e0
6 changed files with 16 additions and 15 deletions

View File

@@ -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
}

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {