svn commit: r481788 - in head/www/squid: . files
Kurt Jaeger
pi at FreeBSD.org
Thu Oct 11 07:14:17 UTC 2018
Author: pi
Date: Thu Oct 11 07:14:16 2018
New Revision: 481788
URL: https://svnweb.freebsd.org/changeset/ports/481788
Log:
www/squid: fix bug in 4.3, no connections are accepted after ECONNABORTED
- without the fix, squid locks up every couple of hours, no longer
accept(2)-ing new connections, and needs to be restarted.
PR: 231950
Submitted by: Mark.Martinec at ijs.si
Reviewed by: Oleh Hushchenkov <gor at clogic.com.ua>
Approved by: Pavel Timofeev <timp87 at gmail.com> (maintainer)
Obtained from: https://bugs.squid-cache.org/show_bug.cgi?id=4889
Added:
head/www/squid/files/patch-src_comm_TcpAcceptor.cc (contents, props changed)
Modified:
head/www/squid/Makefile
Modified: head/www/squid/Makefile
==============================================================================
--- head/www/squid/Makefile Thu Oct 11 06:56:56 2018 (r481787)
+++ head/www/squid/Makefile Thu Oct 11 07:14:16 2018 (r481788)
@@ -2,6 +2,7 @@
PORTNAME= squid
PORTVERSION= 4.3
+PORTREVISION= 1
CATEGORIES= www ipv6
MASTER_SITES= http://www.squid-cache.org/Versions/v4/ \
http://www2.us.squid-cache.org/Versions/v4/ \
Added: head/www/squid/files/patch-src_comm_TcpAcceptor.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/squid/files/patch-src_comm_TcpAcceptor.cc Thu Oct 11 07:14:16 2018 (r481788)
@@ -0,0 +1,38 @@
+Bug 4889: No connections are accepted after ECONNABORTED
+
+Ignore ECONNABORTED errors when accepting connections. These "client
+decided not to wait for accept(2)" errors do not indicate a problem with
+the listening socket and should not lead to listening socket closure.
+
+Also polished errno checking code for non-ignored errors.
+
+Also documented a bug that prevents TcpAcceptor::acceptOne() from
+stopping to listen on non-ignored accept errors.
+
+Also documented ENFILE and EMFILE mishandling.
+
+--- src/comm/TcpAcceptor.cc.orig 2018-09-30 20:57:54.000000000 +0200
++++ src/comm/TcpAcceptor.cc 2018-10-10 18:10:05.897616000 +0200
+@@ -297,6 +297,7 @@
+ if (intendedForUserConnections())
+ logAcceptError(newConnDetails);
+ notify(flag, newConnDetails);
++ // XXX: Will not stop because doAccept() is not called asynchronously.
+ mustStop("Listener socket closed");
+ return;
+ }
+@@ -366,11 +367,12 @@
+
+ PROF_stop(comm_accept);
+
+- if (ignoreErrno(errcode)) {
++ if (ignoreErrno(errcode) || errcode == ECONNABORTED) {
+ debugs(50, 5, status() << ": " << xstrerr(errcode));
+ return Comm::NOMESSAGE;
+- } else if (ENFILE == errno || EMFILE == errno) {
++ } else if (errcode == ENFILE || errcode == EMFILE) {
+ debugs(50, 3, status() << ": " << xstrerr(errcode));
++ // XXX: These errors do not imply that we should stop listening.
+ return Comm::COMM_ERROR;
+ } else {
+ debugs(50, DBG_IMPORTANT, MYNAME << status() << ": " << xstrerr(errcode));
More information about the svn-ports-all
mailing list