aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/squid/APKBUILD6
-rw-r--r--main/squid/bug-3678.patch62
-rw-r--r--main/squid/bug-3679.patch15
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;