mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 08:13:22 +00:00
pjsip_distributor.c: Fix unidentified_requests hash functions.
The OBJ_SEARCH_xxx defines should not be used as if they were individual bits. They represent a multi-bit enumeration value field. Change-Id: I32abc9a475396dab02402a7014357dd94284e17b
This commit is contained in:
@@ -837,7 +837,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:
|
||||||
@@ -852,15 +852,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)
|
||||||
|
Reference in New Issue
Block a user