mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 11:25:35 +00:00
pbx_dundi: DUNDi weight parameter not processed correctly
The DUNDi weight field is not always converted from network byte order to host byte order. This can result in incorrect weight values and incorrect selection of DUNDi destinations. ASTERISK-18731 #close Reported by: Peter Racz Patches: dundi_weight.patch (license #6290) patch uploaded by Peter Racz Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be
This commit is contained in:
@@ -992,9 +992,9 @@ static int dundi_prop_precache(struct dundi_transaction *trans, struct dundi_ies
|
||||
sizeof(trans->parent->dr[trans->parent->respcount].tech));
|
||||
trans->parent->respcount++;
|
||||
ast_clear_flag_nonstd(trans->parent->hmd, DUNDI_HINT_DONT_ASK);
|
||||
} else if (trans->parent->dr[z].weight > ies->answers[x]->weight) {
|
||||
} else if (trans->parent->dr[z].weight > ntohs(ies->answers[x]->weight)) {
|
||||
/* Update weight if appropriate */
|
||||
trans->parent->dr[z].weight = ies->answers[x]->weight;
|
||||
trans->parent->dr[z].weight = ntohs(ies->answers[x]->weight);
|
||||
}
|
||||
} else
|
||||
ast_log(LOG_NOTICE, "Dropping excessive answers in precache for %s@%s\n",
|
||||
@@ -1762,9 +1762,9 @@ static int handle_command_response(struct dundi_transaction *trans, struct dundi
|
||||
sizeof(trans->parent->dr[trans->parent->respcount].tech));
|
||||
trans->parent->respcount++;
|
||||
ast_clear_flag_nonstd(trans->parent->hmd, DUNDI_HINT_DONT_ASK);
|
||||
} else if (trans->parent->dr[z].weight > ies.answers[x]->weight) {
|
||||
} else if (trans->parent->dr[z].weight > ntohs(ies.answers[x]->weight)) {
|
||||
/* Update weight if appropriate */
|
||||
trans->parent->dr[z].weight = ies.answers[x]->weight;
|
||||
trans->parent->dr[z].weight = ntohs(ies.answers[x]->weight);
|
||||
}
|
||||
} else
|
||||
ast_log(LOG_NOTICE, "Dropping excessive answers to request for %s@%s\n",
|
||||
|
Reference in New Issue
Block a user