mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 11:58:40 +00:00
Merge "dns_srv: Fix SRV sorting when records with priority zero exist with non-zero."
This commit is contained in:
@@ -112,13 +112,15 @@ void dns_srv_sort(struct ast_dns_result *result)
|
|||||||
struct dns_records newlist = AST_LIST_HEAD_NOLOCK_INIT_VALUE;
|
struct dns_records newlist = AST_LIST_HEAD_NOLOCK_INIT_VALUE;
|
||||||
|
|
||||||
while (AST_LIST_FIRST(&result->records)) {
|
while (AST_LIST_FIRST(&result->records)) {
|
||||||
unsigned short cur_priority = 0;
|
unsigned short cur_priority = ((struct ast_dns_srv_record *)(AST_LIST_FIRST(&result->records)))->priority;
|
||||||
struct dns_records temp_list = AST_LIST_HEAD_NOLOCK_INIT_VALUE;
|
struct dns_records temp_list = AST_LIST_HEAD_NOLOCK_INIT_VALUE;
|
||||||
|
|
||||||
/* Find the lowest current priority to work on */
|
/* Find the lowest current priority to work on, but if the priority is already zero there is no lower priority */
|
||||||
AST_LIST_TRAVERSE(&result->records, current, list) {
|
if (cur_priority) {
|
||||||
if (!cur_priority || ((struct ast_dns_srv_record *)current)->priority < cur_priority) {
|
AST_LIST_TRAVERSE(&result->records, current, list) {
|
||||||
cur_priority = ((struct ast_dns_srv_record *)current)->priority;
|
if (((struct ast_dns_srv_record *)current)->priority < cur_priority) {
|
||||||
|
cur_priority = ((struct ast_dns_srv_record *)current)->priority;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user