mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-16 10:40:58 +00:00
BUG/MINOR: dns: allow srv record weight set to 0
Processing of SRV record weight was inaccurate and when a SRV record's weight was set to 0, HAProxy enforced it to '1'. This patch aims at fixing this without breaking compability with previous behavior. Backport status: 1.8 to 2.0
This commit is contained in:
parent
04068a1939
commit
25e6fc2030
16
src/dns.c
16
src/dns.c
@ -543,10 +543,12 @@ static void dns_check_dns_response(struct dns_resolution *res)
|
||||
!memcmp(srv->hostname_dn, item->target, item->data_len)) {
|
||||
int ha_weight;
|
||||
|
||||
/* Make sure weight is at least 1, so
|
||||
* that the server will be used.
|
||||
/* DNS weight range if from 0 to 65535
|
||||
* HAProxy weight is from 0 to 256
|
||||
* The rule below ensures that weight 0 is well respected
|
||||
* while allowing a "mapping" from DNS weight into HAProxy's one.
|
||||
*/
|
||||
ha_weight = item->weight / 256 + 1;
|
||||
ha_weight = (item->weight + 255) / 256;
|
||||
if (srv->uweight != ha_weight) {
|
||||
char weight[9];
|
||||
|
||||
@ -590,10 +592,12 @@ static void dns_check_dns_response(struct dns_resolution *res)
|
||||
!(srv->flags & SRV_F_CHECKPORT))
|
||||
srv->check.port = item->port;
|
||||
|
||||
/* Make sure weight is at least 1, so
|
||||
* that the server will be used.
|
||||
/* DNS weight range if from 0 to 65535
|
||||
* HAProxy weight is from 0 to 256
|
||||
* The rule below ensures that weight 0 is well respected
|
||||
* while allowing a "mapping" from DNS weight into HAProxy's one.
|
||||
*/
|
||||
ha_weight = item->weight / 256 + 1;
|
||||
ha_weight = (item->weight + 255) / 256;
|
||||
|
||||
snprintf(weight, sizeof(weight), "%d", ha_weight);
|
||||
server_parse_weight_change_request(srv, weight);
|
||||
|
Loading…
Reference in New Issue
Block a user