diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/squid/APKBUILD | 6 | ||||
-rw-r--r-- | main/squid/bug-3678.patch | 62 | ||||
-rw-r--r-- | main/squid/bug-3679.patch | 15 |
3 files changed, 82 insertions, 1 deletions
diff --git a/main/squid/APKBUILD b/main/squid/APKBUILD index 1d474fee56..332dfc41cf 100644 --- a/main/squid/APKBUILD +++ b/main/squid/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=squid pkgver=3.2.6 -pkgrel=0 +pkgrel=1 pkgdesc="A full-featured Web proxy cache server." url="http://www.squid-cache.org" install="squid.pre-install squid.pre-upgrade" @@ -21,6 +21,8 @@ langdir="/usr/share/squid/errors" source="http://www.squid-cache.org/Versions/v3/3.2/squid-$pkgver.tar.bz2 squid-3.2.0.16-loggable-urlgroup.patch cf_gen-pthread.patch + bug-3678.patch + bug-3679.patch squid.initd squid.confd $pkgname.logrotate @@ -107,6 +109,8 @@ squid_kerb_auth() { md5sums="87915ad83aebafc7af6871c770b23339 squid-3.2.6.tar.bz2 16e3b38996d4c5858e1478f8eb650876 squid-3.2.0.16-loggable-urlgroup.patch c60237de253c02937f272d3b189d7679 cf_gen-pthread.patch +526a4f0c3c2012577e2d22db388fec12 bug-3678.patch +9e71076799d334faba6f4954594e7b4a bug-3679.patch 905e57c6d41414f54a75a5c0f9f7fac7 squid.initd 2897c725c201be53d3c9a7db0101bdf0 squid.confd 58823e0b86bc2dc71d270208b7b284b4 squid.logrotate" diff --git a/main/squid/bug-3678.patch b/main/squid/bug-3678.patch new file mode 100644 index 0000000000..4d6a88e8cf --- /dev/null +++ b/main/squid/bug-3678.patch @@ -0,0 +1,62 @@ +http://bugs.squid-cache.org/show_bug.cgi?id=3678 + +diff --git a/src/external_acl.cc b/src/external_acl.cc +index d6c4338..1f1f2b4 100644 +--- a/src/external_acl.cc ++++ b/src/external_acl.cc +@@ -830,8 +830,11 @@ aclMatchExternal(external_acl_data *acl, ACLFilledChecklist *ch) + if (acl->def->theHelper->stats.queue_size <= (int)acl->def->theHelper->childs.n_active) { + debugs(82, 2, "aclMatchExternal: \"" << key << "\": queueing a call."); + ch->changeState(ExternalACLLookup::Instance()); +- debugs(82, 2, "aclMatchExternal: \"" << key << "\": return -1."); +- return -1; // to get here we have to have an expired cache entry. MUST not use. ++ if (!entry) { ++ debugs(82, 2, "aclMatchExternal: \"" << key << "\": return -1."); ++ return -1; // to get here we have to have an expired cache entry. MUST not use. ++ } ++ /* Grace period fall thru to return cached entry */ + } else { + if (!entry) { + debugs(82, 1, "aclMatchExternal: '" << acl->def->name << +@@ -1409,8 +1412,7 @@ ACLExternal::ExternalAclLookup(ACLChecklist *checklist, ACLExternal * me, EAH * + if (entry && external_acl_grace_expired(def, entry)) { + if (oldstate) { + debugs(82, 4, "externalAclLookup: in grace period, but already pending lookup ('" << key << "', ch=" << ch << ")"); +- callback(callback_data, entry); +- return; ++ goto return_grace; + } else { + graceful = 1; // grace expired, (neg)ttl did not, and we must start a new lookup. + } +@@ -1419,10 +1421,9 @@ ACLExternal::ExternalAclLookup(ACLChecklist *checklist, ACLExternal * me, EAH * + // The entry is in the cache, grace_ttl did not expired. + if (!graceful && entry && !external_acl_grace_expired(def, entry)) { + /* Should not really happen, but why not.. */ +- callback(callback_data, entry); + debugs(82, 4, "externalAclLookup: no lookup pending for '" << key << "', and grace not expired"); + debugs(82, 4, "externalAclLookup: (what tha' hell?)"); +- return; ++ goto return_grace; + } + + /* No pending lookup found. Sumbit to helper */ +@@ -1447,8 +1448,7 @@ ACLExternal::ExternalAclLookup(ACLChecklist *checklist, ACLExternal * me, EAH * + if (def->theHelper->stats.queue_size >= (int)def->theHelper->childs.n_running) { + debugs(82, 1, "externalAclLookup: '" << def->name << "' queue overload (ch=" << ch << ")"); + cbdataFree(state); +- callback(callback_data, entry); +- return; ++ goto return_grace; + } + + /* Send it off to the helper */ +@@ -1469,8 +1469,8 @@ ACLExternal::ExternalAclLookup(ACLChecklist *checklist, ACLExternal * me, EAH * + /* No need to wait during grace period */ + debugs(82, 4, "externalAclLookup: no need to wait for the result of '" << + key << "' in '" << def->name << "' (ch=" << ch << ")."); ++return_grace: + debugs(82, 4, "externalAclLookup: using cached entry " << entry); +- + if (entry != NULL) { + debugs(82, 4, "externalAclLookup: entry = { date=" << + (long unsigned int) entry->date << diff --git a/main/squid/bug-3679.patch b/main/squid/bug-3679.patch new file mode 100644 index 0000000000..b718093817 --- /dev/null +++ b/main/squid/bug-3679.patch @@ -0,0 +1,15 @@ +http://bugs.squid-cache.org/show_bug.cgi?id=3679 + +diff --git a/src/external_acl.cc b/src/external_acl.cc +index b3821c5..d6c4338 100644 +--- a/src/external_acl.cc ++++ b/src/external_acl.cc +@@ -1152,7 +1152,7 @@ external_acl_entry_expired(external_acl * def, external_acl_entry * entry) + if (def->cache_size <= 0) + return 1; + +- if (entry->date + (entry->result == 1 ? def->ttl : def->negative_ttl) < squid_curtime) ++ if (entry->date + (entry->result == 1 ? def->ttl : def->negative_ttl) <= squid_curtime) + return 1; + else + return 0; |