diff options
author | Mark Michelson <mmichelson@digium.com> | 2016-02-02 10:52:29 -0600 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2016-02-02 10:52:29 -0600 |
commit | 32fc784284b570a05841d95c6d9a373b4bf3a35d (patch) | |
tree | 0fd7a2d9fa51edf0ecd7d6d09ec185bdfbfbe4a8 /res/res_sorcery_realtime.c | |
parent | f6551868be4443da8ecf81d91b9407a834db281d (diff) |
res_sorcery_realtime: Fix regex regression.
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
Diffstat (limited to 'res/res_sorcery_realtime.c')
-rw-r--r-- | res/res_sorcery_realtime.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/res/res_sorcery_realtime.c b/res/res_sorcery_realtime.c index eb790e57e..b16069bc0 100644 --- a/res/res_sorcery_realtime.c +++ b/res/res_sorcery_realtime.c @@ -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; |