BUG/MINOR: http-fetch: recognize IPv6 addresses in square brackets in req.hdr_ip()
If an IPv6 address is enclosed in square brackets [], trim them before calling inet_pton(). This is to comply with RFC7239 6.1 and RFC3986 3.2.2.
This commit is contained in:
parent
d48bfb6983
commit
d1773e6881
|
@ -1024,7 +1024,15 @@ static int smp_fetch_hdr_ip(const struct arg *args, struct sample *smp, const ch
|
||||||
/* IPv4 address suffixed with ':' followed by a valid port number */
|
/* IPv4 address suffixed with ':' followed by a valid port number */
|
||||||
smp->data.type = SMP_T_IPV4;
|
smp->data.type = SMP_T_IPV4;
|
||||||
break;
|
break;
|
||||||
|
} else if (temp->area[0] == '[' && temp->area[smp->data.u.str.data-1] == ']') {
|
||||||
|
/* IPv6 address enclosed in square brackets */
|
||||||
|
temp->area[smp->data.u.str.data-1] = '\0';
|
||||||
|
if (inet_pton(AF_INET6, temp->area+1, &smp->data.u.ipv6)) {
|
||||||
|
smp->data.type = SMP_T_IPV6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else if (inet_pton(AF_INET6, temp->area, &smp->data.u.ipv6)) {
|
} else if (inet_pton(AF_INET6, temp->area, &smp->data.u.ipv6)) {
|
||||||
|
/* plain IPv6 address */
|
||||||
smp->data.type = SMP_T_IPV6;
|
smp->data.type = SMP_T_IPV6;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue