[master] 81aa74ccb Accept all ENET* ECONN* EHOST* errnos

Nils Goroll nils.goroll at uplex.de
Tue Mar 2 13:06:09 UTC 2021


commit 81aa74ccbd6682a69a08141e7058b001b7c47efe
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Tue Mar 2 13:59:50 2021 +0100

    Accept all ENET* ECONN* EHOST* errnos
    
    ... documented on Linux as POSIX.1
    
    The exception here is ECONNREFUSED which so far we only tolerate for
    Solaris and which seems to make sense for connect() only.
    
    To be discussed in #3539

diff --git a/lib/libvarnish/vtcp.c b/lib/libvarnish/vtcp.c
index 9ac383769..4c99beac1 100644
--- a/lib/libvarnish/vtcp.c
+++ b/lib/libvarnish/vtcp.c
@@ -604,6 +604,13 @@ VTCP_Check(ssize_t a)
 	 * some time. */
 	if (errno == ETIMEDOUT)
 		return (1);
+	/* #3539 various errnos documented on linux as POSIX.1 */
+	if (errno == ENETDOWN || errno == ENETUNREACH || errno == ENETRESET ||
+	    errno == ECONNABORTED || /* ECONNRESET see above */
+	    errno == EHOSTUNREACH || errno == EHOSTDOWN) {
+		return (1);
+	}
+
 #if (defined (__SVR4) && defined (__sun))
 	if (errno == ECONNREFUSED)	// in r02702.vtc
 		return (1);


More information about the varnish-commit mailing list