From f8269bcccff21ca7d3e595ebf7a8f0418f8e2b55 Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 17 Mar 2016 19:11:48 +0100 Subject: [PATCH] SMGeneric error handling fixes --- agents/dmtagent_it_test.go | 2 +- sessionmanager/smgeneric.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/agents/dmtagent_it_test.go b/agents/dmtagent_it_test.go index b8fc04911..eff5e81ee 100644 --- a/agents/dmtagent_it_test.go +++ b/agents/dmtagent_it_test.go @@ -231,7 +231,7 @@ func TestDmtAgentSendCCRInit(t *testing.T) { OriginID: "testccr1", OriginHost: "192.168.1.1", Source: utils.UNIT_TEST, RequestType: utils.META_RATED, Direction: "*out", Tenant: "cgrates.org", Category: "call", Account: "1001", Subject: "1001", Destination: "1004", Supplier: "SUPPL1", SetupTime: time.Date(2015, 11, 7, 8, 42, 20, 0, time.UTC), AnswerTime: time.Date(2015, 11, 7, 8, 42, 26, 0, time.UTC), RunID: utils.DEFAULT_RUNID, - Usage: time.Duration(0) * time.Second, PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"}, + Usage: time.Duration(0), PDD: time.Duration(7) * time.Second, ExtraFields: map[string]string{"Service-Context-Id": "voice@huawei.com"}, } ccr := storedCdrToCCR(cdr, "UNIT_TEST", daCfg.DiameterAgentCfg().OriginRealm, daCfg.DiameterAgentCfg().VendorId, daCfg.DiameterAgentCfg().ProductName, utils.DIAMETER_FIRMWARE_REVISION, daCfg.DiameterAgentCfg().DebitInterval, false) diff --git a/sessionmanager/smgeneric.go b/sessionmanager/smgeneric.go index ac4285df3..f18036b44 100644 --- a/sessionmanager/smgeneric.go +++ b/sessionmanager/smgeneric.go @@ -170,11 +170,14 @@ func (self *SMGeneric) GetLcrSuppliers(gev SMGenericEvent, clnt *rpc2.Client) ([ // Execute debits for usage/maxUsage func (self *SMGeneric) SessionUpdate(gev SMGenericEvent, clnt *rpc2.Client) (time.Duration, error) { evLastUsed, err := gev.GetLastUsed(utils.META_DEFAULT) - if err != nil { + if err != nil && err != utils.ErrNotFound { return nilDuration, err } evMaxUsage, err := gev.GetMaxUsage(utils.META_DEFAULT, self.cgrCfg.MaxCallDuration) if err != nil { + if err == utils.ErrNotFound { + err = utils.ErrMandatoryIeMissing + } return nilDuration, err } evUuid := gev.GetUUID() @@ -206,6 +209,9 @@ func (self *SMGeneric) SessionEnd(gev SMGenericEvent, clnt *rpc2.Client) error { } lastUsed, err := gev.GetLastUsed(utils.META_DEFAULT) if err != nil { + if err == utils.ErrNotFound { + err = utils.ErrMandatoryIeMissing + } return err } var s *SMGSession