From 2d1aff528648e47d207d00de9e5dec3f8be3fed7 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Tue, 2 Mar 2010 00:38:53 +1300 Subject: [PATCH] Author: Henrik Nordstrom 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 | 4 ++++ src/HttpRequest.h | 2 ++ src/errorpage.cc | 5 +++-- src/external_acl.cc | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 9469d721b8..994a3f5c97 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -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)); diff --git a/src/HttpRequest.h b/src/HttpRequest.h index e8b031ff44..6857bcdf31 100644 --- a/src/HttpRequest.h +++ b/src/HttpRequest.h @@ -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 */ diff --git a/src/errorpage.cc b/src/errorpage.cc index b0c5263937..b1ce41b701 100644 --- a/src/errorpage.cc +++ b/src/errorpage.cc @@ -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': diff --git a/src/external_acl.cc b/src/external_acl.cc index ef8113cc52..5bc3c56e27 100644 --- a/src/external_acl.cc +++ b/src/external_acl.cc @@ -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; -- 2.47.3