diff --git a/sessions/sessions.go b/sessions/sessions.go index a646d86a4..c869ce73b 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -1928,10 +1928,16 @@ func (smg *SMGeneric) BiRPCv1InitiateSession(clnt rpcclient.RpcClientConnection, return utils.NewErrMandatoryIeMissing(utils.OriginID) } } + ev := engine.NewSafEvent(args.CGREvent.Event) + dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval + if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil { + return utils.NewErrRALs(err) + } + } if maxUsage, err := smg.InitiateSession( args.CGREvent.Tenant, - engine.NewSafEvent(args.CGREvent.Event), clnt, originID, - smg.cgrCfg.SessionSCfg().DebitInterval); err != nil { + ev, clnt, originID, dbtItvl); err != nil { return utils.NewErrRALs(err) } else { rply.MaxUsage = &maxUsage @@ -2089,9 +2095,15 @@ func (smg *SMGeneric) BiRPCv1UpdateSession(clnt rpcclient.RpcClientConnection, if err != nil { return utils.NewErrMandatoryIeMissing(utils.OriginID) } + ev := engine.NewSafEvent(args.CGREvent.Event) + dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval + if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil { + return utils.NewErrRALs(err) + } + } if maxUsage, err := smg.UpdateSession(args.CGREvent.Tenant, - engine.NewSafEvent(args.CGREvent.Event), clnt, originID, - smg.cgrCfg.SessionSCfg().DebitInterval); err != nil { + ev, clnt, originID, dbtItvl); err != nil { return utils.NewErrRALs(err) } else { rply.MaxUsage = &maxUsage @@ -2138,9 +2150,15 @@ func (smg *SMGeneric) BiRPCv1TerminateSession(clnt rpcclient.RpcClientConnection if err != nil { return utils.NewErrMandatoryIeMissing(utils.OriginID) } + ev := engine.NewSafEvent(args.CGREvent.Event) + dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval + if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval + if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil { + return utils.NewErrRALs(err) + } + } if err = smg.TerminateSession(args.CGREvent.Tenant, - engine.NewSafEvent(args.CGREvent.Event), clnt, originID, - smg.cgrCfg.SessionSCfg().DebitInterval); err != nil { + ev, clnt, originID, dbtItvl); err != nil { return utils.NewErrRALs(err) } } diff --git a/utils/consts.go b/utils/consts.go index a0ae7065a..59ea600ee 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -538,6 +538,7 @@ const ( MetaRemoteHost = "*remote_host" Local = "local" TCP = "tcp" + CGRDebitInterval = "CGRDebitInterval" ) // Migrator Action