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().
#include "fde.h"
#include "icmp/net_db.h"
#include "ipcache.h"
+#include "ip/tools.h"
#include "SquidTime.h"
CBDATA_NAMESPACED_CLASS_INIT(Comm, ConnOpener);
/* 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);