summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/squid/APKBUILD6
-rw-r--r--main/squid/bug-3679.patch15
-rw-r--r--main/squid/squid-3.2.0.16-loggable-urlgroup.patch111
3 files changed, 131 insertions, 1 deletions
diff --git a/main/squid/APKBUILD b/main/squid/APKBUILD
index b66a8410a..66c8b7901 100644
--- a/main/squid/APKBUILD
+++ b/main/squid/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=squid
pkgver=3.2.7
-pkgrel=1
+pkgrel=2
pkgdesc="A full-featured Web proxy cache server."
url="http://www.squid-cache.org"
install="squid.pre-install squid.pre-upgrade"
@@ -19,7 +19,9 @@ linguas="af ar az bg ca cs da de el es et fa fi fr he hu hy id it ja ko lt
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-3679.patch
squid.initd
squid.confd
$pkgname.logrotate
@@ -104,7 +106,9 @@ squid_kerb_auth() {
}
md5sums="3e4d21b24c39d5066791017919866a64 squid-3.2.7.tar.bz2
+16e3b38996d4c5858e1478f8eb650876 squid-3.2.0.16-loggable-urlgroup.patch
c60237de253c02937f272d3b189d7679 cf_gen-pthread.patch
+9e71076799d334faba6f4954594e7b4a bug-3679.patch
905e57c6d41414f54a75a5c0f9f7fac7 squid.initd
2897c725c201be53d3c9a7db0101bdf0 squid.confd
58823e0b86bc2dc71d270208b7b284b4 squid.logrotate"
diff --git a/main/squid/bug-3679.patch b/main/squid/bug-3679.patch
new file mode 100644
index 000000000..b71809381
--- /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;
diff --git a/main/squid/squid-3.2.0.16-loggable-urlgroup.patch b/main/squid/squid-3.2.0.16-loggable-urlgroup.patch
new file mode 100644
index 000000000..41193ba85
--- /dev/null
+++ b/main/squid/squid-3.2.0.16-loggable-urlgroup.patch
@@ -0,0 +1,111 @@
+diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc
+index b464e65..0448078 100644
+--- a/src/HttpRequest.cc
++++ b/src/HttpRequest.cc
+@@ -107,6 +107,7 @@ HttpRequest::init()
+ peer_login = NULL; // not allocated/deallocated by this class
+ peer_domain = NULL; // not allocated/deallocated by this class
+ vary_headers = NULL;
++ urlgroup = null_string;
+ myportname = null_string;
+ tag = null_string;
+ #if USE_AUTH
+@@ -155,6 +156,7 @@ HttpRequest::clean()
+ range = NULL;
+ }
+
++ urlgroup.clean();
+ myportname.clean();
+
+ tag.clean();
+@@ -214,6 +216,7 @@ HttpRequest::clone() const
+ copy->vary_headers = vary_headers ? xstrdup(vary_headers) : NULL;
+ // XXX: what to do with copy->peer_domain?
+
++ copy->urlgroup = urlgroup;
+ copy->myportname = myportname;
+ copy->tag = tag;
+ #if USE_AUTH
+diff --git a/src/HttpRequest.h b/src/HttpRequest.h
+index dc44fea..989624d 100644
+--- a/src/HttpRequest.h
++++ b/src/HttpRequest.h
+@@ -187,6 +187,8 @@ public:
+
+ char *peer_domain; /* Configured peer forceddomain */
+
++ String urlgroup;
++
+ String myportname; // Internal tag name= value from port this requests arrived in.
+
+ String tag; /* Internal tag for this request */
+diff --git a/src/client_side_request.cc b/src/client_side_request.cc
+index 0c3113b..d1947e9 100644
+--- a/src/client_side_request.cc
++++ b/src/client_side_request.cc
+@@ -1180,6 +1180,15 @@ ClientRequestContext::clientRedirectDone(char *result)
+ redirect_state = REDIRECT_DONE;
+
+ if (result) {
++ if (result[0] == '!') {
++ char *t = strchr(result+1, '!');
++ if (t != NULL) {
++ old_request->urlgroup.reset(NULL);
++ old_request->urlgroup.append(result + 1, t - result - 1);
++ result = t + 1;
++ }
++ }
++
+ http_status status = (http_status) atoi(result);
+
+ if (status == HTTP_MOVED_PERMANENTLY
+@@ -1198,7 +1207,7 @@ ClientRequestContext::clientRedirectDone(char *result)
+ else
+ debugs(85, DBG_CRITICAL, "ERROR: URL-rewrite produces invalid 303 redirect Location: " << result);
+ }
+- } else if (strcmp(result, http->uri)) {
++ } else if (result[0] != 0 && strcmp(result, http->uri)) {
+ // XXX: validate the URL properly *without* generating a whole new request object right here.
+ // XXX: the clone() should be done only AFTER we know the new URL is valid.
+ HttpRequest *new_request = old_request->clone();
+diff --git a/src/format/ByteCode.h b/src/format/ByteCode.h
+index 8e345df..ddb0f8f 100644
+--- a/src/format/ByteCode.h
++++ b/src/format/ByteCode.h
+@@ -65,6 +65,7 @@ typedef enum {
+ /*LFT_REQUEST_QUERY, */
+ LFT_REQUEST_VERSION_OLD_2X,
+ LFT_REQUEST_VERSION,
++ LFT_REQUEST_URLGROUP,
+
+ /* request header details pre-adaptation */
+ LFT_REQUEST_HEADER,
+diff --git a/src/format/Format.cc b/src/format/Format.cc
+index 18348e8..2e65886 100644
+--- a/src/format/Format.cc
++++ b/src/format/Format.cc
+@@ -907,6 +907,12 @@ Format::Format::assemble(MemBuf &mb, AccessLogEntry *al, int logSequenceNumber)
+ out = tmp;
+ break;
+
++ case LFT_REQUEST_URLGROUP:
++ if (al->request)
++ out = al->request->urlgroup.termedBuf();
++ quote = 1;
++ break;
++
+ case LFT_SERVER_REQ_METHOD:
+ if (al->adapted_request) {
+ out = al->adapted_request->method.image();
+diff --git a/src/format/Token.cc b/src/format/Token.cc
+index 6859e0a..8a8e5e7 100644
+--- a/src/format/Token.cc
++++ b/src/format/Token.cc
+@@ -116,6 +116,7 @@ static TokenTableEntry TokenTable2C[] = {
+ {"rp", LFT_REQUEST_URLPATH_OLD_31},
+ /* { "rq", LFT_REQUEST_QUERY }, * / / * the query-string, INCLUDING the leading ? */
+ {"rv", LFT_REQUEST_VERSION},
++ {"rG", LFT_REQUEST_URLGROUP},
+
+ {"<rm", LFT_SERVER_REQ_METHOD},
+ {"<ru", LFT_SERVER_REQ_URI},