From 4a74954e3505ef1968621594e380eda2ee4a949c Mon Sep 17 00:00:00 2001 From: DanB Date: Tue, 5 Dec 2017 14:28:41 +0100 Subject: [PATCH] ParseZeroRatingSubject adding time unit if missing, fixes #840 --- utils/coreutils.go | 3 +++ utils/coreutils_test.go | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/utils/coreutils.go b/utils/coreutils.go index 7599de56e..96e3229fd 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -329,6 +329,9 @@ func ParseZeroRatingSubject(tor, rateSubj string) (time.Duration, error) { return 0, errors.New("malformed rating subject: " + rateSubj) } durStr := rateSubj[len(ZERO_RATING_SUBJECT_PREFIX):] + if _, err := strconv.ParseFloat(durStr, 64); err == nil { // No time unit, postpend + durStr += "ns" + } return time.ParseDuration(durStr) } diff --git a/utils/coreutils_test.go b/utils/coreutils_test.go index 962dc3e3b..69fdb5baf 100644 --- a/utils/coreutils_test.go +++ b/utils/coreutils_test.go @@ -413,8 +413,9 @@ func TestMinDuration(t *testing.T) { } func TestParseZeroRatingSubject(t *testing.T) { - subj := []string{"", "*zero1s", "*zero5m", "*zero10h"} - dur := []time.Duration{time.Second, time.Second, 5 * time.Minute, 10 * time.Hour} + subj := []string{"", "*zero1024", "*zero1s", "*zero5m", "*zero10h"} + dur := []time.Duration{time.Second, time.Duration(1024), + time.Second, 5 * time.Minute, 10 * time.Hour} for i, s := range subj { if d, err := ParseZeroRatingSubject(VOICE, s); err != nil || d != dur[i] { t.Error("Error parsing rating subject: ", s, d, err)