diff --git a/src/include/switch_hashtable.h b/src/include/switch_hashtable.h index 4056064a32..7bf0ea86a0 100644 --- a/src/include/switch_hashtable.h +++ b/src/include/switch_hashtable.h @@ -199,6 +199,11 @@ static inline int switch_hash_equalkeys(void *k1, void *k2) return strcmp((char *) k1, (char *) k2) ? 0 : 1; } +static inline int switch_hash_equalkeys_ci(void *k1, void *k2) +{ + return strcasecmp((char *) k1, (char *) k2) ? 0 : 1; +} + static inline uint32_t switch_hash_default(void *ky) { unsigned char *str = (unsigned char *) ky; diff --git a/src/switch_core_hash.c b/src/switch_core_hash.c index 56aee60620..80be156114 100644 --- a/src/switch_core_hash.c +++ b/src/switch_core_hash.c @@ -38,7 +38,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_hash_init_case(switch_hash_t **hash, switch_bool_t case_sensitive) { - return switch_create_hashtable(hash, 16, case_sensitive ? switch_hash_default : switch_hash_default_ci, switch_hash_equalkeys); + if (case_sensitive) { + return switch_create_hashtable(hash, 16, switch_hash_default, switch_hash_equalkeys); + } else { + return switch_create_hashtable(hash, 16, switch_hash_default_ci, switch_hash_equalkeys_ci); + } }