]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_sorcery_realtime: Fix regex regression. 51/2151/1
authorMark Michelson <mmichelson@digium.com>
Tue, 2 Feb 2016 16:52:29 +0000 (10:52 -0600)
committerMark Michelson <mmichelson@digium.com>
Tue, 2 Feb 2016 21:01:37 +0000 (15:01 -0600)
A regression was introduced where searching for realtime PJSIP objects
by regex by starting the regex with a leading "^" would cause no items
to be returned.

This was due to a change which attempted to drop the requirement for a
leading "^" to be present due to how some CLI commands formulate their
regexes. However, the change, rather than simply eliminating the
requirement, caused any regexes that did begin with "^" to end up not
returning the expected results.

This change fixes the problem by inspecting the regex and formulating
the realtime query differently depending on if it begins with "^".

ASTERISK-25702 #close
Reported by Nic Colledge

Patches:
    realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691

Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693

res/res_sorcery_realtime.c

index 1a30e0c59085f4bea841bd1b8c5d305e611d194c..83736a102b845eb9a3f4c29a5c0efce02a42fe76 100644 (file)
@@ -223,7 +223,11 @@ static void sorcery_realtime_retrieve_regex(const struct ast_sorcery *sorcery, v
 
        /* The realtime API provides no direct ability to do regex so for now we support a limited subset using pattern matching */
        snprintf(field, sizeof(field), "%s LIKE", UUID_FIELD);
-       snprintf(value, sizeof(value), "%%%s%%", regex);
+       if (regex[0] == '^') {
+               snprintf(value, sizeof(value), "%s%%", regex + 1);
+       } else {
+               snprintf(value, sizeof(value), "%%%s%%", regex);
+       }
 
        if (!(fields = ast_variable_new(field, value, ""))) {
                return;