[PATCH] httpd: fix address family for reverse proxy client socket

Denys Vlasenko vda.linux at googlemail.com
Sun Jan 8 14:15:14 UTC 2017


Applied, thanks!

On Fri, Jan 6, 2017 at 10:03 PM, Laurent Bercot
<ska-dietlibc at skarnet.org> wrote:
>  When httpd proxies a request to another server, it first creates
> an AF_INET socket, then resolves the server name to a sockaddr,
> then connects to it. This fails if the server name resolves to
> an IPv6 address.
>  This patch ensures that the socket is created with the correct
> address family (AF_INET6 if the server resolves to an IPv6 address
> and AF_INET otherwise).
> ---
>  networking/httpd.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/networking/httpd.c b/networking/httpd.c
> index d301d598d..cfcd2a06e 100644
> --- a/networking/httpd.c
> +++ b/networking/httpd.c
> @@ -2396,12 +2396,12 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
>                 int proxy_fd;
>                 len_and_sockaddr *lsa;
>
> -               proxy_fd = socket(AF_INET, SOCK_STREAM, 0);
> -               if (proxy_fd < 0)
> -                       send_headers_and_exit(HTTP_INTERNAL_SERVER_ERROR);
>                 lsa = host2sockaddr(proxy_entry->host_port, 80);
>                 if (lsa == NULL)
>                         send_headers_and_exit(HTTP_INTERNAL_SERVER_ERROR);
> +               proxy_fd = socket(lsa->u.sa.sa_family, SOCK_STREAM, 0);
> +               if (proxy_fd < 0)
> +                       send_headers_and_exit(HTTP_INTERNAL_SERVER_ERROR);
>                 if (connect(proxy_fd, &lsa->u.sa, lsa->len) < 0)
>                         send_headers_and_exit(HTTP_INTERNAL_SERVER_ERROR);
>                 fdprintf(proxy_fd, "%s %s%s%s%s HTTP/%c.%c\r\n",
> --
> 2.11.0.rc2
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list