diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 118078e34..c91c0bce3 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -97,7 +97,7 @@ func startMediator(responder *engine.Responder, loggerDb engine.LogStorage, cdrD var err error for i := 0; i < cfg.MediatorRaterReconnects; i++ { - client, err = rpcclient.NewRpcClient("tcp", cfg.MediatorRater, 0, 3, utils.GOB) + client, err = rpcclient.NewRpcClient("tcp", cfg.MediatorRater, 0, cfg.MediatorRaterReconnects, utils.GOB) if err == nil { //Connected so no need to reiterate break } @@ -150,7 +150,7 @@ func startSessionManager(responder *engine.Responder, loggerDb engine.LogStorage var err error for i := 0; i < cfg.SMRaterReconnects; i++ { - client, err = rpcclient.NewRpcClient("tcp", cfg.SMRater, 0, 3, utils.GOB) + client, err = rpcclient.NewRpcClient("tcp", cfg.SMRater, 0, cfg.SMRaterReconnects, utils.GOB) if err == nil { //Connected so no need to reiterate break } diff --git a/utils/rsrfield.go b/utils/rsrfield.go index 20ceaaac5..4f4fa604b 100644 --- a/utils/rsrfield.go +++ b/utils/rsrfield.go @@ -48,17 +48,17 @@ func NewRSRField(fldStr string) (*RSRField, error) { spltRgxp := regexp.MustCompile(`:s\/`) spltRules := spltRgxp.Split(fldStr, -1) if len(spltRules) < 2 { - return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr) + return nil, fmt.Errorf("Invalid Split of Search&Replace field rule. %s", fldStr) } rsrField := &RSRField{Id: spltRules[0][1:]} // Original id in form ~hdr_name - rulesRgxp := regexp.MustCompile(`(?:(.+[^\\])\/(.+[^\\])*\/){1,}`) + rulesRgxp := regexp.MustCompile(`(?:(.+[^\\])\/(.*[^\\])*\/){1,}`) for _, ruleStr := range spltRules[1:] { // :s/ already removed through split allMatches := rulesRgxp.FindStringSubmatch(ruleStr) if len(allMatches) != 3 { - return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr) + return nil, fmt.Errorf("Not enough members in Search&Replace, ruleStr: %s, matches: %v, ", ruleStr, allMatches) } if srRegexp, err := regexp.Compile(allMatches[1]); err != nil { - return nil, fmt.Errorf("Invalid Search&Replace field rule. %s", fldStr) + return nil, fmt.Errorf("Invalid Search&Replace subfield rule: %s", allMatches[1]) } else { rsrField.RSRules = append(rsrField.RSRules, &ReSearchReplace{SearchRegexp: srRegexp, ReplaceTemplate: allMatches[2]}) } diff --git a/utils/rsrfield_test.go b/utils/rsrfield_test.go index 2eca3667d..6b9339aab 100644 --- a/utils/rsrfield_test.go +++ b/utils/rsrfield_test.go @@ -65,6 +65,9 @@ func TestNewRSRFieldIvo(t *testing.T) { } else if !reflect.DeepEqual(rsrField, expectRSRField) { t.Errorf("Unexpected RSRField received: %v", rsrField) } + if _, err := NewRSRField(`~account:s/^[A-Za-z0-9]*[c|a]\d{4}$/S/:s/^[A-Za-z0-9]*n\d{4}$/C/:s/^\d{10}$//`); err != nil { + t.Error(err) + } } func TestConvertPlusNationalAnd00(t *testing.T) {