summaryrefslogtreecommitdiff
path: root/pbx
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-02-21 16:09:47 -0500
committerSean Bright <sean.bright@gmail.com>2017-02-21 17:10:34 -0600
commitfc70ca9499c26329950f044838209c6bade3f54c (patch)
tree357966d739df292e32f0bab7d1c6e0d16d1f7632 /pbx
parent16b0bb39c13e75b4d01c00aebb1d61b83f919a76 (diff)
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
Diffstat (limited to 'pbx')
-rw-r--r--pbx/pbx_dundi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c
index 50a91605e..58086aa81 100644
--- a/pbx/pbx_dundi.c
+++ b/pbx/pbx_dundi.c
@@ -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",