mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-02-15 22:31:29 +01:00
MINOR: dns: new flag to report that no IP can be found in a DNS response packet
Some DNS response may be valid from a protocol point of view but may not contain any IP addresses. This patch gives a new flag to the function dns_get_ip_from_response to report such case. It's up to the upper layer to decide what to do with this information.
This commit is contained in:
parent
96972bcd36
commit
0453a1dd45
@ -212,6 +212,7 @@ enum {
|
||||
* matching preference was found */
|
||||
DNS_UPD_CNAME, /* CNAME without any IP provided in the response */
|
||||
DNS_UPD_NAME_ERROR, /* name in the response did not match the query */
|
||||
DNS_UPD_NO_IP_FOUND, /* no IP could be found in the response */
|
||||
};
|
||||
|
||||
#endif /* _TYPES_DNS_H */
|
||||
|
||||
@ -724,6 +724,11 @@ int dns_get_ip_from_response(unsigned char *resp, unsigned char *resp_end,
|
||||
return DNS_UPD_CNAME;
|
||||
}
|
||||
|
||||
/* no IP found in the response */
|
||||
if (!newip4 && !newip6) {
|
||||
return DNS_UPD_NO_IP_FOUND;
|
||||
}
|
||||
|
||||
/* case when the caller looks first for an IPv4 address */
|
||||
if (family_priority == AF_INET) {
|
||||
if (newip4) {
|
||||
|
||||
@ -2049,6 +2049,13 @@ int snr_resolution_cb(struct dns_resolution *resolution, struct dns_nameserver *
|
||||
}
|
||||
goto invalid;
|
||||
|
||||
case DNS_UPD_NO_IP_FOUND:
|
||||
if (resolution->status != RSLV_STATUS_OTHER) {
|
||||
resolution->status = RSLV_STATUS_OTHER;
|
||||
resolution->last_status_change = now_ms;
|
||||
}
|
||||
goto stop_resolution;
|
||||
|
||||
default:
|
||||
goto invalid;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user