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
changes/54/5054/2
Sean Bright 8 years ago
parent 16b0bb39c1
commit fc70ca9499

@ -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",

Loading…
Cancel
Save