]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Henrik Nordstrom <henrik@henriknordstrom.net>
authorAmos Jeffries <squid3@treenet.co.nz>
Mon, 1 Mar 2010 11:38:53 +0000 (00:38 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 1 Mar 2010 11:38:53 +0000 (00:38 +1300)
Associate external acl message with the request

this change associates external acl message with the request just as
is done with the log message, tags etc. Was in a global variable.

The old global variable is still there as a fallback, but can probably
be removed.

src/HttpRequest.cc
src/HttpRequest.h
src/errorpage.cc
src/external_acl.cc

index 9469d721b83bb7ecd41cf8bee75fb5f0fd1bf50e..994a3f5c97d3b3d72c7cb5c59c074d57d07a9004 100644 (file)
@@ -100,6 +100,7 @@ HttpRequest::init()
     extacl_user = null_string;
     extacl_passwd = null_string;
     extacl_log = null_string;
+    extacl_message = null_string;
     pstate = psReadyToParseStartLine;
 #if FOLLOW_X_FORWARDED_FOR
     indirect_client_addr.SetEmpty();
@@ -150,6 +151,8 @@ HttpRequest::clean()
 
     extacl_log.clean();
 
+    extacl_message.clean();
+
 #if USE_ADAPTATION
     adaptHistory_ = NULL;
 #endif
@@ -203,6 +206,7 @@ HttpRequest::clone() const
     copy->extacl_user = extacl_user;
     copy->extacl_passwd = extacl_passwd;
     copy->extacl_log = extacl_log;
+    copy->extacl_message = extacl_message;
 
     assert(copy->inheritProperties(this));
 
index e8b031ff44b4e0fe5f5a6350b30b0ac95013d99a..6857bcdf31d8e8318ad017977e6384f97301a70f 100644 (file)
@@ -193,6 +193,8 @@ public:
 
     String extacl_log;         /* String to be used for access.log purposes */
 
+    String extacl_message;     /* String to be used for error page purposes */
+
 #if FOLLOW_X_FORWARDED_FOR
     String x_forwarded_for_iterator; /* XXX a list of IP addresses */
 #endif /* FOLLOW_X_FORWARDED_FOR */
index b0c526393777f1ebdbb26eb43496e86405c3ad15..b1ce41b7013d6c758b545517815b71a6f56046d3 100644 (file)
@@ -718,8 +718,9 @@ ErrorState::Convert(char token)
         break;
 
     case 'o':
-        p = external_acl_message ? external_acl_message : "[not available]";
-
+        p = request ? request->extacl_message.termedBuf() : external_acl_message;
+        if (!p)
+            p = "[not available]";
         break;
 
     case 'p':
index ef8113cc52e13c62b0b8849787c9bec8daf776a0..5bc3c56e27ee8bd891c7fa7cd44cf77ee6355894 100644 (file)
@@ -770,6 +770,9 @@ aclMatchExternal(external_acl_data *acl, ACLFilledChecklist *ch)
 
         if (entry->log.size())
             ch->request->extacl_log = entry->log;
+
+        if (entry->message.size())
+            ch->request->extacl_message = entry->message;
     }
 
     return result;