diff --git a/engine/filters.go b/engine/filters.go index 4ff103f4d..0fcacacbe 100644 --- a/engine/filters.go +++ b/engine/filters.go @@ -549,7 +549,7 @@ func (fltr *FilterRule) passRSR(dDP utils.DataProvider) (bool, error) { } return false, err } - match := fltr.rsrFilters.Pass(fld, true) + match := fltr.rsrFilters.Pass(fld, false) return match, nil } diff --git a/engine/filters_test.go b/engine/filters_test.go index 56146110f..9e2b5a0ae 100644 --- a/engine/filters_test.go +++ b/engine/filters_test.go @@ -2042,3 +2042,24 @@ func TestFiltersPassGreaterThanFailParseValues(t *testing.T) { t.Errorf("\nexpected: <%+v>, \nreceived: <%+v>", false, rcv) } } + +func TestFilterPassRSRFieldsWithMultplieValues(t *testing.T) { + ev := utils.MapStorage{ + utils.MetaReq: utils.MapStorage{ + "23": "sip:11561561561561568@dan", + }, + } + cfg := config.NewDefaultCGRConfig() + dm := NewDataManager(NewInternalDB(nil, nil, true), cfg.CacheCfg(), nil) + flts := NewFilterS(cfg, nil, dm) + if passes, err := flts.Pass("cgrate.org", []string{"*rsr:~*req.23:dan|1001"}, ev); err != nil { + t.Error(err) + } else if !passes { + t.Error("Not passing") + } + if passes, err := flts.Pass("cgrate.org", []string{"*rsr:~*req.23:dan"}, ev); err != nil { + t.Error(err) + } else if !passes { + t.Error("Not passing") + } +}