_Intermittent_ NAT/TPROXY lookup failures can happen for several reasons
outside Squid control. For example, flushing conntrack tables under load
is likely to trigger such errors. Squid should not stop listening if
there is a good change that the next accept(2) will be fully successful.
We already apply the same logic to several other accept problems today.
Also added an XXX that TcpAcceptor::mustStop() does not work as expected
on error.
if (intendedForUserConnections())
logAcceptError(newConnDetails);
notify(flag, newConnDetails);
+ // XXX: not under async job call protections
mustStop("Listener socket closed");
return;
}
// Perform NAT or TPROXY operations to retrieve the real client/dest IP addresses
if (conn->flags&(COMM_TRANSPARENT|COMM_INTERCEPTION) && !Ip::Interceptor.Lookup(details, conn)) {
debugs(50, DBG_IMPORTANT, "ERROR: NAT/TPROXY lookup failed to locate original IPs on " << details);
- // Failed.
- return Comm::COMM_ERROR;
+ return Comm::NOMESSAGE;
}
#if USE_SQUID_EUI