From 7da22087bc0c161710d2a6b892a5878f07b42c1d Mon Sep 17 00:00:00 2001 From: Alexis Robert Date: Mon, 24 Jun 2013 01:42:35 -0600 Subject: [PATCH] Fix Ip::Address::operator =(sockaddr_storage) The memcpy() for AF_INET6 is using a length of sizeof(sockaddr_in) instead of sizeof(sockaddr_in6), so squid was trying to connect to truncatured IPv6 addresses with strange ports. --- src/ip/Address.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ip/Address.cc b/src/ip/Address.cc index 6dbd1512e1..2338a3cab7 100644 --- a/src/ip/Address.cc +++ b/src/ip/Address.cc @@ -406,7 +406,7 @@ Ip::Address::operator =(const struct sockaddr_storage &s) { /* some AF_* magic to tell socket types apart and what we need to do */ if (s.ss_family == AF_INET6) { - memcpy(&mSocketAddr_, &s, sizeof(struct sockaddr_in)); + memcpy(&mSocketAddr_, &s, sizeof(struct sockaddr_in6)); } else { // convert it to our storage mapping. struct sockaddr_in *sin = (struct sockaddr_in*)&s; mSocketAddr_.sin6_port = sin->sin_port; -- 2.47.2