From 2338caf3742f3414dcd1bbda7d8a7b249fca4e19 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 7 Dec 2012 13:55:39 +0100 Subject: [PATCH] limitmap local:* matches against all metadata fields --- src/session.c | 30 ++++++++++++++++++++++-------- test/test_limit_limitmap_settings_3.xml | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/session.c b/src/session.c index f3e71fe..8deded8 100644 --- a/src/session.c +++ b/src/session.c @@ -1681,17 +1681,31 @@ static int check_limit_local(struct client *cl, if (!name) break; - md_field_id = conf_service_metadata_field_id(service, name); - if (md_field_id < 0) + if (!strcmp(name, "*")) { - skip_record = 1; - break; + for (md_field_id = 0; md_field_id < service->num_metadata; + md_field_id++) + { + if (match_metadata_local(record, service, md_field_id, + values, num_v)) + break; + } + if (md_field_id == service->num_metadata) + skip_record = 1; } - if (!match_metadata_local(record, service, md_field_id, - values, num_v)) + else { - skip_record = 1; - break; + md_field_id = conf_service_metadata_field_id(service, name); + if (md_field_id < 0) + { + skip_record = 1; + break; + } + if (!match_metadata_local(record, service, md_field_id, + values, num_v)) + { + skip_record = 1; + } } } nmem_destroy(nmem_tmp); diff --git a/test/test_limit_limitmap_settings_3.xml b/test/test_limit_limitmap_settings_3.xml index 43bfdee..dd27d89 100644 --- a/test/test_limit_limitmap_settings_3.xml +++ b/test/test_limit_limitmap_settings_3.xml @@ -1,5 +1,5 @@ - + -- 1.7.10.4