]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix ConnOpener IPv6 awareness
authorAmos Jeffries <squid3@treenet.co.nz>
Wed, 16 Jan 2013 07:30:47 +0000 (20:30 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 16 Jan 2013 07:30:47 +0000 (20:30 +1300)
When updating IPv6 support for split-stack one USE_IPV6 wrapper was
omitted conversion to the EnabledIpv6 stack auto-detect mechanism.
This resulted in IPv6 addresses being mis-converted on split-stack
systems or with IPv6 disabled in the kernel and --enable-ipv6 built.

The visible symptom is "assert(FALSE)" in Ip::Address::GetAddrInfo().

src/comm/ConnOpener.cc

index 0cb62c434acba5d3b199be509f608ae6dcf4cf97..90ac796e3498e27d50d1c156f639893ff2d90a70 100644 (file)
@@ -165,12 +165,10 @@ Comm::ConnOpener::start()
 
     /* get a socket open ready for connecting with */
     if (temporaryFd_ < 0) {
-#if USE_IPV6
         /* outbound sockets have no need to be protocol agnostic. */
-        if (conn_->remote.IsIPv4()) {
+        if (!(Ip::EnableIpv6&IPV6_SPECIAL_V4MAPPING) && conn_->remote.IsIPv4()) {
             conn_->local.SetIPv4();
         }
-#endif
         temporaryFd_ = comm_openex(SOCK_STREAM, IPPROTO_TCP, conn_->local, conn_->flags, conn_->tos, conn_->nfmark, host_);
         if (temporaryFd_ < 0) {
             doneConnecting(COMM_ERR_CONNECT, 0);