aboutsummaryrefslogtreecommitdiffstats
path: root/main/squid/urlgroup.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/squid/urlgroup.patch')
-rw-r--r--main/squid/urlgroup.patch134
1 files changed, 134 insertions, 0 deletions
diff --git a/main/squid/urlgroup.patch b/main/squid/urlgroup.patch
new file mode 100644
index 0000000000..0a3dd30493
--- /dev/null
+++ b/main/squid/urlgroup.patch
@@ -0,0 +1,134 @@
+diff -ru squid-3.4.5.orig/src/HttpRequest.cc squid-3.4.5/src/HttpRequest.cc
+--- squid-3.4.5.orig/src/HttpRequest.cc 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/HttpRequest.cc 2014-05-07 10:38:04.849927660 -0300
+@@ -116,6 +116,7 @@
+ peer_domain = NULL; // not allocated/deallocated by this class
+ peer_host = NULL;
+ vary_headers = NULL;
++ urlgroup = null_string;
+ myportname = null_string;
+ tag = null_string;
+ #if USE_AUTH
+@@ -164,6 +165,7 @@
+ range = NULL;
+ }
+
++ urlgroup.clean();
+ myportname.clean();
+
+ notes = NULL;
+@@ -228,6 +230,7 @@
+ copy->vary_headers = vary_headers ? xstrdup(vary_headers) : NULL;
+ // XXX: what to do with copy->peer_domain?
+
++ copy->urlgroup = urlgroup;
+ copy->tag = tag;
+ copy->extacl_log = extacl_log;
+ copy->extacl_message = extacl_message;
+diff -ru squid-3.4.5.orig/src/HttpRequest.h squid-3.4.5/src/HttpRequest.h
+--- squid-3.4.5.orig/src/HttpRequest.h 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/HttpRequest.h 2014-05-07 10:38:04.853260996 -0300
+@@ -201,6 +201,8 @@
+
+ char *peer_domain; /* Configured peer forceddomain */
+
++ String urlgroup;
++
+ String myportname; // Internal tag name= value from port this requests arrived in.
+
+ NotePairs::Pointer notes; ///< annotations added by the note directive and helpers
+diff -ru squid-3.4.5.orig/src/client_side_request.cc squid-3.4.5/src/client_side_request.cc
+--- squid-3.4.5.orig/src/client_side_request.cc 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/client_side_request.cc 2014-05-07 11:34:39.291538415 -0300
+@@ -1265,6 +1265,10 @@
+ // #2: redirect with a default status code OK url="..."
+ // #3: re-write the URL OK rewrite-url="..."
+
++ const char *urlgroupNote = reply.notes.findFirst("urlgroup");
++ if (urlgroupNote != NULL)
++ old_request->urlgroup.reset(urlgroupNote);
++
+ const char *statusNote = reply.notes.findFirst("status");
+ const char *urlNote = reply.notes.findFirst("url");
+
+diff -ru squid-3.4.5.orig/src/format/ByteCode.h squid-3.4.5/src/format/ByteCode.h
+--- squid-3.4.5.orig/src/format/ByteCode.h 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/format/ByteCode.h 2014-05-07 10:38:04.853260996 -0300
+@@ -69,6 +69,7 @@
+ /*LFT_REQUEST_QUERY, */
+ LFT_REQUEST_VERSION_OLD_2X,
+ LFT_REQUEST_VERSION,
++ LFT_REQUEST_URLGROUP,
+
+ /* request header details pre-adaptation */
+ LFT_REQUEST_HEADER,
+diff -ru squid-3.4.5.orig/src/format/Format.cc squid-3.4.5/src/format/Format.cc
+--- squid-3.4.5.orig/src/format/Format.cc 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/format/Format.cc 2014-05-07 10:38:04.853260996 -0300
+@@ -951,6 +951,12 @@
+ 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 -ru squid-3.4.5.orig/src/format/Token.cc squid-3.4.5/src/format/Token.cc
+--- squid-3.4.5.orig/src/format/Token.cc 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/format/Token.cc 2014-05-07 10:38:04.853260996 -0300
+@@ -89,6 +89,7 @@
+ {"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},
+diff -ru squid-3.4.5.orig/src/redirect.cc squid-3.4.5/src/redirect.cc
+--- squid-3.4.5.orig/src/redirect.cc 2014-05-02 15:09:05.000000000 -0300
++++ squid-3.4.5/src/redirect.cc 2014-05-07 13:09:56.813897270 -0300
+@@ -112,8 +112,7 @@
+ * At this point altering the helper buffer in that way is not harmful, but annoying.
+ * When Bug 1961 is resolved and urlParse has a const API, this needs to die.
+ */
+- const char * result = reply.other().content();
+- const Http::StatusCode status = static_cast<Http::StatusCode>(atoi(result));
++ char * result = reply.modifiableOther().content();
+
+ HelperReply newReply;
+ // BACKWARD COMPATIBILITY 2012-06-15:
+@@ -123,6 +122,18 @@
+ newReply.result = HelperReply::Okay;
+ newReply.notes.append(&reply.notes);
+
++ // check and parse for urlgroup=
++ if (*result == '!') {
++ char *t = strchr(result+1, '!');
++ if (t != NULL) {
++ *t = 0;
++ newReply.notes.add("urlgroup", result+1);
++ result = t + 1;
++ }
++ }
++
++ const Http::StatusCode status = static_cast<Http::StatusCode>(atoi(result));
++
+ if (status == Http::scMovedPermanently
+ || status == Http::scFound
+ || status == Http::scSeeOther
+@@ -143,7 +154,8 @@
+ // status code is not a redirect code (or does not exist)
+ // treat as a re-write URL request
+ // TODO: validate the URL produced here is RFC 2616 compliant URI
+- newReply.notes.add("rewrite-url", reply.other().content());
++ if (*result)
++ newReply.notes.add("rewrite-url", result);
+ }
+
+ void *cbdata;
+