diff --git a/engine/filters.go b/engine/filters.go index be4e96178..e54afc29d 100644 --- a/engine/filters.go +++ b/engine/filters.go @@ -514,7 +514,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 1650ab606..998d9c247 100644 --- a/engine/filters_test.go +++ b/engine/filters_test.go @@ -1086,3 +1086,24 @@ func TestAPIBan(t *testing.T) { t.Errorf("Expected error %s received: %v", expErr, err) } } + +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(context.Background(), "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(context.Background(), "cgrate.org", []string{"*rsr:~*req.23:dan"}, ev); err != nil { + t.Error(err) + } else if !passes { + t.Error("Not passing") + } +}