|
|
@ -827,7 +827,7 @@ static int suspects_compare(void *obj, void *arg, int flags)
|
|
|
|
/* Fall through */
|
|
|
|
/* Fall through */
|
|
|
|
case OBJ_SEARCH_KEY:
|
|
|
|
case OBJ_SEARCH_KEY:
|
|
|
|
if (strcmp(object_left->src_name, right_key) == 0) {
|
|
|
|
if (strcmp(object_left->src_name, right_key) == 0) {
|
|
|
|
cmp = CMP_MATCH | CMP_STOP;
|
|
|
|
cmp = CMP_MATCH;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case OBJ_SEARCH_PARTIAL_KEY:
|
|
|
|
case OBJ_SEARCH_PARTIAL_KEY:
|
|
|
@ -842,15 +842,25 @@ static int suspects_compare(void *obj, void *arg, int flags)
|
|
|
|
return cmp;
|
|
|
|
return cmp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int suspects_hash(const void *obj, int flags) {
|
|
|
|
static int suspects_hash(const void *obj, int flags)
|
|
|
|
const struct unidentified_request *object_left = obj;
|
|
|
|
{
|
|
|
|
|
|
|
|
const struct unidentified_request *object;
|
|
|
|
|
|
|
|
const char *key;
|
|
|
|
|
|
|
|
|
|
|
|
if (flags & OBJ_SEARCH_OBJECT) {
|
|
|
|
switch (flags & OBJ_SEARCH_MASK) {
|
|
|
|
return ast_str_hash(object_left->src_name);
|
|
|
|
case OBJ_SEARCH_KEY:
|
|
|
|
} else if (flags & OBJ_SEARCH_KEY) {
|
|
|
|
key = obj;
|
|
|
|
return ast_str_hash(obj);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_SEARCH_OBJECT:
|
|
|
|
|
|
|
|
object = obj;
|
|
|
|
|
|
|
|
key = object->src_name;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
/* Hash can only work on something with a full key. */
|
|
|
|
|
|
|
|
ast_assert(0);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
return ast_str_hash(key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static struct ao2_container *cli_unid_get_container(const char *regex)
|
|
|
|
static struct ao2_container *cli_unid_get_container(const char *regex)
|
|
|
|