main/pbx: Resolve case sensitivity regression in PBX hints
authorMatt Jordan <mjordan@digium.com>
Sat, 27 Jun 2015 01:38:58 +0000 (20:38 -0500)
committerMatt Jordan <mjordan@digium.com>
Sat, 27 Jun 2015 02:05:38 +0000 (21:05 -0500)
When 8297136f was merged for ASTERISK-25040, a regression was introduced
surrounding the case sensitivity of device names within hints.
Previously, device names - such as 'sip/foo' - were compared in a case
insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After
that patch, only the case sensitive name would match, i.e., 'SIP/foo'.
As a result, some dialplan hints stopped working.

This patch re-introduces case insensitive matching for device names in
hints.

ASTERISK-25040

ASTERISK-25202 #close

Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c
(cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03)

main/pbx.c

index 0da0fef..8e298bd 100644 (file)
@@ -1119,7 +1119,7 @@ static int hintdevice_cmp_multiple(void *obj, void *arg, int flags)
                right_key = right->hintdevice;
                /* Fall through */
        case OBJ_SEARCH_KEY:
-               cmp = strcmp(left->hintdevice, right_key);
+               cmp = strcasecmp(left->hintdevice, right_key);
                break;
        case OBJ_SEARCH_PARTIAL_KEY:
                /*
@@ -1143,7 +1143,7 @@ static int hintdevice_remove_cb(void *obj, void *arg, void *data, int flags)
        char *device = arg;
        struct ast_hint *hint = data;
 
-       if (!strcmp(candidate->hintdevice, device)
+       if (!strcasecmp(candidate->hintdevice, device)
                && candidate->hint == hint) {
                return CMP_MATCH;
        }