diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/squid/APKBUILD | 6 | ||||
-rw-r--r-- | main/squid/bug-3679.patch | 15 | ||||
-rw-r--r-- | main/squid/squid-3.2.0.16-loggable-urlgroup.patch | 111 |
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}, |