From 8c8f1370e8b7e972d62a97a663a67b23d5c6d2a5 Mon Sep 17 00:00:00 2001 From: TeoV Date: Sun, 18 Nov 2018 05:04:25 -0500 Subject: [PATCH] Add protection for cdr Usage smaller than 0 --- engine/cdrs.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/engine/cdrs.go b/engine/cdrs.go index 2cbbe8e42..7eb16814c 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -217,6 +217,9 @@ func (self *CdrServer) processCdr(cdr *CDR) (err error) { if len(self.cgrCfg.CdrsCfg().CDRSOnlineCDRExports) != 0 { // Replicate raw CDR self.replicateCDRs([]*CDR{cdr}) } + if cdr.Usage < time.Duration(0) { + cdr.Usage = time.Duration(0) + } if self.rals != nil && !cdr.PreRated { // CDRs not rated will be processed by Rating go self.deriveRateStoreStatsReplicate(cdr, self.cgrCfg.CdrsCfg().CDRSStoreCdrs, true, len(self.cgrCfg.CdrsCfg().CDRSOnlineCDRExports) != 0) @@ -405,6 +408,9 @@ func (self *CdrServer) rateCDR(cdr *CDR) ([]*CDR, error) { if cdr.RequestType == utils.META_NONE { return nil, nil } + if cdr.Usage < 0 { + cdr.Usage = time.Duration(0) + } cdr.ExtraInfo = "" // Clean previous ExtraInfo, useful when re-rating var cdrsRated []*CDR _, hasLastUsed := cdr.ExtraFields[utils.LastUsed]