/net-proxy/squid/files/squid-3.1.6-bug3011.patch
https://github.com/mikehale/portage · Patch · 116 lines · 106 code · 10 blank · 0 comment · 0 complexity · 128dd4707877e77efd982d661a7b2d4e MD5 · raw file
- diff -ur ./src/dns_internal.cc /var/tmp/squid-3.1.6/src/dns_internal.cc
- --- ./src/dns_internal.cc 2010-08-01 22:01:37.000000000 +0800
- +++ /var/tmp/squid-3.1.6/src/dns_internal.cc 2010-08-10 19:31:46.000000000 +0800
- @@ -201,10 +201,15 @@
-
- if (A.IsAnyAddr()) {
- debugs(78, 0, "WARNING: Squid does not accept " << A << " in DNS server specifications.");
- - A = "127.0.0.1";
- + A.SetLocalhost();
- debugs(78, 0, "Will be using " << A << " instead, assuming you meant that DNS is running on the same machine");
- }
-
- + if (!Ip::EnableIpv6 && !A.SetIPv4()) {
- + debugs(78, DBG_IMPORTANT, "WARNING: IPv6 is disabled. Discarding " << A << " in DNS server specifications.");
- + return;
- + }
- +
- if (nns == nns_alloc) {
- int oldalloc = nns_alloc;
- ns *oldptr = nameservers;
- @@ -742,6 +747,12 @@
- else
- addr = Config.Addrs.udp_incoming;
-
- + if (nameservers[ns].S.IsIPv4() && !addr.SetIPv4()) {
- + debugs(31, DBG_CRITICAL, "ERROR: Cannot contact DNS nameserver " << nameservers[ns].S << " from " << addr);
- + addr.SetAnyAddr();
- + addr.SetIPv4();
- + }
- +
- vc->queue = new MemBuf;
-
- vc->msg = new MemBuf;
- diff -ur ./src/forward.cc /var/tmp/squid-3.1.6/src/forward.cc
- --- ./src/forward.cc 2010-08-01 22:01:37.000000000 +0800
- +++ /var/tmp/squid-3.1.6/src/forward.cc 2010-08-10 19:31:46.000000000 +0800
- @@ -870,9 +870,9 @@
-
- // if IPv6 is disabled try to force IPv4-only outgoing.
- if (!Ip::EnableIpv6 && !outgoing.SetIPv4()) {
- - debugs(50, 4, "fwdConnectStart: " << xstrerror());
- + debugs(50, 4, "fwdConnectStart: IPv6 is Disabled. Cannot connect from " << outgoing);
- ErrorState *anErr = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE, request);
- - anErr->xerrno = errno;
- + anErr->xerrno = EAFNOSUPPORT;
- fail(anErr);
- self = NULL; // refcounted
- return;
- diff -ur ./src/neighbors.cc /var/tmp/squid-3.1.6/src/neighbors.cc
- --- ./src/neighbors.cc 2010-08-01 22:01:38.000000000 +0800
- +++ /var/tmp/squid-3.1.6/src/neighbors.cc 2010-08-10 19:49:16.000000000 +0800
- @@ -46,6 +46,7 @@
- #include "Store.h"
- #include "icmp/net_db.h"
- #include "ip/IpAddress.h"
- +#include "ip/tools.h"
-
- /* count mcast group peers every 15 minutes */
- #define MCAST_COUNT_RATE 900
- @@ -1387,6 +1388,20 @@
-
- IpAddress temp(getOutgoingAddr(NULL,p));
-
- + // if IPv6 is disabled try to force IPv4-only outgoing.
- + if (!Ip::EnableIpv6 && !temp.SetIPv4()) {
- + debugs(50, DBG_IMPORTANT, "WARNING: IPv6 is disabled. Failed to use " << temp << " to probe " << p->host);
- + return ret;
- + }
- +
- + // if IPv6 is split-stack, prefer IPv4
- + if (Ip::EnableIpv6&IPV6_SPECIAL_SPLITSTACK) {
- + // NP: This is not a great choice of default,
- + // but with the current Internet being IPv4-majority has a higher success rate.
- + // if setting to IPv4 fails we dont care, that just means to use IPv6 outgoing.
- + temp.SetIPv4();
- + }
- +
- fd = comm_open(SOCK_STREAM, IPPROTO_TCP, temp, COMM_NONBLOCKING, p->host);
-
- if (fd < 0)
- diff -ur ./src/tunnel.cc /var/tmp/squid-3.1.6/src/tunnel.cc
- --- ./src/tunnel.cc 2010-08-01 22:01:38.000000000 +0800
- +++ /var/tmp/squid-3.1.6/src/tunnel.cc 2010-08-10 20:02:46.000000000 +0800
- @@ -46,6 +46,7 @@
- #include "client_side.h"
- #include "MemBuf.h"
- #include "http.h"
- +#include "ip/tools.h"
-
- class TunnelStateData
- {
- @@ -641,6 +642,24 @@
- statCounter.server.other.requests++;
- /* Create socket. */
- IpAddress temp = getOutgoingAddr(request,NULL);
- +
- + // if IPv6 is disabled try to force IPv4-only outgoing.
- + if (!Ip::EnableIpv6 && !temp.SetIPv4()) {
- + debugs(50, 4, "tunnelStart: IPv6 is Disabled. Tunnel failed from " << temp);
- + err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE, request);
- + err->xerrno = EAFNOSUPPORT;
- + errorSend(fd, err);
- + return;
- + }
- +
- + // if IPv6 is split-stack, prefer IPv4
- + if (Ip::EnableIpv6&IPV6_SPECIAL_SPLITSTACK) {
- + // NP: This is not a great choice of default,
- + // but with the current Internet being IPv4-majority has a higher success rate.
- + // if setting to IPv4 fails we dont care, that just means to use IPv6 outgoing.
- + temp.SetIPv4();
- + }
- +
- int flags = COMM_NONBLOCKING;
- if (request->flags.spoof_client_ip) {
- flags |= COMM_TRANSPARENT;