--- squid-3.0-PRE2-20030805/src/external_acl.cc 2003-08-04 17:14:42.000000000 -0500 +++ squid-3.0-PRE2-20030805-new/src/external_acl.cc 2003-08-10 14:59:39.000000000 -0500 @@ -53,6 +53,7 @@ #endif #include "client_side.h" #include "HttpRequest.h" +#include "HttpReply.h" #ifndef DEFAULT_EXTERNAL_ACL_TTL #define DEFAULT_EXTERNAL_ACL_TTL 1 * 60 * 60 @@ -682,6 +683,7 @@ wordlist *arg; external_acl_format *format; request_t *request = ch->request; + HttpReply *reply = ch->reply; memBufReset(&mb); for (format = acl_data->def->format; format; format = format->next) { @@ -746,22 +748,34 @@ break; case _external_acl_format::EXT_ACL_HEADER: - sb = httpHeaderGetByName(&request->header, format->header); + if (reply) + sb = httpHeaderGetByName(&reply->header, format->header); + if (request) + sb = httpHeaderGetByName(&request->header, format->header); str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID: - sb = httpHeaderGetStrOrList(&request->header, format->header_id); + if (reply) + sb = httpHeaderGetStrOrList(&reply->header, format->header_id); + if (request) + sb = httpHeaderGetStrOrList(&request->header, format->header_id); str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_MEMBER: - sb = httpHeaderGetByNameListMember(&request->header, format->header, format->member, format->separator); + if (reply) + sb = httpHeaderGetByNameListMember(&reply->header, format->header, format->member, format->separator); + if (request) + sb = httpHeaderGetByNameListMember(&request->header, format->header, format->member, format->separator); str = sb.buf(); break; case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER: - sb = httpHeaderGetListMember(&request->header, format->header_id, format->member, format->separator); + if (reply) + sb = httpHeaderGetListMember(&reply->header, format->header_id, format->member, format->separator); + if (request) + sb = httpHeaderGetListMember(&request->header, format->header_id, format->member, format->separator); str = sb.buf(); break; #if USE_SSL @@ -800,6 +814,8 @@ break; } + debug(82, 3) ("external_acl: sending '%s' from %d\n", str, format->type); + if (str) if (!*str) str = NULL;