# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kinkie@squid-cache.org-20120917133137-ubvw5xsnuaiovh3m
# target_branch: ../trunk/
# testament_sha1: 90015ea1680ca3dc7c8cae47c1d85aeed302b466
# timestamp: 2012-09-17 15:32:13 +0200
# base_revision_id: kinkie@squid-cache.org-20120913113930-\
#   cyu8k2mwqhyfy55e
# 
# Begin patch
=== modified file 'src/AccessLogEntry.cc'
--- src/AccessLogEntry.cc	2012-08-28 13:00:30 +0000
+++ src/AccessLogEntry.cc	2012-09-04 09:10:20 +0000
@@ -2,6 +2,7 @@
 #include "AccessLogEntry.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
+#include "SquidConfig.h"
 #include "ssl/support.h"
 
 #if USE_SSL

=== modified file 'src/AccessLogEntry.h'
--- src/AccessLogEntry.h	2012-08-28 13:00:30 +0000
+++ src/AccessLogEntry.h	2012-09-06 12:47:15 +0000
@@ -35,6 +35,7 @@
 #include "HttpVersion.h"
 #include "HttpRequestMethod.h"
 #include "HierarchyLogEntry.h"
+#include "icp_opcode.h"
 #include "ip/Address.h"
 #include "HttpRequestMethod.h"
 #if ICAP_CLIENT
@@ -274,7 +275,7 @@
 class StoreEntry;
 
 /* Should be in 'AccessLog.h' as the driver */
-extern void accessLogLogTo(customlog* log, AccessLogEntry::Pointer &al, ACLChecklist* checklist = NULL);
+extern void accessLogLogTo(CustomLog* log, AccessLogEntry::Pointer &al, ACLChecklist* checklist = NULL);
 extern void accessLogLog(AccessLogEntry::Pointer &, ACLChecklist * checklist);
 extern void accessLogRotate(void);
 extern void accessLogClose(void);

=== modified file 'src/AuthReg.h'
--- src/AuthReg.h	2012-08-31 16:28:10 +0000
+++ src/AuthReg.h	2012-09-17 13:31:37 +0000
@@ -1,8 +1,7 @@
 #ifndef SQUID_AUTHREG_H_
 #define SQUID_AUTHREG_H_
 /*
- * DEBUG: section 
- * AUTHOR: 
+ * DEBUG: section 29    Authenticator
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------

=== modified file 'src/CacheDigest.h'
--- src/CacheDigest.h	2012-08-29 00:12:28 +0000
+++ src/CacheDigest.h	2012-09-06 14:48:49 +0000
@@ -1,3 +1,5 @@
+#ifndef SQUID_CACHEDIGEST_H_
+#define SQUID_CACHEDIGEST_H_
 /*
  * DEBUG: section 70    Cache Digest
  * AUTHOR: Alex Rousskov
@@ -30,13 +32,23 @@
  *
  */
 
-#ifndef SQUID_CACHEDIGEST_H_
-#define SQUID_CACHEDIGEST_H_
-
+/* for cache_key */
 #include "typedefs.h"
+
 class CacheDigestGuessStats;
 class StoreEntry;
 
+class CacheDigest {
+public:
+    /* public, read-only */
+    char *mask;         /* bit mask */
+    int mask_size;      /* mask size in bytes */
+    int capacity;       /* expected maximum for .count, not a hard limit */
+    int bits_per_entry;     /* number of bits allocated for each entry from capacity */
+    int count;          /* number of digested entries */
+    int del_count;      /* number of deletions performed so far */
+};
+
 extern CacheDigest *cacheDigestCreate(int capacity, int bpe);
 extern void cacheDigestDestroy(CacheDigest * cd);
 extern CacheDigest *cacheDigestClone(const CacheDigest * cd);

=== modified file 'src/CacheManager.h'
--- src/CacheManager.h	2012-09-01 14:38:36 +0000
+++ src/CacheManager.h	2012-09-10 09:44:06 +0000
@@ -48,6 +48,7 @@
  */
 
 class HttpRequest;
+class CacheMgrPasswd;
 /**
  \ingroup CacheManagerAPI
  * a CacheManager - the menu system for interacting with squid.
@@ -83,7 +84,7 @@
     Mgr::CommandPointer ParseUrl(const char *url);
     void ParseHeaders(const HttpRequest * request, Mgr::ActionParams &params);
     int CheckPassword(const Mgr::Command &cmd);
-    char *PasswdGet(cachemgr_passwd *, const char *);
+    char *PasswdGet(CacheMgrPasswd *, const char *);
 
     void registerProfile(const Mgr::ActionProfilePointer &profile);
 

=== added file 'src/CacheMgrPasswd.cc'
--- src/CacheMgrPasswd.cc	1970-01-01 00:00:00 +0000
+++ src/CacheMgrPasswd.cc	2012-09-17 13:31:37 +0000
@@ -0,0 +1,33 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "CacheMgrPasswd.h"
+
+

=== added file 'src/CacheMgrPasswd.h'
--- src/CacheMgrPasswd.h	1970-01-01 00:00:00 +0000
+++ src/CacheMgrPasswd.h	2012-09-17 13:31:37 +0000
@@ -0,0 +1,44 @@
+#ifndef SQUID_CACHEMGRPASSWD_H_
+#define SQUID_CACHEMGRPASSWD_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+class wordlist;
+
+//TODO: this class is misnamed and C-ish. Split into CacheMgrPasswd and
+// CacheMgrPasswdList (std::list-derived)
+class CacheMgrPasswd {
+public:
+    char *passwd;
+    wordlist *actions;
+    CacheMgrPasswd *next;
+};
+
+
+#endif /* SQUID_CACHEMGRPASSWD_H_ */

=== added file 'src/CachePeer.h'
--- src/CachePeer.h	1970-01-01 00:00:00 +0000
+++ src/CachePeer.h	2012-09-04 15:15:51 +0000
@@ -0,0 +1,206 @@
+#ifndef SQUID_CACHEPEER_H_
+#define SQUID_CACHEPEER_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "enums.h"
+#include "icp_opcode.h"
+#include "ip/Address.h"
+
+#if USE_SSL
+#include <openssl/ssl.h>
+#endif
+
+class domain_ping;
+class domain_type;
+class acl_access;
+class PeerDigest;
+
+class CachePeer {
+public:
+    u_int index;
+    char *name;
+    char *host;
+    peer_t type;
+
+    Ip::Address in_addr;
+
+    struct {
+        int pings_sent;
+        int pings_acked;
+        int fetches;
+        int rtt;
+        int ignored_replies;
+        int n_keepalives_sent;
+        int n_keepalives_recv;
+        time_t probe_start;
+        time_t last_query;
+        time_t last_reply;
+        time_t last_connect_failure;
+        time_t last_connect_probe;
+        int logged_state;   /* so we can print dead/revived msgs */
+        int conn_open;      /* current opened connections */
+    } stats;
+
+    struct {
+        int version;
+        int counts[ICP_END+1];
+        unsigned short port;
+    } icp;
+
+#if USE_HTCP
+    struct {
+        double version;
+        int counts[2];
+        unsigned short port;
+    } htcp;
+#endif
+
+    unsigned short http_port;
+    domain_ping *peer_domain;
+    domain_type *typelist;
+    acl_access *access;
+
+    struct {
+        unsigned int proxy_only:1;
+        unsigned int no_query:1;
+        unsigned int background_ping:1;
+        unsigned int no_digest:1;
+        unsigned int default_parent:1;
+        unsigned int roundrobin:1;
+        unsigned int weighted_roundrobin:1;
+        unsigned int mcast_responder:1;
+        unsigned int closest_only:1;
+#if USE_HTCP
+        unsigned int htcp:1;
+        unsigned int htcp_oldsquid:1;
+        unsigned int htcp_no_clr:1;
+        unsigned int htcp_no_purge_clr:1;
+        unsigned int htcp_only_clr:1;
+        unsigned int htcp_forward_clr:1;
+#endif
+        unsigned int no_netdb_exchange:1;
+#if USE_DELAY_POOLS
+        unsigned int no_delay:1;
+#endif
+        unsigned int allow_miss:1;
+        unsigned int carp:1;
+        struct {
+            unsigned int set:1; //If false, whole url is to be used. Overrides others
+            unsigned int scheme:1;
+            unsigned int host:1;
+            unsigned int port:1;
+            unsigned int path:1;
+            unsigned int params:1;
+        } carp_key;
+#if USE_AUTH
+        unsigned int userhash:1;
+#endif
+        unsigned int sourcehash:1;
+        unsigned int originserver:1;
+        unsigned int no_tproxy:1;
+#if PEER_MULTICAST_SIBLINGS
+        unsigned int mcast_siblings:1;
+#endif
+    } options;
+
+    int weight;
+    int basetime;
+
+    struct {
+        double avg_n_members;
+        int n_times_counted;
+        int n_replies_expected;
+        int ttl;
+        int id;
+
+        struct {
+            unsigned int count_event_pending:1;
+            unsigned int counting:1;
+        } flags;
+    } mcast;
+#if USE_CACHE_DIGESTS
+
+    PeerDigest *digest;
+    char *digest_url;
+#endif
+
+    int tcp_up;         /* 0 if a connect() fails */
+
+    Ip::Address addresses[10];
+    int n_addresses;
+    int rr_count;
+    CachePeer *next;
+    int testing_now;
+
+    struct {
+        unsigned int hash;
+        double load_multiplier;
+        double load_factor; /* normalized weight value */
+    } carp;
+#if USE_AUTH
+    struct {
+        unsigned int hash;
+        double load_multiplier;
+        double load_factor; /* normalized weight value */
+    } userhash;
+#endif
+    struct {
+        unsigned int hash;
+        double load_multiplier;
+        double load_factor; /* normalized weight value */
+    } sourcehash;
+
+    char *login;        /* Proxy authorization */
+    time_t connect_timeout;
+    int connect_fail_limit;
+    int max_conn;
+    char *domain;       /* Forced domain */
+#if USE_SSL
+
+    int use_ssl;
+    char *sslcert;
+    char *sslkey;
+    int sslversion;
+    char *ssloptions;
+    char *sslcipher;
+    char *sslcafile;
+    char *sslcapath;
+    char *sslcrlfile;
+    char *sslflags;
+    char *ssldomain;
+    SSL_CTX *sslContext;
+    SSL_SESSION *sslSession;
+#endif
+
+    int front_end_https;
+    int connection_auth;
+};
+
+#endif /* SQUID_CACHEPEER_H_ */

=== modified file 'src/CpuAffinity.cc'
--- src/CpuAffinity.cc	2012-08-31 16:57:39 +0000
+++ src/CpuAffinity.cc	2012-09-04 09:10:20 +0000
@@ -9,6 +9,7 @@
 #include "CpuAffinitySet.h"
 #include "Debug.h"
 #include "globals.h"
+#include "SquidConfig.h"
 #include "structs.h"
 #include "tools.h"
 

=== modified file 'src/DelayBucket.cc'
--- src/DelayBucket.cc	2012-09-01 14:38:36 +0000
+++ src/DelayBucket.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 #if USE_DELAY_POOLS
 #include "DelayBucket.h"
 #include "DelaySpec.h"
+#include "SquidConfig.h"
 #include "Store.h"
 
 void

=== modified file 'src/DelayId.cc'
--- src/DelayId.cc	2012-09-01 14:38:36 +0000
+++ src/DelayId.cc	2012-09-04 09:10:20 +0000
@@ -48,6 +48,7 @@
 #include "DelayPool.h"
 #include "DelayPools.h"
 #include "HttpRequest.h"
+#include "SquidConfig.h"
 
 DelayId::DelayId () : pool_ (0), compositeId(NULL), markedAsNoDelay(false)
 {}

=== modified file 'src/DiskIO/DiskDaemon/DiskdIOStrategy.cc'
--- src/DiskIO/DiskDaemon/DiskdIOStrategy.cc	2012-08-31 16:57:39 +0000
+++ src/DiskIO/DiskDaemon/DiskdIOStrategy.cc	2012-09-04 09:10:20 +0000
@@ -41,6 +41,7 @@
 #include "fd.h"
 #include "Store.h"
 #include "StatCounters.h"
+#include "SquidConfig.h"
 #include "SquidIpc.h"
 #include "SquidTime.h"
 #include "unlinkd.h"

=== modified file 'src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc'
--- src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc	2012-09-01 14:38:36 +0000
+++ src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc	2012-09-04 09:10:20 +0000
@@ -38,8 +38,8 @@
 #include "DiskThreadsIOStrategy.h"
 #include "fde.h"
 #include "mgr/Registration.h"
+#include "SquidConfig.h"
 #include "StatCounters.h"
-/* for statfs */
 #include "Store.h"
 
 void

=== modified file 'src/DiskIO/DiskThreads/aiops.cc'
--- src/DiskIO/DiskThreads/aiops.cc	2012-09-01 14:38:36 +0000
+++ src/DiskIO/DiskThreads/aiops.cc	2012-09-04 09:10:20 +0000
@@ -36,16 +36,17 @@
 
 #include "squid.h"
 #include "DiskThreads.h"
+#include "SquidConfig.h"
 
-#include	<stdio.h>
-#include	<sys/stat.h>
-#include	<fcntl.h>
-#include	<pthread.h>
-#include	<errno.h>
-#include	<dirent.h>
-#include	<signal.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <errno.h>
+#include <dirent.h>
+#include <signal.h>
 #if HAVE_SCHED_H
-#include	<sched.h>
+#include <sched.h>
 #endif
 #include "DiskIO/DiskThreads/CommIO.h"
 #include "SquidTime.h"

=== modified file 'src/DiskIO/DiskThreads/aiops_win32.cc'
--- src/DiskIO/DiskThreads/aiops_win32.cc	2012-09-01 14:38:36 +0000
+++ src/DiskIO/DiskThreads/aiops_win32.cc	2012-09-04 09:10:20 +0000
@@ -36,15 +36,16 @@
 #include "squid_windows.h"
 #include "DiskIO/DiskThreads/CommIO.h"
 #include "DiskThreads.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 
-#include	<stdio.h>
-#include	<sys/stat.h>
-#include	<fcntl.h>
-#include	<errno.h>
-#include	<dirent.h>
-#include	<signal.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <dirent.h>
+#include <signal.h>
 
 #define RIDICULOUS_LENGTH	4096
 

=== modified file 'src/DiskIO/IpcIo/IpcIoFile.cc'
--- src/DiskIO/IpcIo/IpcIoFile.cc	2012-09-01 14:38:36 +0000
+++ src/DiskIO/IpcIo/IpcIoFile.cc	2012-09-04 09:10:20 +0000
@@ -18,6 +18,7 @@
 #include "ipc/Queue.h"
 #include "ipc/StrandSearch.h"
 #include "ipc/UdsOp.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "tools.h"

=== modified file 'src/HttpHdrCc.cc'
--- src/HttpHdrCc.cc	2012-08-31 16:57:39 +0000
+++ src/HttpHdrCc.cc	2012-09-04 11:58:36 +0000
@@ -33,6 +33,7 @@
 #include "squid.h"
 #include "base/StringArea.h"
 #include "HttpHeader.h"
+#include "HttpHeaderFieldStat.h"
 #include "HttpHeaderStat.h"
 #include "HttpHeaderTools.h"
 #include "HttpHdrCc.h"

=== modified file 'src/HttpHdrSc.cc'
--- src/HttpHdrSc.cc	2012-09-01 14:38:36 +0000
+++ src/HttpHdrSc.cc	2012-09-04 13:09:04 +0000
@@ -37,6 +37,8 @@
 #include "squid.h"
 #include "HttpHdrSc.h"
 #include "HttpHeader.h"
+#include "HttpHeaderFieldInfo.h"
+#include "HttpHeaderFieldStat.h"
 #include "HttpHeaderStat.h"
 #include "HttpHeaderTools.h"
 #include "Store.h"
@@ -64,6 +66,7 @@
     {"Other,", (http_hdr_type)SC_OTHER}	/* ',' will protect from matches */
 };
 
+class HttpHeaderFieldInfo;
 HttpHeaderFieldInfo *ScFieldsInfo = NULL;
 
 http_hdr_sc_type &operator++ (http_hdr_sc_type &aHeader)

=== modified file 'src/HttpHeader.cc'
--- src/HttpHeader.cc	2012-08-31 16:57:39 +0000
+++ src/HttpHeader.cc	2012-09-04 13:09:04 +0000
@@ -36,6 +36,7 @@
 #include "HttpHdrContRange.h"
 #include "HttpHdrSc.h"
 #include "HttpHeader.h"
+#include "HttpHeaderFieldInfo.h"
 #include "HttpHeaderStat.h"
 #include "HttpHeaderTools.h"
 #include "MemBuf.h"
@@ -45,6 +46,7 @@
 #include "StatHist.h"
 #include "Store.h"
 #include "StrList.h"
+#include "SquidConfig.h"
 #include "SquidString.h"
 #include "TimeOrTag.h"
 
@@ -161,6 +163,7 @@
     {"Other:", HDR_OTHER, ftStr}	/* ':' will not allow matches */
 };
 
+class HttpHeaderFieldInfo;
 static HttpHeaderFieldInfo *Headers = NULL;
 
 http_hdr_type &operator++ (http_hdr_type &aHeader)

=== modified file 'src/HttpHeader.h'
--- src/HttpHeader.h	2012-09-03 09:02:20 +0000
+++ src/HttpHeader.h	2012-09-09 19:41:47 +0000
@@ -178,7 +178,8 @@
     hoEnd
 } http_hdr_owner_type;
 
-struct _HttpHeaderFieldAttrs {
+class HttpHeaderFieldAttrs {
+public:
     const char *name;
     http_hdr_type id;
     field_type type;

=== added file 'src/HttpHeaderFieldInfo.h'
--- src/HttpHeaderFieldInfo.h	1970-01-01 00:00:00 +0000
+++ src/HttpHeaderFieldInfo.h	2012-09-04 13:09:04 +0000
@@ -0,0 +1,49 @@
+#ifndef SQUID_HTTPHEADERFIELDINFO_H_
+#define SQUID_HTTPHEADERFIELDINFO_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "SquidString.h"
+#include "HttpHeaderFieldStat.h"
+
+/* compiled version of HttpHeaderFieldAttrs plus stats */
+class HttpHeaderFieldInfo
+{
+public:
+    HttpHeaderFieldInfo() : id (HDR_ACCEPT), type (ftInvalid) {}
+
+    http_hdr_type id;
+    String name;
+    field_type type;
+    HttpHeaderFieldStat stat;
+};
+
+
+
+#endif /* SQUID_HTTPHEADERFIELDINFO_H_ */

=== added file 'src/HttpHeaderFieldStat.h'
--- src/HttpHeaderFieldStat.h	1970-01-01 00:00:00 +0000
+++ src/HttpHeaderFieldStat.h	2012-09-17 13:31:37 +0000
@@ -0,0 +1,48 @@
+#ifndef SQUID_HTTPHEADERFIELDSTAT_H_
+#define SQUID_HTTPHEADERFIELDSTAT_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+/// per field statistics
+class HttpHeaderFieldStat
+{
+public:
+    HttpHeaderFieldStat() : aliveCount(0), seenCount(0), parsCount(0), errCount(0), repCount(0) {}
+
+    int aliveCount;     /* created but not destroyed (count) */
+    int seenCount;      /* #fields we've seen */
+    int parsCount;      /* #parsing attempts */
+    int errCount;       /* #pasring errors */
+    int repCount;       /* #repetitons */
+};
+
+
+
+
+#endif /* SQUID_HTTPHEADERFIELDSTAT_H_ */

=== modified file 'src/HttpHeaderTools.cc'
--- src/HttpHeaderTools.cc	2012-09-03 09:02:20 +0000
+++ src/HttpHeaderTools.cc	2012-09-09 19:41:47 +0000
@@ -40,9 +40,11 @@
 #include "fde.h"
 #include "HttpHdrContRange.h"
 #include "HttpHeader.h"
+#include "HttpHeaderFieldInfo.h"
 #include "HttpHeaderTools.h"
 #include "HttpRequest.h"
 #include "MemBuf.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "StrList.h"
 

=== modified file 'src/HttpHeaderTools.h'
--- src/HttpHeaderTools.h	2012-09-03 09:02:20 +0000
+++ src/HttpHeaderTools.h	2012-09-09 19:41:47 +0000
@@ -19,11 +19,11 @@
 typedef std::list<HeaderWithAcl> HeaderWithAclList;
 
 class acl_access;
-struct _header_mangler {
+class header_mangler {
+public:
     acl_access *access_list;
     char *replacement;
 };
-typedef struct _header_mangler header_mangler;
 
 class StoreEntry;
 
@@ -94,10 +94,10 @@
 
 extern int httpHeaderParseOffset(const char *start, int64_t * off);
 
-class HttpHeaderFieldInfo;
 class String;
 class HttpHeader;
 class HttpRequest;
+class HttpHeaderFieldInfo;
 
 extern HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
 extern void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);

=== modified file 'src/HttpMsg.cc'
--- src/HttpMsg.cc	2012-09-01 14:38:36 +0000
+++ src/HttpMsg.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "MemBuf.h"
 #include "mime_header.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 
 HttpMsg::HttpMsg(http_hdr_owner_type owner): header(owner),
         cache_control(NULL), hdr_sz(0), content_length(0), protocol(AnyP::PROTO_NONE),

=== modified file 'src/HttpParser.cc'
--- src/HttpParser.cc	2012-08-28 13:00:30 +0000
+++ src/HttpParser.cc	2012-09-04 09:10:20 +0000
@@ -1,8 +1,9 @@
 #include "squid.h"
 #include "Debug.h"
 #include "HttpParser.h"
+#include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "structs.h"
-#include "profiler/Profiler.h"
 
 void
 HttpParser::clear()

=== modified file 'src/HttpReply.cc'
--- src/HttpReply.cc	2012-09-01 14:38:36 +0000
+++ src/HttpReply.cc	2012-09-04 09:10:20 +0000
@@ -41,6 +41,7 @@
 #include "HttpReply.h"
 #include "HttpRequest.h"
 #include "MemBuf.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StrList.h"

=== modified file 'src/HttpRequest.cc'
--- src/HttpRequest.cc	2012-08-31 16:57:39 +0000
+++ src/HttpRequest.cc	2012-09-13 16:20:41 +0000
@@ -45,6 +45,7 @@
 #include "HttpRequest.h"
 #include "log/Config.h"
 #include "MemBuf.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "URL.h"
 
@@ -419,27 +420,6 @@
     range = header.getRange();
 }
 
-/* request_flags */
-bool
-request_flags::resetTCP() const
-{
-    return reset_tcp != 0;
-}
-
-void
-request_flags::setResetTCP()
-{
-    debugs(73, 9, "request_flags::setResetTCP");
-    reset_tcp = 1;
-}
-
-void
-request_flags::clearResetTCP()
-{
-    debugs(73, 9, "request_flags::clearResetTCP");
-    reset_tcp = 0;
-}
-
 #if ICAP_CLIENT
 Adaptation::Icap::History::Pointer
 HttpRequest::icapHistory() const
@@ -492,27 +472,6 @@
     return (range && range->specs.count > 1);
 }
 
-void
-request_flags::destinationIPLookupCompleted()
-{
-    destinationIPLookedUp_ = true;
-}
-
-bool
-request_flags::destinationIPLookedUp() const
-{
-    return destinationIPLookedUp_;
-}
-
-request_flags
-request_flags::cloneAdaptationImmune() const
-{
-    // At the time of writing, all flags where either safe to copy after
-    // adaptation or were not set at the time of the adaptation. If there
-    // are flags that are different, they should be cleared in the clone.
-    return *this;
-}
-
 bool
 HttpRequest::bodyNibbled() const
 {
@@ -622,7 +581,7 @@
     // Because it failed verification, or someone bypassed the security tests
     // we cannot cache the reponse for sharing between clients.
     // TODO: update cache to store for particular clients only (going to same Host: and destination IP)
-    if (!flags.hostVerified && (flags.intercepted || flags.spoof_client_ip))
+    if (!flags.hostVerified() && (flags.intercepted() || flags.spoofClientIp()))
         return false;
 
     if (protocol == AnyP::PROTO_HTTP)
@@ -652,7 +611,7 @@
 bool
 HttpRequest::conditional() const
 {
-    return flags.ims ||
+    return flags.hasIMS() ||
            header.has(HDR_IF_MATCH) ||
            header.has(HDR_IF_NONE_MATCH);
 }

=== modified file 'src/HttpRequest.h'
--- src/HttpRequest.h	2012-09-01 14:38:36 +0000
+++ src/HttpRequest.h	2012-09-14 11:35:12 +0000
@@ -33,9 +33,11 @@
 
 #include "base/CbcPointer.h"
 #include "Debug.h"
+#include "err_type.h"
 #include "HierarchyLogEntry.h"
 #include "HttpMsg.h"
 #include "HttpRequestMethod.h"
+#include "RequestFlags.h"
 
 #if USE_AUTH
 #include "auth/UserRequest.h"
@@ -161,7 +163,7 @@
 
     char *canonical;
 
-    request_flags flags;
+    RequestFlags flags;
 
     HttpHdrRange *range;
 

=== modified file 'src/HttpRequestMethod.h'
--- src/HttpRequestMethod.h	2012-09-01 14:38:36 +0000
+++ src/HttpRequestMethod.h	2012-09-04 09:10:20 +0000
@@ -34,6 +34,8 @@
 #include "SquidString.h"
 #include "structs.h"
 
+class SquidConfig;
+
 #include <iosfwd>
 
 enum _method_t {

=== modified file 'src/ICP.h'
--- src/ICP.h	2012-09-01 14:38:36 +0000
+++ src/ICP.h	2012-09-01 21:00:18 +0000
@@ -76,6 +76,8 @@
     icp_opcode getOpCode() const;
 #endif
 };
+typedef struct _icp_common_t icp_common_t;
+
 
 #ifdef __cplusplus
 

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2012-09-01 14:24:50 +0000
+++ src/Makefile.am	2012-09-10 12:49:35 +0000
@@ -258,6 +258,7 @@
 	CommCalls.h \
 	DescriptorSet.cc \
 	DescriptorSet.h \
+	SquidConfig.h \
 	SquidConfig.cc
 
 squid_SOURCES = \
@@ -268,10 +269,16 @@
 	AsyncEngine.h \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	CacheDigest.h \
 	CacheDigest.cc \
 	cache_manager.cc \
+	CachePeer.h \
 	CacheManager.h \
 	carp.h \
 	carp.cc \
@@ -362,6 +369,7 @@
 	HttpStatusCode.h \
 	HttpStatusLine.cc \
 	HttpStatusLine.h \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -377,6 +385,7 @@
 	HttpHeader.cc \
 	HttpHeaderMask.h \
 	HttpHeaderRange.h \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpBody.h \
@@ -388,6 +397,8 @@
 	HttpParser.h \
 	HttpReply.cc \
 	HttpReply.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequest.h \
 	HttpRequestMethod.cc \
@@ -1106,6 +1117,7 @@
 	ETag.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1119,6 +1131,7 @@
 	HttpHeader.h \
 	HttpHeader.cc \
 	HttpHeaderMask.h \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpControlMsg.h \
@@ -1131,6 +1144,8 @@
 	HttpStatusLine.h \
 	Mem.h \
 	mem.cc \
+	RegexList.h \
+	RegexList.cc \
 	MemBuf.cc \
 	MemBuf.h \
 	mime_header.h \
@@ -1145,6 +1160,7 @@
 	log/access_log.h \
 	tests/stub_access_log.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_debug.cc \
@@ -1207,10 +1223,12 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHdrContRange.cc \
 	HttpHdrRange.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1253,6 +1271,7 @@
 	log/access_log.h \
 	tests/stub_access_log.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_debug.cc \
 	tests/stub_DelayId.cc \
@@ -1349,6 +1368,8 @@
 	debug.cc \
 	HttpParser.cc \
 	HttpParser.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	Mem.h \
@@ -1365,6 +1386,11 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	CacheDigest.h \
 	CacheDigest.cc \
@@ -1420,8 +1446,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1593,6 +1621,7 @@
 	filemap.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1600,6 +1629,7 @@
 	HttpHdrSc.cc \
 	HttpHdrScTarget.cc \
 	HttpHdrRange.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -1622,6 +1652,8 @@
 	refresh.h \
 	refresh.cc \
 	RemovalPolicy.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	StatCounters.h \
 	StatCounters.cc \
 	StatHist.h \
@@ -1653,6 +1685,7 @@
 	tests/stub_access_log.cc \
 	tests/stub_acl.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_client_db.cc \
@@ -1748,6 +1781,11 @@
 	CacheDigest.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	cache_manager.cc \
 	carp.h \
@@ -1806,8 +1844,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1819,6 +1859,8 @@
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -1981,6 +2023,11 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	carp.h \
 	carp.cc \
@@ -2038,8 +2085,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2051,6 +2100,8 @@
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -2209,6 +2260,11 @@
 	BodyPipe.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	cache_manager.cc \
 	CacheDigest.h \
@@ -2265,6 +2321,7 @@
 	http.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2274,12 +2331,15 @@
 	HttpHdrScTarget.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpMsg.cc \
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -2440,6 +2500,7 @@
 	String.cc \
 	structs.h \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_debug.cc \
@@ -2473,6 +2534,8 @@
 	$(ACL_REGISTRATION_SOURCES) \
 	HttpParser.cc \
 	HttpParser.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	Mem.h \
@@ -2492,6 +2555,11 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	debug.cc \
 	CacheDigest.h \
@@ -2544,8 +2612,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2712,6 +2782,7 @@
 	EventLoop.cc \
 	FileMap.h \
 	filemap.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2719,12 +2790,15 @@
 	HttpHdrRange.cc \
 	HttpHdrSc.cc \
 	HttpHdrScTarget.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
 	HttpMsg.cc \
 	HttpRequestMethod.cc \
+	RequestFlags.cc \
+	RequestFlags.h \
 	int.h \
 	int.cc \
 	SquidList.h \
@@ -2769,6 +2843,7 @@
 	tests/stub_access_log.cc \
 	tests/stub_acl.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_client_side_request.cc \
@@ -2867,6 +2942,7 @@
 	tests/testString.cc \
 	tests/testString.h \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_debug.cc \
@@ -2943,6 +3019,8 @@
 	HttpStatusLine.cc \
 	int.h \
 	int.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	SquidList.h \
 	SquidList.cc \
 	MemObject.cc \
@@ -2980,6 +3058,7 @@
 	SwapDir.cc \
 	tests/stub_acl.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_helper.cc \
 	cbdata.cc \
@@ -2991,6 +3070,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3001,6 +3081,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3090,6 +3171,7 @@
 	fd.cc \
 	FileMap.h \
 	filemap.cc \
+	HttpHeaderFieldStat.h \
 	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.cc \
@@ -3099,6 +3181,7 @@
 	HttpHdrScTarget.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpMsg.cc \
@@ -3117,6 +3200,8 @@
 	Packer.cc \
 	Parsing.cc \
 	RemovalPolicy.cc \
+	RequestFlags.cc \
+	RequestFlags.h \
 	StatCounters.h \
 	StatCounters.cc \
 	StatHist.h \
@@ -3152,6 +3237,7 @@
 	log/access_log.h \
 	tests/stub_access_log.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	client_db.h \
@@ -3288,6 +3374,7 @@
 	SwapDir.cc \
 	tests/stub_acl.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_helper.cc \
 	cbdata.cc \
@@ -3298,6 +3385,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3308,6 +3396,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3439,6 +3528,7 @@
 	SwapDir.cc \
 	tests/stub_acl.cc \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_helper.cc \
 	cbdata.cc \
@@ -3451,6 +3541,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3461,6 +3552,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3530,6 +3622,11 @@
 	BodyPipe.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
+	CacheMgrPasswd.h \
+	CacheMgrPasswd.cc \
 	cache_cf.cc \
 	cache_manager.cc \
 	CacheDigest.h \
@@ -3585,6 +3682,7 @@
 	http.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3594,12 +3692,15 @@
 	HttpHdrScTarget.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpMsg.cc \
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -3681,8 +3782,8 @@
 	StoreMetaVary.cc \
 	StoreSwapLogData.cc \
 	String.cc \
-    StrList.h \
-    StrList.cc \
+	StrList.h \
+	StrList.cc \
 	SwapDir.cc \
 	MemStore.cc \
 	tests/stub_debug.cc \
@@ -3765,6 +3866,7 @@
 	tests/testConfigParser.cc \
 	tests/testConfigParser.h \
 	cache_cf.h \
+	YesNoNone.h \
 	tests/stub_cache_cf.cc \
 	tests/stub_cache_manager.cc \
 	tests/stub_debug.cc \

=== modified file 'src/MemObject.cc'
--- src/MemObject.cc	2012-09-01 14:38:36 +0000
+++ src/MemObject.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "MemBuf.h"
 #include "MemObject.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "StoreClient.h"
 

=== modified file 'src/MemStore.cc'
--- src/MemStore.cc	2012-09-01 14:38:36 +0000
+++ src/MemStore.cc	2012-09-04 09:10:20 +0000
@@ -11,6 +11,7 @@
 #include "MemObject.h"
 #include "MemStore.h"
 #include "mime_header.h"
+#include "SquidConfig.h"
 #include "StoreStats.h"
 #include "tools.h"
 

=== modified file 'src/PeerDigest.h'
--- src/PeerDigest.h	2012-09-01 14:38:36 +0000
+++ src/PeerDigest.h	2012-09-04 14:38:44 +0000
@@ -38,7 +38,8 @@
 /* for CacheDigestGuessStats */
 #include "StatCounters.h"
 
-struct _Version {
+class Version {
+public:
     short int current;		/* current version */
     short int required;		/* minimal version that can safely handle current version */
 };
@@ -59,7 +60,8 @@
     int reserved[32 - 6];
 };
 
-struct _DigestFetchState {
+class DigestFetchState {
+public:
     PeerDigest *pd;
     StoreEntry *entry;
     StoreEntry *old_entry;
@@ -90,7 +92,7 @@
     void *operator new (size_t);
     void operator delete(void *);
 
-    struct peer *peer;          /**< pointer back to peer structure, argh */
+    CachePeer *peer;          /**< pointer back to peer structure, argh */
     CacheDigest *cd;            /**< actual digest structure */
     String host;                /**< copy of peer->host */
     const char *req_result;     /**< text status of the last request */
@@ -129,7 +131,7 @@
 
 extern const Version CacheDigestVer;
 
-extern PeerDigest *peerDigestCreate(peer * p);
+extern PeerDigest *peerDigestCreate(CachePeer * p);
 extern void peerDigestNeeded(PeerDigest * pd);
 extern void peerDigestNotePeerGone(PeerDigest * pd);
 extern void peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e);

=== modified file 'src/PeerSelectState.h'
--- src/PeerSelectState.h	2012-08-28 13:00:30 +0000
+++ src/PeerSelectState.h	2012-09-04 14:38:44 +0000
@@ -51,18 +51,18 @@
 SQUIDCEXTERN void peerSelectInit(void);
 
 /**
- * A peer which has been selected as a possible destination.
+ * A CachePeer which has been selected as a possible destination.
  * Listed as pointers here so as to prevent duplicates being added but will
  * be converted to a set of IP address path options before handing back out
  * to the caller.
  *
  * Certain connection flags and outgoing settings will also be looked up and
- * set based on the received request and peer settings before handing back.
+ * set based on the received request and CachePeer settings before handing back.
  */
 class FwdServer
 {
 public:
-    peer *_peer;                /* NULL --> origin server */
+    CachePeer *_peer;                /* NULL --> origin server */
     hier_code code;
     FwdServer *next;
 };
@@ -86,21 +86,21 @@
     FwdServer *servers;    ///< temporary linked list of peers we will pass back.
 
     /*
-     * Why are these Ip::Address instead of peer *?  Because a
-     * peer structure can become invalid during the peer selection
+     * Why are these Ip::Address instead of CachePeer *?  Because a
+     * CachePeer structure can become invalid during the CachePeer selection
      * phase, specifically after a reconfigure.  Thus we need to lookup
-     * the peer * based on the address when we are finally ready to
-     * reference the peer structure.
+     * the CachePeer * based on the address when we are finally ready to
+     * reference the CachePeer structure.
      */
 
     Ip::Address first_parent_miss;
 
     Ip::Address closest_parent_miss;
     /*
-     * ->hit can be peer* because it should only be
+     * ->hit can be CachePeer* because it should only be
      * accessed during the thread when it is set
      */
-    peer *hit;
+    CachePeer *hit;
     peer_t hit_type;
     ping_data ping;
     ACLChecklist *acl_checklist;

=== added file 'src/RefreshPattern.h'
--- src/RefreshPattern.h	1970-01-01 00:00:00 +0000
+++ src/RefreshPattern.h	2012-09-10 07:59:18 +0000
@@ -0,0 +1,60 @@
+#ifndef SQUID_REFRESHPATTERN_H_
+#define SQUID_REFRESHPATTERN_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+class RefreshPattern {
+public:
+    const char *pattern;
+    regex_t compiled_pattern;
+    time_t min;
+    double pct;
+    time_t max;
+    RefreshPattern *next;
+
+    struct {
+        unsigned int icase:1;
+        unsigned int refresh_ims:1;
+        unsigned int store_stale:1;
+#if USE_HTTP_VIOLATIONS
+        unsigned int override_expire:1;
+        unsigned int override_lastmod:1;
+        unsigned int reload_into_ims:1;
+        unsigned int ignore_reload:1;
+        unsigned int ignore_no_cache:1;
+        unsigned int ignore_no_store:1;
+        unsigned int ignore_must_revalidate:1;
+        unsigned int ignore_private:1;
+        unsigned int ignore_auth:1;
+#endif
+    } flags;
+    int max_stale;
+};
+
+#endif /* SQUID_REFRESHPATTERN_H_ */

=== added file 'src/RegexList.cc'
--- src/RegexList.cc	1970-01-01 00:00:00 +0000
+++ src/RegexList.cc	2012-09-06 11:56:46 +0000
@@ -0,0 +1,32 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "RegexList.h"
+

=== added file 'src/RegexList.h'
--- src/RegexList.h	1970-01-01 00:00:00 +0000
+++ src/RegexList.h	2012-09-17 13:31:37 +0000
@@ -0,0 +1,40 @@
+#ifndef SQUID_REGEXLIST_H_
+#define SQUID_REGEXLIST_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+class RegexList {
+public:
+    int flags;
+    char *pattern;
+    regex_t regex;
+    RegexList *next;
+};
+
+#endif /* SQUID_REGEXLIST_H_ */

=== added file 'src/RequestFlags.cc'
--- src/RequestFlags.cc	1970-01-01 00:00:00 +0000
+++ src/RequestFlags.cc	2012-09-10 12:49:35 +0000
@@ -0,0 +1,97 @@
+/*
+ * DEBUG: section 73    HTTP Request
+ * AUTHOR: Duane Wessels
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "Debug.h"
+#include "RequestFlags.h"
+
+// TODO: move to .cci
+/* RequestFlags */
+bool
+RequestFlags::resetTCP() const
+{
+    return resetTCP_;
+}
+
+void
+RequestFlags::setResetTCP()
+{
+    debugs(73, 9, "request_flags::setResetTCP");
+    resetTCP_ = true;
+}
+
+void
+RequestFlags::clearResetTCP()
+{
+    debugs(73, 9, "request_flags::clearResetTCP");
+    resetTCP_ = false;
+}
+
+void
+RequestFlags::destinationIPLookupCompleted()
+{
+    destinationIPLookedUp_ = true;
+}
+
+bool
+RequestFlags::destinationIPLookedUp() const
+{
+    return destinationIPLookedUp_;
+}
+
+bool
+RequestFlags::isRanged() const
+{
+    return isRanged_;
+}
+
+void
+RequestFlags::setRanged()
+{
+    isRanged_ = true;
+}
+
+void
+RequestFlags::clearRanged()
+{
+    isRanged_ = false;
+}
+
+
+RequestFlags
+RequestFlags::cloneAdaptationImmune() const
+{
+    // At the time of writing, all flags where either safe to copy after
+    // adaptation or were not set at the time of the adaptation. If there
+    // are flags that are different, they should be cleared in the clone.
+    return *this;
+}

=== added file 'src/RequestFlags.h'
--- src/RequestFlags.h	1970-01-01 00:00:00 +0000
+++ src/RequestFlags.h	2012-09-13 16:20:41 +0000
@@ -0,0 +1,232 @@
+#ifndef SQUID_REQUESTFLAGS_H_
+#define SQUID_REQUESTFLAGS_H_
+/*
+ * DEBUG: section 73    HTTP Request
+ * AUTHOR: Duane Wessels
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+class RequestFlags {
+public:
+    RequestFlags():
+        nocache(false), ims(false), auth_(false), cachable(false),
+        hierarchical_(false), loopdetect(false), proxy_keepalive(false), proxying_(false),
+        refresh_(false), redirected(false), need_validation(false),
+        fail_on_validation_err(false), stale_if_hit(false), nocache_hack(false), accelerated_(false),
+        ignore_cc(false), intercepted_(false), hostVerified_(false), spoof_client_ip(false),
+        internal(false), internalclient(false), must_keepalive(false), connection_auth_wanted(false), connection_auth_disabled(false), connection_proxy_auth(false), pinned_(false),
+        canRePin_(false), authSent_(false), noDirect_(false), chunkedReply_(false),
+        streamError_(false), sslPeek_(false),
+        doneFollowXForwardedFor(!FOLLOW_X_FORWARDED_FOR),
+        sslBumped_(false), destinationIPLookedUp_(false), resetTCP_(false),
+        isRanged_(false)
+    {}
+
+    // When adding new flags, please update cloneAdaptationImmune() as needed.
+    bool resetTCP() const;
+    void setResetTCP();
+    void clearResetTCP();
+    void destinationIPLookupCompleted();
+    bool destinationIPLookedUp() const;
+    // returns a partial copy of the flags that includes only those flags
+    // that are safe for a related (e.g., ICAP-adapted) request to inherit
+    RequestFlags cloneAdaptationImmune() const;
+
+    bool isRanged() const;
+    void setRanged();
+    void clearRanged();
+
+    bool sslBumped() const { return sslBumped_; }
+    void setSslBumped(bool newValue=true) { sslBumped_=newValue; }
+    void clearSslBumpeD() { sslBumped_=false; }
+
+    bool doneFollowXFF() const { return doneFollowXForwardedFor; }
+    void setDoneFollowXFF() {
+        doneFollowXForwardedFor = true;
+    }
+    void clearDoneFollowXFF() {
+        /* do not allow clearing if FOLLOW_X_FORWARDED_FOR is unset */
+        doneFollowXForwardedFor = false || !FOLLOW_X_FORWARDED_FOR;
+    }
+
+    bool sslPeek() const { return sslPeek_; }
+    void setSslPeek() { sslPeek_=true; }
+    void clearSslPeek() { sslPeek_=false; }
+
+    bool hadStreamError() const { return streamError_; }
+    void setStreamError() { streamError_ = true; }
+    void clearStreamError() { streamError_ = false; }
+
+    bool isReplyChunked() const { return chunkedReply_; }
+    void markReplyChunked() { chunkedReply_ = true; }
+
+    void setNoDirect() { noDirect_=true; }
+    bool noDirect() const{ return noDirect_; }
+
+    bool authSent() const { return authSent_; }
+    void markAuthSent() { authSent_=true;}
+
+    bool canRePin() const { return canRePin_; }
+    void allowRepinning() { canRePin_=true; }
+
+    void markPinned() { pinned_ = true; }
+    void clearPinned() { pinned_ = false; }
+    bool pinned() const { return pinned_; }
+
+    //XXX: oddly this is set in client_side_request.cc, but never checked.
+    bool wantConnectionProxyAuth() const { return connection_proxy_auth; }
+    void requestConnectionProxyAuth() { connection_proxy_auth=true; }
+
+    void disableConnectionAuth() { connection_auth_disabled=true; }
+    bool connectionAuthDisabled() const { return connection_auth_disabled; }
+
+    void wantConnectionAuth() { connection_auth_wanted=true; }
+    bool connectionAuthWanted() const { return connection_auth_wanted; }
+
+    void setMustKeepalive() { must_keepalive = true; }
+    bool mustKeepalive() const { return must_keepalive; }
+
+    //XXX: oddly this is set in client_side_request.cc but never checked.
+    void setInternalClient() { internalclient=true;}
+
+    void markInternal() { internal=true; }
+    bool isInternal() const { return internal; }
+
+    bool spoofClientIp() const { return spoof_client_ip; }
+    void setSpoofClientIp() { spoof_client_ip = true; }
+
+    bool hostVerified() const { return hostVerified_; }
+    void markHostVerified() { hostVerified_=true; }
+
+    bool intercepted() const { return intercepted_;  }
+    void markIntercepted() { intercepted_=true; }
+
+    bool ignoringCacheControl() const { return ignore_cc; }
+    void ignoreCacheControl() { ignore_cc=true; }
+
+    bool accelerated() const { return accelerated_; }
+    void markAccelerated() { accelerated_ = true; }
+
+    /* nocache_hack is only enabled if USE_HTTP_VIOLATIONS is set at build-time.
+     * Compilers will have an easy time optimizing to a NOP otherwise. */
+    void hackNocache() { if (USE_HTTP_VIOLATIONS) nocache_hack=true; }
+    bool noCacheHackEnabled() const { return USE_HTTP_VIOLATIONS && nocache_hack; }
+
+    void setStaleIfHit() { stale_if_hit=true; }
+    void clearStaleIfHit() { stale_if_hit=false; }
+    bool staleIfHit() const { return stale_if_hit; }
+
+    void setFailOnValidationError() { fail_on_validation_err=true; }
+    bool failOnValidationError() const { return fail_on_validation_err; }
+
+    bool validationNeeded() const { return need_validation; }
+    void setNeedValidation()  { need_validation=true; }
+
+    bool isRedirected() const { return redirected; }
+    void markRedirected() { redirected=true; }
+
+    bool refresh() const { return refresh_; }
+    void setRefresh() { refresh_ = true; }
+
+    bool proxying() const { return proxying_; }
+    void setProxying() { proxying_ = true; }
+    void clearProxying() { proxying_ = false; }
+
+    bool proxyKeepalive() const { return proxy_keepalive; }
+    void setProxyKeepalive() { proxy_keepalive=true;}
+    void clearProxyKeepalive() { proxy_keepalive=false; }
+
+    bool loopDetect() const { return loopdetect; }
+    void setLoopDetect() { loopdetect = 1; }
+
+    bool hierarchical() const { return hierarchical_; }
+    void setHierarchical() { hierarchical_=true; }
+    void clearHierarchical() { hierarchical_=true; }
+
+    bool isCachable() const { return cachable; }
+    void setCachable(bool newValue=true) { cachable = newValue; }
+    void setNotCachable() { cachable = false; }
+
+    bool hasAuth() const { return auth_; }
+    void markAuth() { auth_=true; }
+
+    bool hasIMS() const { return ims; }
+    void setIMS() { ims=true; }
+    void clearIMS() { ims=false; }
+
+    bool noCache() const { return nocache; }
+    void setNocache() { nocache=true;}
+private:
+    bool nocache :1; ///< whether the response to this request may be READ from cache
+    bool ims :1;
+    bool auth_ :1;
+    bool cachable :1; ///< whether the response to thie request may be stored in the cache
+    bool hierarchical_ :1;
+    bool loopdetect :1;
+    bool proxy_keepalive :1;
+    bool proxying_ :1; /* this should be killed, also in httpstateflags */
+    bool refresh_ :1;
+    bool redirected :1;
+    bool need_validation :1;
+    bool fail_on_validation_err :1; ///< whether we should fail if validation fails
+    bool stale_if_hit :1; ///< reply is stale if it is a hit
+    /* for changing/ignoring no-cache requests. Unused unless USE_HTTP_VIOLATIONS */
+    bool nocache_hack :1;
+    bool accelerated_ :1; ///<request is accelerated
+    bool ignore_cc :1; ///< ignore Cache-Control
+    bool intercepted_ :1; ///< intercepted request
+    bool hostVerified_ :1; ///< whether the Host: header passed verification
+    bool spoof_client_ip :1; ///< spoof client ip if possible
+    bool internal :1;
+    bool internalclient :1;
+    bool must_keepalive :1;
+    bool connection_auth_wanted :1; /** Request wants connection oriented auth */
+    bool connection_auth_disabled :1; ///< Connection oriented auth can't be supported
+    bool connection_proxy_auth :1; ///< Request wants connection oriented auth
+    bool pinned_ :1; ///< Request sent on a pinned connection
+    bool canRePin_ :1; ///< OK to reopen a failed pinned connection
+    bool authSent_ :1; ///< Authentication was forwarded
+    /** Deny direct forwarding unless overriden by always_direct.
+     * Used in accelerator mode */
+    bool noDirect_ :1;
+    bool chunkedReply_ :1; ///< Reply with chunked transfer encoding
+    bool streamError_ :1; ///< Whether stream error has occured
+    bool sslPeek_ :1; ///< internal ssl-bump request to get server cert
+    /* doneFollowXForwardedFor is set by default to the opposite of
+     * compilation option FOLLOW_X_FORWARDED_FOR (so that it returns
+     * always "done" if the build option is disabled).
+     */
+    bool doneFollowXForwardedFor :1;
+    bool sslBumped_ :1; /**< ssl-bumped request*/
+    bool destinationIPLookedUp_:1;
+    bool resetTCP_:1;                ///< request to reset the TCP stream
+    bool isRanged_ :1;
+};
+
+#endif /* SQUID_REQUESTFLAGS_H_ */

=== modified file 'src/Server.cc'
--- src/Server.cc	2012-09-01 14:38:36 +0000
+++ src/Server.cc	2012-09-04 09:10:20 +0000
@@ -53,6 +53,7 @@
 #include "adaptation/Answer.h"
 #include "adaptation/Iterator.h"
 #include "base/AsyncCall.h"
+#include "SquidConfig.h"
 #endif
 
 // implemented in client_side_reply.cc until sides have a common parent

=== modified file 'src/SquidConfig.cc'
--- src/SquidConfig.cc	2012-01-20 18:55:04 +0000
+++ src/SquidConfig.cc	2012-09-04 09:10:20 +0000
@@ -1,12 +1,7 @@
-/*
- * $Id$
- */
-
 #include "squid.h"
-#include "ip/Address.h"
-// just for the global definition of Config and Config2
-#include "structs.h"
+#include "SquidConfig.h"
 
 struct SquidConfig Config;
 
 struct SquidConfig2 Config2;
+

=== added file 'src/SquidConfig.h'
--- src/SquidConfig.h	1970-01-01 00:00:00 +0000
+++ src/SquidConfig.h	2012-09-17 13:31:37 +0000
@@ -0,0 +1,552 @@
+#ifndef SQUID_SQUIDCONFIG_H_
+#define SQUID_SQUIDCONFIG_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "acl/AclAddress.h"
+#include "ClientDelayConfig.h"
+#include "DelayConfig.h"
+#include "HttpHeaderTools.h"
+#include "icmp/IcmpConfig.h"
+#include "ip/Address.h"
+#include "RefCount.h"
+#include "structs.h"
+#include "YesNoNone.h"
+
+#if USE_SSL
+#include <openssl/ssl.h>
+#endif
+
+class acl_access;
+class acl_size_t;
+class AclDenyInfoList;
+class CacheMgrPasswd;
+class HeaderManglers;
+class RefreshPattern;
+class RemovalPolicySettings;
+class SwapDir;
+
+namespace AnyP {
+class PortCfg;
+}
+
+class SquidConfig {
+public:
+    struct {
+        /* These should be for the Store::Root instance.
+        * this needs pluggable parsing to be done smoothly.
+        */
+        int highWaterMark;
+        int lowWaterMark;
+    } Swap;
+
+    YesNoNone memShared; ///< whether the memory cache is shared among workers
+    size_t memMaxSize;
+
+    struct {
+        int64_t min;
+        int pct;
+        int64_t max;
+    } quickAbort;
+    int64_t readAheadGap;
+    RemovalPolicySettings *replPolicy;
+    RemovalPolicySettings *memPolicy;
+#if USE_HTTP_VIOLATIONS
+    time_t negativeTtl;
+#endif
+    time_t maxStale;
+    time_t negativeDnsTtl;
+    time_t positiveDnsTtl;
+    time_t shutdownLifetime;
+    time_t backgroundPingRate;
+
+    struct {
+        time_t read;
+        time_t write;
+        time_t lifetime;
+        time_t connect;
+        time_t forward;
+        time_t peer_connect;
+        time_t request;
+        time_t clientIdlePconn;
+        time_t serverIdlePconn;
+        time_t siteSelect;
+        time_t deadPeer;
+        int icp_query;      /* msec */
+        int icp_query_max;  /* msec */
+        int icp_query_min;  /* msec */
+        int mcast_icp_query;    /* msec */
+
+#if !USE_DNSHELPER
+        time_msec_t idns_retransmit;
+        time_msec_t idns_query;
+#endif
+
+    } Timeout;
+    size_t maxRequestHeaderSize;
+    int64_t maxRequestBodySize;
+    int64_t maxChunkedRequestBodySize;
+    size_t maxRequestBufferSize;
+    size_t maxReplyHeaderSize;
+    acl_size_t *ReplyBodySize;
+
+    struct {
+        unsigned short icp;
+#if USE_HTCP
+
+        unsigned short htcp;
+#endif
+#if SQUID_SNMP
+
+        unsigned short snmp;
+#endif
+    } Port;
+
+    struct {
+        AnyP::PortCfg *http;
+#if USE_SSL
+        AnyP::PortCfg *https;
+#endif
+    } Sockaddr;
+#if SQUID_SNMP
+
+    struct {
+        char *configFile;
+        char *agentInfo;
+    } Snmp;
+#endif
+#if USE_WCCP
+
+    struct {
+        Ip::Address router;
+        Ip::Address address;
+        int version;
+    } Wccp;
+#endif
+#if USE_WCCPv2
+
+    struct {
+        Ip::Address_list *router;
+        Ip::Address address;
+        int forwarding_method;
+        int return_method;
+        int assignment_method;
+        int weight;
+        int rebuildwait;
+        void *info;
+    } Wccp2;
+#endif
+
+#if USE_ICMP
+    IcmpConfig pinger;
+#endif
+
+    char *as_whois_server;
+
+    struct {
+        char *store;
+        char *swap;
+        CustomLog *accesslogs;
+#if ICAP_CLIENT
+        CustomLog *icaplogs;
+#endif
+        int rotateNumber;
+    } Log;
+    char *adminEmail;
+    char *EmailFrom;
+    char *EmailProgram;
+    char *effectiveUser;
+    char *visible_appname_string;
+    char *effectiveGroup;
+
+    struct {
+#if USE_DNSHELPER
+        char *dnsserver;
+#endif
+
+        wordlist *redirect;
+#if USE_UNLINKD
+
+        char *unlinkd;
+#endif
+
+        char *diskd;
+#if USE_SSL
+
+        char *ssl_password;
+#endif
+
+    } Program;
+#if USE_DNSHELPER
+    HelperChildConfig dnsChildren;
+#endif
+
+    HelperChildConfig redirectChildren;
+    time_t authenticateGCInterval;
+    time_t authenticateTTL;
+    time_t authenticateIpTTL;
+
+    struct {
+        char *surrogate_id;
+    } Accel;
+    char *appendDomain;
+    size_t appendDomainLen;
+    char *pidFilename;
+    char *netdbFilename;
+    char *mimeTablePathname;
+    char *etcHostsPath;
+    char *visibleHostname;
+    char *uniqueHostname;
+    wordlist *hostnameAliases;
+    char *errHtmlText;
+
+    struct {
+        char *host;
+        char *file;
+        time_t period;
+        unsigned short port;
+    } Announce;
+
+    struct {
+
+        Ip::Address udp_incoming;
+        Ip::Address udp_outgoing;
+#if SQUID_SNMP
+        Ip::Address snmp_incoming;
+        Ip::Address snmp_outgoing;
+#endif
+        /* FIXME INET6 : this should really be a CIDR value */
+        Ip::Address client_netmask;
+    } Addrs;
+    size_t tcpRcvBufsz;
+    size_t udpMaxHitObjsz;
+    wordlist *hierarchy_stoplist;
+    wordlist *mcast_group_list;
+    wordlist *dns_nameservers;
+    CachePeer *peers;
+    int npeers;
+
+    struct {
+        int size;
+        int low;
+        int high;
+    } ipcache;
+
+    struct {
+        int size;
+    } fqdncache;
+    int minDirectHops;
+    int minDirectRtt;
+    CacheMgrPasswd *passwd_list;
+
+    struct {
+        int objectsPerBucket;
+        int64_t avgObjectSize;
+        int64_t maxObjectSize;
+        int64_t minObjectSize;
+        size_t maxInMemObjSize;
+    } Store;
+
+    struct {
+        int high;
+        int low;
+        time_t period;
+    } Netdb;
+
+    struct {
+        int log_udp;
+        int res_defnames;
+        int anonymizer;
+        int client_db;
+        int query_icmp;
+        int icp_hit_stale;
+        int buffered_logs;
+        int common_log;
+        int log_mime_hdrs;
+        int log_fqdn;
+        int announce;
+        int mem_pools;
+        int test_reachability;
+        int half_closed_clients;
+        int refresh_all_ims;
+#if USE_HTTP_VIOLATIONS
+
+        int reload_into_ims;
+#endif
+
+        int offline;
+        int redir_rewrites_host;
+        int prefer_direct;
+        int nonhierarchical_direct;
+        int strip_query_terms;
+        int redirector_bypass;
+        int ignore_unknown_nameservers;
+        int client_pconns;
+        int server_pconns;
+        int error_pconns;
+#if USE_CACHE_DIGESTS
+
+        int digest_generation;
+#endif
+
+        int ie_refresh;
+        int vary_ignore_expire;
+        int pipeline_prefetch;
+        int surrogate_is_remote;
+        int request_entities;
+        int detect_broken_server_pconns;
+        int balance_on_multiple_ip;
+        int relaxed_header_parser;
+        int check_hostnames;
+        int allow_underscore;
+        int via;
+        int emailErrData;
+        int httpd_suppress_version_string;
+        int global_internal_static;
+
+#if FOLLOW_X_FORWARDED_FOR
+        int acl_uses_indirect_client;
+        int delay_pool_uses_indirect_client;
+        int log_uses_indirect_client;
+#if LINUX_NETFILTER
+        int tproxy_uses_indirect_client;
+#endif
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+        int WIN32_IpAddrChangeMonitor;
+        int memory_cache_first;
+        int memory_cache_disk;
+        int hostStrictVerify;
+        int client_dst_passthru;
+    } onoff;
+
+    int forward_max_tries;
+    int connect_retries;
+
+    class ACL *aclList;
+
+    struct {
+        acl_access *http;
+        acl_access *adapted_http;
+        acl_access *icp;
+        acl_access *miss;
+        acl_access *NeverDirect;
+        acl_access *AlwaysDirect;
+        acl_access *ASlists;
+        acl_access *noCache;
+        acl_access *log;
+#if SQUID_SNMP
+
+        acl_access *snmp;
+#endif
+#if USE_HTTP_VIOLATIONS
+        acl_access *brokenPosts;
+#endif
+        acl_access *redirector;
+        acl_access *reply;
+        AclAddress *outgoing_address;
+#if USE_HTCP
+
+        acl_access *htcp;
+        acl_access *htcp_clr;
+#endif
+
+#if USE_SSL
+        acl_access *ssl_bump;
+#endif
+#if FOLLOW_X_FORWARDED_FOR
+        acl_access *followXFF;
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+#if ICAP_CLIENT
+        acl_access* icap;
+#endif
+    } accessList;
+    AclDenyInfoList *denyInfoList;
+
+    struct {
+        size_t list_width;
+        int list_wrap;
+        char *anon_user;
+        int passive;
+        int epsv_all;
+        int epsv;
+        int eprt;
+        int sanitycheck;
+        int telnet;
+    } Ftp;
+    RefreshPattern *Refresh;
+
+    struct _cacheSwap {
+        RefCount<SwapDir> *swapDirs;
+        int n_allocated;
+        int n_configured;
+        /// number of disk processes required to support all cache_dirs
+        int n_strands;
+    } cacheSwap;
+    /*
+     * I'm sick of having to keep doing this ..
+     */
+#define INDEXSD(i)   (Config.cacheSwap.swapDirs[(i)].getRaw())
+
+    struct {
+        char *directory;
+        int use_short_names;
+    } icons;
+    char *errorDirectory;
+#if USE_ERR_LOCALES
+    char *errorDefaultLanguage;
+    int errorLogMissingLanguages;
+#endif
+    char *errorStylesheet;
+
+    struct {
+        int onerror;
+    } retry;
+
+    struct {
+        int64_t limit;
+    } MemPools;
+#if USE_DELAY_POOLS
+
+    DelayConfig Delay;
+    ClientDelayConfig ClientDelay;
+#endif
+
+    struct {
+        struct {
+            int average;
+            int min_poll;
+        } dns, udp, tcp;
+    } comm_incoming;
+    int max_open_disk_fds;
+    int uri_whitespace;
+    acl_size_t *rangeOffsetLimit;
+#if MULTICAST_MISS_STREAM
+
+    struct {
+
+        Ip::Address addr;
+        int ttl;
+        unsigned short port;
+        char *encode_key;
+    } mcast_miss;
+#endif
+
+    /// request_header_access and request_header_replace
+    HeaderManglers *request_header_access;
+    /// reply_header_access and reply_header_replace
+    HeaderManglers *reply_header_access;
+    ///request_header_add access list
+    HeaderWithAclList *request_header_add;
+    char *coredump_dir;
+    char *chroot_dir;
+#if USE_CACHE_DIGESTS
+
+    struct {
+        int bits_per_entry;
+        time_t rebuild_period;
+        time_t rewrite_period;
+        size_t swapout_chunk_size;
+        int rebuild_chunk_percentage;
+    } digest;
+#endif
+#if USE_SSL
+
+    struct {
+        int unclean_shutdown;
+        char *ssl_engine;
+    } SSL;
+#endif
+
+    wordlist *ext_methods;
+
+    struct {
+        int high_rptm;
+        int high_pf;
+        size_t high_memory;
+    } warnings;
+    char *store_dir_select_algorithm;
+    int sleep_after_fork;   /* microseconds */
+    time_t minimum_expiry_time; /* seconds */
+    external_acl *externalAclHelperList;
+
+#if USE_SSL
+
+    struct {
+        char *cert;
+        char *key;
+        int version;
+        char *options;
+        char *cipher;
+        char *cafile;
+        char *capath;
+        char *crlfile;
+        char *flags;
+        acl_access *cert_error;
+        SSL_CTX *sslContext;
+        sslproxy_cert_sign *cert_sign;
+        sslproxy_cert_adapt *cert_adapt;
+    } ssl_client;
+#endif
+
+    char *accept_filter;
+    int umask;
+    int max_filedescriptors;
+    int workers;
+    CpuAffinityMap *cpuAffinityMap;
+
+#if USE_LOADABLE_MODULES
+    wordlist *loadable_module_names;
+#endif
+
+    int client_ip_max_connections;
+
+    struct {
+        int v4_first;       ///< Place IPv4 first in the order of DNS results.
+        ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies.
+    } dns;
+
+};
+
+extern SquidConfig Config;
+
+
+struct SquidConfig2 {
+    struct {
+        int enable_purge;
+        int mangle_request_headers;
+    } onoff;
+    uid_t effectiveUserID;
+    gid_t effectiveGroupID;
+};
+
+extern SquidConfig2 Config2;
+
+#endif /* SQUID_SQUIDCONFIG_H_ */

=== modified file 'src/Store.h'
--- src/Store.h	2012-09-01 14:38:36 +0000
+++ src/Store.h	2012-09-10 12:49:35 +0000
@@ -42,6 +42,7 @@
 #include "Range.h"
 #include "RefCount.h"
 #include "RemovalPolicy.h"
+#include "RequestFlags.h"
 #include "StoreIOBuffer.h"
 #include "StoreStats.h"
 
@@ -378,7 +379,8 @@
 SQUIDCEXTERN StoreEntry *storeGetPublicByRequestMethod(HttpRequest * request, const HttpRequestMethod& method);
 
 /// \ingroup StoreAPI
-SQUIDCEXTERN StoreEntry *storeCreateEntry(const char *, const char *, request_flags, const HttpRequestMethod&);
+class RequestFlags;
+extern StoreEntry *storeCreateEntry(const char *, const char *, const RequestFlags &, const HttpRequestMethod&);
 
 /// \ingroup StoreAPI
 SQUIDCEXTERN void storeInit(void);

=== modified file 'src/SwapDir.cc'
--- src/SwapDir.cc	2012-08-31 16:57:39 +0000
+++ src/SwapDir.cc	2012-09-04 09:10:20 +0000
@@ -36,6 +36,7 @@
 #include "ConfigOption.h"
 #include "globals.h"
 #include "Parsing.h"
+#include "SquidConfig.h"
 #include "StoreFileSystem.h"
 #include "SwapDir.h"
 #include "tools.h"

=== modified file 'src/SwapDir.h'
--- src/SwapDir.h	2012-09-01 14:38:36 +0000
+++ src/SwapDir.h	2012-09-04 09:10:20 +0000
@@ -30,6 +30,7 @@
 #ifndef SQUID_SWAPDIR_H
 #define SQUID_SWAPDIR_H
 
+#include "SquidConfig.h"
 #include "Store.h"
 #include "StoreIOState.h"
 

=== added file 'src/YesNoNone.cc'
--- src/YesNoNone.cc	1970-01-01 00:00:00 +0000
+++ src/YesNoNone.cc	2012-09-04 11:13:13 +0000
@@ -0,0 +1,43 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "squid.h"
+#include "YesNoNone.h"
+
+YesNoNone::operator void*() const
+{
+    assert(option != 0); // must call configure() first
+    return option > 0 ? (void*)this : NULL;
+}
+
+void
+YesNoNone::configure(bool beSet)
+{
+    option = beSet ? +1 : -1;
+}

=== added file 'src/YesNoNone.h'
--- src/YesNoNone.h	1970-01-01 00:00:00 +0000
+++ src/YesNoNone.h	2012-09-04 11:13:13 +0000
@@ -0,0 +1,56 @@
+#ifndef SQUID_YESNONONE_H_
+#define SQUID_YESNONONE_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+/// Used for boolean enabled/disabled options with complex default logic.
+/// Allows Squid to compute the right default after configuration.
+/// Checks that not-yet-defined option values are not used.
+class YesNoNone
+{
+// TODO: generalize to non-boolean option types
+public:
+    YesNoNone(): option(0) {}
+
+    /// returns true iff enabled; asserts if the option has not been configured
+    operator void *() const; // TODO: use a fancy/safer version of the operator
+
+    /// enables or disables the option;
+    void configure(bool beSet);
+
+    /// whether the option was enabled or disabled, by user or Squid
+    bool configured() const { return option != 0; }
+
+private:
+    enum { optUnspecified = -1, optDisabled = 0, optEnabled = 1 };
+    int option; ///< configured value or zero
+};
+
+
+#endif /* SQUID_YESNONONE_H_ */

=== modified file 'src/acl/Acl.cc'
--- src/acl/Acl.cc	2012-09-01 14:38:36 +0000
+++ src/acl/Acl.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "Debug.h"
 #include "dlink.h"
 #include "globals.h"
+#include "SquidConfig.h"
 
 const char *AclMatchedName = NULL;
 

=== added file 'src/acl/AclAddress.cc'
--- src/acl/AclAddress.cc	1970-01-01 00:00:00 +0000
+++ src/acl/AclAddress.cc	2012-09-05 19:54:09 +0000
@@ -0,0 +1,32 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ */
+
+#include "squid.h"
+#include "AclAddress.h"
+
+//TODO: fill in

=== added file 'src/acl/AclAddress.h'
--- src/acl/AclAddress.h	1970-01-01 00:00:00 +0000
+++ src/acl/AclAddress.h	2012-09-05 19:54:09 +0000
@@ -0,0 +1,42 @@
+#ifndef ACLADDRESS_H_
+#define ACLADDRESS_H_
+#include "Acl.h"
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ */
+
+#include "ip/Address.h"
+#include "acl/Acl.h"
+
+struct AclAddress {
+    AclAddress *next;
+    ACLList *aclList;
+
+    Ip::Address addr;
+};
+
+#endif /* ACLADDRESS_H_ */

=== added file 'src/acl/AclDenyInfoList.h'
--- src/acl/AclDenyInfoList.h	1970-01-01 00:00:00 +0000
+++ src/acl/AclDenyInfoList.h	2012-09-17 13:31:37 +0000
@@ -0,0 +1,44 @@
+#ifndef SQUID_ACLDENYINFOLIST_H_
+#define SQUID_ACLDENYINFOLIST_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "err_type.h"
+#include "acl/AclNameList.h"
+
+class AclDenyInfoList {
+public:
+    err_type err_page_id;
+    char *err_page_name;
+    AclNameList *acl_list;
+    AclDenyInfoList *next;
+};
+
+
+#endif /* SQUID_ACLDENYINFOLIST_H_ */

=== added file 'src/acl/AclNameList.h'
--- src/acl/AclNameList.h	1970-01-01 00:00:00 +0000
+++ src/acl/AclNameList.h	2012-09-05 13:45:53 +0000
@@ -0,0 +1,40 @@
+#ifndef SQUID_ACL_ACLNAMELIST_H_
+#define SQUID_ACL_ACLNAMELIST_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "defines.h"
+//TODO: convert to a std::list<string>
+class AclNameList {
+public:
+    char name[ACL_NAME_SZ];
+    AclNameList *next;
+};
+
+#endif /* SQUID_ACLNAMELIST_H_ */

=== modified file 'src/acl/Asn.cc'
--- src/acl/Asn.cc	2012-09-01 14:38:36 +0000
+++ src/acl/Asn.cc	2012-09-10 12:49:35 +0000
@@ -32,21 +32,23 @@
  */
 
 #include "squid.h"
-#include "mgr/Registration.h"
-#include "radix.h"
-#include "HttpRequest.h"
-#include "StoreClient.h"
-#include "Store.h"
 #include "acl/Acl.h"
 #include "acl/Asn.h"
 #include "acl/Checklist.h"
-#include "acl/SourceAsn.h"
 #include "acl/DestinationAsn.h"
 #include "acl/DestinationIp.h"
+#include "acl/SourceAsn.h"
 #include "cache_cf.h"
+#include "forward.h"
 #include "HttpReply.h"
+#include "HttpRequest.h"
 #include "ipcache.h"
-#include "forward.h"
+#include "mgr/Registration.h"
+#include "radix.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
+#include "Store.h"
+#include "StoreClient.h"
 #include "StoreClient.h"
 #include "wordlist.h"
 
@@ -247,7 +249,7 @@
     asState->request = HTTPMSGLOCK(req);
 
     if ((e = storeGetPublic(asres, METHOD_GET)) == NULL) {
-        e = storeCreateEntry(asres, asres, request_flags(), METHOD_GET);
+        e = storeCreateEntry(asres, asres, RequestFlags(), METHOD_GET);
         asState->sc = storeClientListAdd(e, asState);
         FwdState::fwdStart(Comm::ConnectionPointer(), e, asState->request);
     } else {

=== modified file 'src/acl/DestinationIp.cc'
--- src/acl/DestinationIp.cc	2012-09-01 14:38:36 +0000
+++ src/acl/DestinationIp.cc	2012-09-12 16:06:56 +0000
@@ -37,6 +37,7 @@
 #include "client_side.h"
 #include "comm/Connection.h"
 #include "HttpRequest.h"
+#include "SquidConfig.h"
 #include "structs.h"
 
 char const *
@@ -55,7 +56,7 @@
     // To resolve this we will force DIRECT and only to the original client destination.
     // In which case, we also need this ACL to accurately match the destination
     if (Config.onoff.client_dst_passthru && checklist->request &&
-            (checklist->request->flags.intercepted || checklist->request->flags.spoof_client_ip)) {
+            (checklist->request->flags.intercepted() || checklist->request->flags.spoofClientIp())) {
         assert(checklist->conn() && checklist->conn()->clientConnection != NULL);
         return ACLIP::match(checklist->conn()->clientConnection->local);
     }

=== modified file 'src/acl/FilledChecklist.cc'
--- src/acl/FilledChecklist.cc	2012-08-31 00:13:14 +0000
+++ src/acl/FilledChecklist.cc	2012-09-09 19:41:47 +0000
@@ -5,6 +5,7 @@
 #include "comm/forward.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
+#include "SquidConfig.h"
 #if USE_AUTH
 #include "auth/UserRequest.h"
 #include "auth/AclProxyAuth.h"

=== modified file 'src/acl/FilledChecklist.h'
--- src/acl/FilledChecklist.h	2012-08-14 11:53:07 +0000
+++ src/acl/FilledChecklist.h	2012-09-04 15:15:51 +0000
@@ -9,8 +9,9 @@
 #include "ssl/support.h"
 #endif
 
+class CachePeer;
+class ConnStateData;
 class ExternalACLEntry;
-class ConnStateData;
 class HttpRequest;
 
 /** \ingroup ACLAPI
@@ -52,7 +53,7 @@
     Ip::Address src_addr;
     Ip::Address dst_addr;
     Ip::Address my_addr;
-    struct peer *dst_peer;
+    CachePeer *dst_peer;
     char *dst_rdns;
 
     HttpRequest *request;

=== modified file 'src/acl/Gadgets.cc'
--- src/acl/Gadgets.cc	2012-09-01 14:38:36 +0000
+++ src/acl/Gadgets.cc	2012-09-05 14:49:29 +0000
@@ -38,6 +38,8 @@
 
 #include "squid.h"
 #include "acl/Acl.h"
+#include "acl/AclNameList.h"
+#include "acl/AclDenyInfoList.h"
 #include "acl/Checklist.h"
 #include "acl/Strategised.h"
 #include "acl/Gadgets.h"
@@ -49,14 +51,14 @@
 
 /* does name lookup, returns page_id */
 err_type
-aclGetDenyInfoPage(acl_deny_info_list ** head, const char *name, int redirect_allowed)
+aclGetDenyInfoPage(AclDenyInfoList ** head, const char *name, int redirect_allowed)
 {
-    acl_deny_info_list *A = NULL;
+    AclDenyInfoList *A = NULL;
 
     debugs(28, 8, HERE << "got called for " << name);
 
     for (A = *head; A; A = A->next) {
-        acl_name_list *L = NULL;
+        AclNameList *L = NULL;
 
         if (!redirect_allowed && strchr(A->err_page_name, ':') ) {
             debugs(28, 8, HERE << "Skip '" << A->err_page_name << "' 30x redirects not allowed as response here.");
@@ -106,14 +108,14 @@
  */
 
 void
-aclParseDenyInfoLine(acl_deny_info_list ** head)
+aclParseDenyInfoLine(AclDenyInfoList ** head)
 {
     char *t = NULL;
-    acl_deny_info_list *A = NULL;
-    acl_deny_info_list *B = NULL;
-    acl_deny_info_list **T = NULL;
-    acl_name_list *L = NULL;
-    acl_name_list **Tail = NULL;
+    AclDenyInfoList *A = NULL;
+    AclDenyInfoList *B = NULL;
+    AclDenyInfoList **T = NULL;
+    AclNameList *L = NULL;
+    AclNameList **Tail = NULL;
 
     /* first expect a page name */
 
@@ -123,15 +125,15 @@
         return;
     }
 
-    A = (acl_deny_info_list *)memAllocate(MEM_ACL_DENY_INFO_LIST);
+    A = (AclDenyInfoList *)memAllocate(MEM_ACL_DENY_INFO_LIST);
     A->err_page_id = errorReservePageId(t);
     A->err_page_name = xstrdup(t);
-    A->next = (acl_deny_info_list *) NULL;
+    A->next = (AclDenyInfoList *) NULL;
     /* next expect a list of ACL names */
     Tail = &A->acl_list;
 
     while ((t = strtok(NULL, w_space))) {
-        L = (acl_name_list *)memAllocate(MEM_ACL_NAME_LIST);
+        L = (AclNameList *)memAllocate(MEM_ACL_NAME_LIST);
         xstrncpy(L->name, t, ACL_NAME_SZ);
         *Tail = L;
         Tail = &L->next;
@@ -280,15 +282,15 @@
 }
 
 /* maex@space.net (06.09.1996)
- *    destroy an acl_deny_info_list */
+ *    destroy an AclDenyInfoList */
 
 void
-aclDestroyDenyInfoList(acl_deny_info_list ** list)
+aclDestroyDenyInfoList(AclDenyInfoList ** list)
 {
-    acl_deny_info_list *a = NULL;
-    acl_deny_info_list *a_next = NULL;
-    acl_name_list *l = NULL;
-    acl_name_list *l_next = NULL;
+    AclDenyInfoList *a = NULL;
+    AclDenyInfoList *a_next = NULL;
+    AclNameList *l = NULL;
+    AclNameList *l_next = NULL;
 
     debugs(28, 8, "aclDestroyDenyInfoList: invoked");
 

=== modified file 'src/acl/Gadgets.h'
--- src/acl/Gadgets.h	2011-10-28 19:43:45 +0000
+++ src/acl/Gadgets.h	2012-09-05 14:49:29 +0000
@@ -4,12 +4,12 @@
 #include "err_type.h"
 
 struct dlink_list;
-class StoreEntry;
-class ConfigParser;
 class acl_access;
 class ACL;
+class AclDenyInfoList;
 class ACLList;
-struct acl_deny_info_list;
+class ConfigParser;
+class StoreEntry;
 class wordlist;
 
 /// \ingroup ACLAPI
@@ -25,11 +25,11 @@
 /// \ingroup ACLAPI
 extern int aclIsProxyAuth(const char *name);
 /// \ingroup ACLAPI
-extern err_type aclGetDenyInfoPage(acl_deny_info_list ** head, const char *name, int redirect_allowed);
-/// \ingroup ACLAPI
-extern void aclParseDenyInfoLine(acl_deny_info_list **);
-/// \ingroup ACLAPI
-extern void aclDestroyDenyInfoList(acl_deny_info_list **);
+extern err_type aclGetDenyInfoPage(AclDenyInfoList ** head, const char *name, int redirect_allowed);
+/// \ingroup ACLAPI
+extern void aclParseDenyInfoLine(AclDenyInfoList **);
+/// \ingroup ACLAPI
+extern void aclDestroyDenyInfoList(AclDenyInfoList **);
 /// \ingroup ACLAPI
 extern wordlist *aclDumpGeneric(const ACL *);
 /// \ingroup ACLAPI

=== modified file 'src/acl/Makefile.am'
--- src/acl/Makefile.am	2011-06-20 08:51:32 +0000
+++ src/acl/Makefile.am	2012-09-05 19:54:09 +0000
@@ -19,7 +19,9 @@
 	Strategised.h \
 	\
 	FilledChecklist.cc \
-	FilledChecklist.h
+	FilledChecklist.h \
+	AclAddress.h \
+	AclAddress.cc
 
 ## data-specific ACLs
 libacls_la_SOURCES = \
@@ -105,6 +107,8 @@
 	UserData.cc \
 	UserData.h \
 	\
+	AclNameList.h \
+	AclDenyInfoList.h \
 	Gadgets.cc \
 	Gadgets.h
 

=== modified file 'src/acl/MaxConnection.cc'
--- src/acl/MaxConnection.cc	2012-08-31 16:57:39 +0000
+++ src/acl/MaxConnection.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "cache_cf.h"
 #include "client_db.h"
 #include "Debug.h"
+#include "SquidConfig.h"
 #include "wordlist.h"
 
 ACL *

=== modified file 'src/acl/PeerName.cc'
--- src/acl/PeerName.cc	2012-08-28 13:00:30 +0000
+++ src/acl/PeerName.cc	2012-09-04 15:15:51 +0000
@@ -3,6 +3,7 @@
 #include "acl/RegexData.h"
 #include "acl/StringData.h"
 #include "acl/Checklist.h"
+#include "CachePeer.h"
 
 int
 ACLPeerNameStrategy::match (ACLData<MatchType> * &data, ACLFilledChecklist *checklist)

=== modified file 'src/acl/RegexData.cc'
--- src/acl/RegexData.cc	2012-09-01 14:38:36 +0000
+++ src/acl/RegexData.cc	2012-09-06 11:56:46 +0000
@@ -41,12 +41,13 @@
 #include "ConfigParser.h"
 #include "Debug.h"
 #include "Mem.h"
+#include "RegexList.h"
 #include "wordlist.h"
 
 static void
-aclDestroyRegexList(relist * data)
+aclDestroyRegexList(RegexList * data)
 {
-    relist *next = NULL;
+    RegexList *next = NULL;
 
     for (; data; data = next) {
         next = data->next;
@@ -69,13 +70,13 @@
 
     debugs(28, 3, "aclRegexData::match: checking '" << word << "'");
 
-    relist *first, *prev;
+    RegexList *first, *prev;
 
     first = data;
 
     prev = NULL;
 
-    relist *current = first;
+    RegexList *current = first;
 
     while (current) {
         debugs(28, 3, "aclRegexData::match: looking for '" << current->pattern << "'");
@@ -104,7 +105,7 @@
 ACLRegexData::dump()
 {
     wordlist *W = NULL;
-    relist *temp = data;
+    RegexList *temp = data;
     int flags = REG_EXTENDED | REG_NOSUB;
 
     while (temp != NULL) {
@@ -152,11 +153,11 @@
     return t;
 }
 
-static relist **
-compileRE(relist **Tail, char * RE, int flags)
+static RegexList **
+compileRE(RegexList **Tail, char * RE, int flags)
 {
     int errcode;
-    relist *q;
+    RegexList *q;
     regex_t comp;
 
     if (RE == NULL  ||  *RE == '\0')
@@ -171,7 +172,7 @@
     }
     debugs(28, 2, "compileRE: compiled '" << RE << "' with flags " << flags );
 
-    q = (relist *) memAllocate(MEM_RELIST);
+    q = (RegexList *) memAllocate(MEM_RELIST);
     q->pattern = xstrdup(RE);
     q->regex = comp;
     q->flags = flags;
@@ -186,11 +187,11 @@
  * called only once per ACL.
  */
 static int
-compileOptimisedREs(relist **curlist, wordlist * wl)
+compileOptimisedREs(RegexList **curlist, wordlist * wl)
 {
-    relist **Tail;
-    relist *newlist;
-    relist **newlistp;
+    RegexList **Tail;
+    RegexList *newlist;
+    RegexList **newlistp;
     int numREs = 0;
     int flags = REG_EXTENDED | REG_NOSUB;
     int largeREindex = 0;
@@ -288,10 +289,10 @@
 }
 
 static void
-compileUnoptimisedREs(relist **curlist, wordlist * wl)
+compileUnoptimisedREs(RegexList **curlist, wordlist * wl)
 {
-    relist **Tail;
-    relist **newTail;
+    RegexList **Tail;
+    RegexList **newTail;
     int flags = REG_EXTENDED | REG_NOSUB;
 
     for (Tail = curlist; *Tail != NULL; Tail = &((*Tail)->next))
@@ -314,7 +315,7 @@
 }
 
 static void
-aclParseRegexList(relist **curlist)
+aclParseRegexList(RegexList **curlist)
 {
     char *t;
     wordlist *wl = NULL;

=== modified file 'src/acl/RegexData.h'
--- src/acl/RegexData.h	2012-09-01 14:38:36 +0000
+++ src/acl/RegexData.h	2012-09-06 11:56:46 +0000
@@ -35,8 +35,7 @@
 #include "acl/Data.h"
 #include "MemPool.h"
 
-/** \todo CLEANUP: break out relist, we don't need the rest. */
-#include "structs.h"
+class RegexList;
 
 class ACLRegexData : public ACLData<char const *>
 {
@@ -52,7 +51,7 @@
     virtual ACLData<char const *> *clone() const;
 
 private:
-    relist *data;
+    RegexList *data;
 };
 
 MEMPROXY_CLASS_INLINE(ACLRegexData);

=== modified file 'src/adaptation/icap/Config.cc'
--- src/adaptation/icap/Config.cc	2012-09-01 14:38:36 +0000
+++ src/adaptation/icap/Config.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "adaptation/icap/ServiceRep.h"
 #include "HttpRequest.h"
 #include "HttpReply.h"
+#include "SquidConfig.h"
 #include "wordlist.h"
 
 Adaptation::Icap::Config Adaptation::Icap::TheConfig;

=== modified file 'src/adaptation/icap/ServiceRep.cc'
--- src/adaptation/icap/ServiceRep.cc	2012-08-31 16:57:39 +0000
+++ src/adaptation/icap/ServiceRep.cc	2012-09-04 09:10:20 +0000
@@ -17,6 +17,7 @@
 #include "globals.h"
 #include "HttpReply.h"
 #include "ip/tools.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, ServiceRep);

=== modified file 'src/adaptation/icap/Xaction.cc'
--- src/adaptation/icap/Xaction.cc	2012-08-31 16:57:39 +0000
+++ src/adaptation/icap/Xaction.cc	2012-09-04 09:10:20 +0000
@@ -24,6 +24,7 @@
 #include "ipcache.h"
 #include "Mem.h"
 #include "pconn.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 //CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, Xaction);

=== modified file 'src/adaptation/icap/icap_log.cc'
--- src/adaptation/icap/icap_log.cc	2012-08-14 11:53:07 +0000
+++ src/adaptation/icap/icap_log.cc	2012-09-06 13:29:14 +0000
@@ -1,15 +1,17 @@
 #include "squid.h"
 #include "icap_log.h"
 #include "AccessLogEntry.h"
+#include "log/CustomLog.h"
 #include "log/File.h"
 #include "log/Formats.h"
+#include "SquidConfig.h"
 
 int IcapLogfileStatus = LOG_DISABLE;
 
 void
 icapLogOpen()
 {
-    customlog *log;
+    CustomLog *log;
 
     for (log = Config.Log.icaplogs; log; log = log->next) {
         if (log->type == Log::Format::CLF_NONE)
@@ -24,7 +26,7 @@
 void
 icapLogClose()
 {
-    customlog *log;
+    CustomLog *log;
 
     for (log = Config.Log.icaplogs; log; log = log->next) {
         if (log->logfile) {
@@ -37,7 +39,7 @@
 void
 icapLogRotate()
 {
-    for (customlog* log = Config.Log.icaplogs; log; log = log->next) {
+    for (CustomLog* log = Config.Log.icaplogs; log; log = log->next) {
         if (log->logfile) {
             logfileRotate(log->logfile);
         }

=== modified file 'src/auth/Acl.cc'
--- src/auth/Acl.cc	2012-08-14 11:53:07 +0000
+++ src/auth/Acl.cc	2012-09-12 17:01:17 +0000
@@ -24,17 +24,17 @@
     if (NULL == request) {
         fatal ("requiresRequest SHOULD have been true for this ACL!!");
         return ACCESS_DENIED;
-    } else if (request->flags.sslBumped) {
+    } else if (request->flags.sslBumped()) {
         debugs(28, 5, "SslBumped request: It is an encapsulated request do not authenticate");
         checklist->auth_user_request = checklist->conn() != NULL ? checklist->conn()->auth_user_request : request->auth_user_request;
         if (checklist->auth_user_request != NULL)
             return ACCESS_ALLOWED;
         else
             return ACCESS_DENIED;
-    } else if (request->flags.accelerated) {
+    } else if (request->flags.accelerated()) {
         /* WWW authorization on accelerated requests */
         headertype = HDR_AUTHORIZATION;
-    } else if (request->flags.intercepted || request->flags.spoof_client_ip) {
+    } else if (request->flags.intercepted() || request->flags.spoofClientIp()) {
         debugs(28, DBG_IMPORTANT, "NOTICE: Authentication not applicable on intercepted requests.");
         return ACCESS_DENIED;
     } else {

=== modified file 'src/auth/User.cc'
--- src/auth/User.cc	2012-09-01 14:38:36 +0000
+++ src/auth/User.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "acl/Gadgets.h"
 #include "event.h"
 #include "globals.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 

=== modified file 'src/auth/basic/User.cc'
--- src/auth/basic/User.cc	2012-08-14 11:53:07 +0000
+++ src/auth/basic/User.cc	2012-09-04 09:10:20 +0000
@@ -2,6 +2,7 @@
 #include "auth/basic/auth_basic.h"
 #include "auth/basic/User.h"
 #include "Debug.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "structs.h"
 

=== modified file 'src/auth/digest/User.cc'
--- src/auth/digest/User.cc	2012-08-14 11:53:07 +0000
+++ src/auth/digest/User.cc	2012-09-04 09:10:20 +0000
@@ -3,6 +3,7 @@
 #include "auth/digest/User.h"
 #include "Debug.h"
 #include "dlink.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "structs.h"
 

=== modified file 'src/auth/digest/auth_digest.cc'
--- src/auth/digest/auth_digest.cc	2012-09-01 14:38:36 +0000
+++ src/auth/digest/auth_digest.cc	2012-09-04 13:09:04 +0000
@@ -91,6 +91,7 @@
     {"response", (http_hdr_type)DIGEST_RESPONSE},
 };
 
+class HttpHeaderFieldInfo;
 static HttpHeaderFieldInfo *DigestFieldsInfo = NULL;
 
 /*

=== modified file 'src/auth/negotiate/UserRequest.cc'
--- src/auth/negotiate/UserRequest.cc	2012-08-31 16:57:39 +0000
+++ src/auth/negotiate/UserRequest.cc	2012-09-13 11:40:32 +0000
@@ -286,8 +286,8 @@
             ++arg;
         }
         safe_free(lm_request->server_blob);
-        lm_request->request->flags.must_keepalive = 1;
-        if (lm_request->request->flags.proxy_keepalive) {
+        lm_request->request->flags.setMustKeepalive();
+        if (lm_request->request->flags.proxyKeepalive()) {
             lm_request->server_blob = xstrdup(blob);
             auth_user_request->user()->credentials(Auth::Handshake);
             auth_user_request->denyMessage("Authentication in progress");

=== modified file 'src/auth/negotiate/auth_negotiate.cc'
--- src/auth/negotiate/auth_negotiate.cc	2012-09-01 14:38:36 +0000
+++ src/auth/negotiate/auth_negotiate.cc	2012-09-13 11:40:32 +0000
@@ -218,7 +218,7 @@
         return;
 
     /* Need keep-alive */
-    if (!request->flags.proxy_keepalive && request->flags.must_keepalive)
+    if (!request->flags.proxyKeepalive() && request->flags.mustKeepalive())
         return;
 
     /* New request, no user details */
@@ -229,7 +229,7 @@
         if (!keep_alive) {
             /* drop the connection */
             rep->header.delByName("keep-alive");
-            request->flags.proxy_keepalive = 0;
+            request->flags.clearProxyKeepalive();
         }
     } else {
         Auth::Negotiate::UserRequest *negotiate_request = dynamic_cast<Auth::Negotiate::UserRequest *>(auth_user_request.getRaw());
@@ -241,7 +241,7 @@
             /* here it makes sense to drop the connection, as auth is
              * tied to it, even if MAYBE the client could handle it - Kinkie */
             rep->header.delByName("keep-alive");
-            request->flags.proxy_keepalive = 0;
+            request->flags.clearProxyKeepalive();
             /* fall through */
 
         case Auth::Ok:

=== modified file 'src/auth/ntlm/UserRequest.cc'
--- src/auth/ntlm/UserRequest.cc	2012-08-14 11:53:07 +0000
+++ src/auth/ntlm/UserRequest.cc	2012-09-13 11:40:32 +0000
@@ -269,8 +269,8 @@
     if (strncasecmp(reply, "TT ", 3) == 0) {
         /* we have been given a blob to send to the client */
         safe_free(lm_request->server_blob);
-        lm_request->request->flags.must_keepalive = 1;
-        if (lm_request->request->flags.proxy_keepalive) {
+        lm_request->request->flags.setMustKeepalive();
+        if (lm_request->request->flags.proxyKeepalive()) {
             lm_request->server_blob = xstrdup(blob);
             auth_user_request->user()->credentials(Auth::Handshake);
             auth_user_request->denyMessage("Authentication in progress");

=== modified file 'src/auth/ntlm/auth_ntlm.cc'
--- src/auth/ntlm/auth_ntlm.cc	2012-09-01 14:38:36 +0000
+++ src/auth/ntlm/auth_ntlm.cc	2012-09-13 11:40:32 +0000
@@ -205,7 +205,7 @@
         return;
 
     /* Need keep-alive */
-    if (!request->flags.proxy_keepalive && request->flags.must_keepalive)
+    if (!request->flags.proxyKeepalive() && request->flags.mustKeepalive())
         return;
 
     /* New request, no user details */
@@ -215,7 +215,7 @@
 
         if (!keep_alive) {
             /* drop the connection */
-            request->flags.proxy_keepalive = 0;
+            request->flags.clearProxyKeepalive();
         }
     } else {
         Auth::Ntlm::UserRequest *ntlm_request = dynamic_cast<Auth::Ntlm::UserRequest *>(auth_user_request.getRaw());
@@ -226,7 +226,7 @@
         case Auth::Failed:
             /* here it makes sense to drop the connection, as auth is
              * tied to it, even if MAYBE the client could handle it - Kinkie */
-            request->flags.proxy_keepalive = 0;
+            request->flags.clearProxyKeepalive();
             /* fall through */
 
         case Auth::Ok:

=== modified file 'src/cache_cf.cc'
--- src/cache_cf.cc	2012-09-01 14:38:36 +0000
+++ src/cache_cf.cc	2012-09-10 09:44:06 +0000
@@ -32,11 +32,16 @@
 
 #include "squid.h"
 #include "acl/Acl.h"
+#include "acl/AclAddress.h"
+#include "acl/AclDenyInfoList.h"
+#include "acl/AclNameList.h"
 #include "acl/Gadgets.h"
 #include "acl/MethodData.h"
 #include "anyp/PortCfg.h"
 #include "AuthReg.h"
 #include "base/RunnersRegistry.h"
+#include "CacheMgrPasswd.h"
+#include "CachePeer.h"
 #include "cache_cf.h"
 #include "ConfigParser.h"
 #include "CpuAffinityMap.h"
@@ -53,12 +58,15 @@
 #include "ip/tools.h"
 #include "ipc/Kids.h"
 #include "log/Config.h"
+#include "log/CustomLog.h"
 #include "Mem.h"
 #include "MemBuf.h"
 #include "mgr/Registration.h"
 #include "Parsing.h"
 #include "PeerDigest.h"
+#include "RefreshPattern.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidString.h"
 #include "Store.h"
 #include "StoreFileSystem.h"
@@ -148,7 +156,7 @@
 
 static peer_t parseNeighborType(const char *s);
 
-CBDATA_TYPE(peer);
+CBDATA_TYPE(CachePeer);
 
 static const char *const T_MILLISECOND_STR = "millisecond";
 static const char *const T_SECOND_STR = "second";
@@ -168,14 +176,14 @@
 
 static const char *const list_sep = ", \t\n\r";
 
-static void parse_access_log(customlog ** customlog_definitions);
-static int check_null_access_log(customlog *customlog_definitions);
-static void dump_access_log(StoreEntry * entry, const char *name, customlog * definitions);
-static void free_access_log(customlog ** definitions);
+static void parse_access_log(CustomLog ** customlog_definitions);
+static int check_null_access_log(CustomLog *customlog_definitions);
+static void dump_access_log(StoreEntry * entry, const char *name, CustomLog * definitions);
+static void free_access_log(CustomLog ** definitions);
 
 static void update_maxobjsize(void);
 static void configDoConfigure(void);
-static void parse_refreshpattern(refresh_t **);
+static void parse_refreshpattern(RefreshPattern **);
 static uint64_t parseTimeUnits(const char *unit,  bool allowMsec);
 static void parseTimeLine(time_msec_t * tptr, const char *units, bool allowMsec);
 static void parse_u_short(unsigned short * var);
@@ -208,9 +216,9 @@
 static void dump_HeaderWithAclList(StoreEntry * entry, const char *name, HeaderWithAclList *headers);
 static void parse_HeaderWithAclList(HeaderWithAclList **header);
 static void free_HeaderWithAclList(HeaderWithAclList **header);
-static void parse_denyinfo(acl_deny_info_list ** var);
-static void dump_denyinfo(StoreEntry * entry, const char *name, acl_deny_info_list * var);
-static void free_denyinfo(acl_deny_info_list ** var);
+static void parse_denyinfo(AclDenyInfoList ** var);
+static void dump_denyinfo(StoreEntry * entry, const char *name, AclDenyInfoList * var);
+static void free_denyinfo(AclDenyInfoList ** var);
 
 #if USE_WCCPv2
 static void parse_IpAddress_list(Ip::Address_list **);
@@ -759,7 +767,7 @@
 #if USE_HTTP_VIOLATIONS
 
     {
-        const refresh_t *R;
+        const RefreshPattern *R;
 
         for (R = Config.Refresh; R; R = R->next) {
             if (!R->flags.override_expire)
@@ -918,7 +926,7 @@
 
     Config.ssl_client.sslContext = sslCreateClientContext(Config.ssl_client.cert, Config.ssl_client.key, Config.ssl_client.version, Config.ssl_client.cipher, Config.ssl_client.options, Config.ssl_client.flags, Config.ssl_client.cafile, Config.ssl_client.capath, Config.ssl_client.crlfile);
 
-    for (peer *p = Config.peers; p != NULL; p = p->next) {
+    for (CachePeer *p = Config.peers; p != NULL; p = p->next) {
         if (p->use_ssl) {
             debugs(3, DBG_IMPORTANT, "Initializing cache_peer " << p->name << " SSL context");
             p->sslContext = sslCreateClientContext(p->sslcert, p->sslkey, p->sslversion, p->sslcipher, p->ssloptions, p->sslflags, p->sslcafile, p->sslcapath, p->sslcrlfile);
@@ -1360,13 +1368,13 @@
     addr->SetEmpty();
 }
 
-CBDATA_TYPE(acl_address);
+CBDATA_TYPE(AclAddress);
 
 static void
-dump_acl_address(StoreEntry * entry, const char *name, acl_address * head)
+dump_acl_address(StoreEntry * entry, const char *name, AclAddress * head)
 {
     char buf[MAX_IPSTRLEN];
-    acl_address *l;
+    AclAddress *l;
 
     for (l = head; l; l = l->next) {
         if (!l->addr.IsAnyAddr())
@@ -1383,17 +1391,17 @@
 static void
 freed_acl_address(void *data)
 {
-    acl_address *l = static_cast<acl_address *>(data);
+    AclAddress *l = static_cast<AclAddress *>(data);
     aclDestroyAclList(&l->aclList);
 }
 
 static void
-parse_acl_address(acl_address ** head)
+parse_acl_address(AclAddress ** head)
 {
-    acl_address *l;
-    acl_address **tail = head;	/* sane name below */
-    CBDATA_INIT_TYPE_FREECB(acl_address, freed_acl_address);
-    l = cbdataAlloc(acl_address);
+    AclAddress *l;
+    AclAddress **tail = head;	/* sane name below */
+    CBDATA_INIT_TYPE_FREECB(AclAddress, freed_acl_address);
+    l = cbdataAlloc(AclAddress);
     parse_address(&l->addr);
     aclParseAclList(LegacyParser, &l->aclList);
 
@@ -1404,10 +1412,10 @@
 }
 
 static void
-free_acl_address(acl_address ** head)
+free_acl_address(AclAddress ** head)
 {
     while (*head) {
-        acl_address *l = *head;
+        AclAddress *l = *head;
         *head = l->next;
         cbdataFree(l);
     }
@@ -1965,7 +1973,7 @@
 }
 
 static void
-dump_peer(StoreEntry * entry, const char *name, peer * p)
+dump_peer(StoreEntry * entry, const char *name, CachePeer * p)
 {
     domain_ping *d;
     domain_type *t;
@@ -2065,12 +2073,12 @@
 }
 
 static void
-parse_peer(peer ** head)
+parse_peer(CachePeer ** head)
 {
     char *token = NULL;
-    peer *p;
-    CBDATA_INIT_TYPE_FREECB(peer, peerDestroy);
-    p = cbdataAlloc(peer);
+    CachePeer *p;
+    CBDATA_INIT_TYPE_FREECB(CachePeer, peerDestroy);
+    p = cbdataAlloc(CachePeer);
     p->http_port = CACHE_HTTP_PORT;
     p->icp.port = CACHE_ICP_PORT;
     p->weight = 1;
@@ -2344,9 +2352,9 @@
 }
 
 static void
-free_peer(peer ** P)
+free_peer(CachePeer ** P)
 {
-    peer *p;
+    CachePeer *p;
 
     while ((p = *P) != NULL) {
         *P = p->next;
@@ -2362,7 +2370,7 @@
 }
 
 static void
-dump_cachemgrpasswd(StoreEntry * entry, const char *name, cachemgr_passwd * list)
+dump_cachemgrpasswd(StoreEntry * entry, const char *name, CacheMgrPasswd * list)
 {
     wordlist *w;
 
@@ -2382,15 +2390,15 @@
 }
 
 static void
-parse_cachemgrpasswd(cachemgr_passwd ** head)
+parse_cachemgrpasswd(CacheMgrPasswd ** head)
 {
     char *passwd = NULL;
     wordlist *actions = NULL;
-    cachemgr_passwd *p;
-    cachemgr_passwd **P;
+    CacheMgrPasswd *p;
+    CacheMgrPasswd **P;
     parse_string(&passwd);
     parse_wordlist(&actions);
-    p = static_cast<cachemgr_passwd *>(xcalloc(1, sizeof(cachemgr_passwd)));
+    p = new CacheMgrPasswd;
     p->passwd = passwd;
     p->actions = actions;
 
@@ -2399,7 +2407,7 @@
          * See if any of the actions from this line already have a
          * password from previous lines.  The password checking
          * routines in cache_manager.c take the the password from
-         * the first cachemgr_passwd struct that contains the
+         * the first CacheMgrPasswd struct that contains the
          * requested action.  Thus, we should warn users who might
          * think they can have two passwords for the same action.
          */
@@ -2420,9 +2428,9 @@
 }
 
 static void
-free_cachemgrpasswd(cachemgr_passwd ** head)
+free_cachemgrpasswd(CacheMgrPasswd ** head)
 {
-    cachemgr_passwd *p;
+    CacheMgrPasswd *p;
 
     while ((p = *head) != NULL) {
         *head = p->next;
@@ -2433,9 +2441,9 @@
 }
 
 static void
-dump_denyinfo(StoreEntry * entry, const char *name, acl_deny_info_list * var)
+dump_denyinfo(StoreEntry * entry, const char *name, AclDenyInfoList * var)
 {
-    acl_name_list *a;
+    AclNameList *a;
 
     while (var != NULL) {
         storeAppendPrintf(entry, "%s %s", name, var->err_page_name);
@@ -2450,18 +2458,18 @@
 }
 
 static void
-parse_denyinfo(acl_deny_info_list ** var)
+parse_denyinfo(AclDenyInfoList ** var)
 {
     aclParseDenyInfoLine(var);
 }
 
 void
-free_denyinfo(acl_deny_info_list ** list)
+free_denyinfo(AclDenyInfoList ** list)
 {
-    acl_deny_info_list *a = NULL;
-    acl_deny_info_list *a_next = NULL;
-    acl_name_list *l = NULL;
-    acl_name_list *l_next = NULL;
+    AclDenyInfoList *a = NULL;
+    AclDenyInfoList *a_next = NULL;
+    AclNameList *l = NULL;
+    AclNameList *l_next = NULL;
 
     for (a = *list; a; a = a_next) {
         for (l = a->acl_list; l; l = l_next) {
@@ -2482,7 +2490,7 @@
 parse_peer_access(void)
 {
     char *host = NULL;
-    peer *p;
+    CachePeer *p;
 
     if (!(host = strtok(NULL, w_space)))
         self_destruct();
@@ -2507,7 +2515,7 @@
     while ((domain = strtok(NULL, list_sep))) {
         domain_ping *l = NULL;
         domain_ping **L = NULL;
-        peer *p;
+        CachePeer *p;
 
         if ((p = peerFindByName(host)) == NULL) {
             debugs(15, DBG_CRITICAL, "" << cfg_filename << ", line " << config_lineno << ": No cache_peer '" << host << "'");
@@ -2545,7 +2553,7 @@
     while ((domain = strtok(NULL, list_sep))) {
         domain_type *l = NULL;
         domain_type **L = NULL;
-        peer *p;
+        CachePeer *p;
 
         if ((p = peerFindByName(host)) == NULL) {
             debugs(15, DBG_CRITICAL, "" << cfg_filename << ", line " << config_lineno << ": No cache_peer '" << host << "'");
@@ -2637,7 +2645,7 @@
 #define free_tristate free_int
 
 static void
-dump_refreshpattern(StoreEntry * entry, const char *name, refresh_t * head)
+dump_refreshpattern(StoreEntry * entry, const char *name, RefreshPattern * head)
 {
     while (head != NULL) {
         storeAppendPrintf(entry, "%s%s %s %d %d%% %d",
@@ -2695,7 +2703,7 @@
 }
 
 static void
-parse_refreshpattern(refresh_t ** head)
+parse_refreshpattern(RefreshPattern ** head)
 {
     char *token;
     char *pattern;
@@ -2720,7 +2728,7 @@
 #endif
 
     int i;
-    refresh_t *t;
+    RefreshPattern *t;
     regex_t comp;
     int errcode;
     int flags = REG_EXTENDED | REG_NOSUB;
@@ -2825,7 +2833,7 @@
 
     pct = pct < 0.0 ? 0.0 : pct;
     max = max < 0 ? 0 : max;
-    t = static_cast<refresh_t *>(xcalloc(1, sizeof(refresh_t)));
+    t = static_cast<RefreshPattern *>(xcalloc(1, sizeof(RefreshPattern)));
     t->pattern = (char *) xstrdup(pattern);
     t->compiled_pattern = comp;
     t->min = min;
@@ -2885,9 +2893,9 @@
 }
 
 static void
-free_refreshpattern(refresh_t ** head)
+free_refreshpattern(RefreshPattern ** head)
 {
-    refresh_t *t;
+    RefreshPattern *t;
 
     while ((t = *head) != NULL) {
         *head = t->next;
@@ -3294,18 +3302,6 @@
     storeAppendPrintf(entry, "\n");
 }
 
-void
-YesNoNone::configure(bool beSet)
-{
-    option = beSet ? +1 : -1;
-}
-
-YesNoNone::operator void*() const
-{
-    assert(option != 0); // must call configure() first
-    return option > 0 ? (void*)this : NULL;
-}
-
 inline void
 free_YesNoNone(YesNoNone *)
 {
@@ -3981,11 +3977,11 @@
 #include "AccessLogEntry.h"
 
 static void
-parse_access_log(customlog ** logs)
+parse_access_log(CustomLog ** logs)
 {
     const char *filename, *logdef_name;
 
-    customlog *cl = (customlog *)xcalloc(1, sizeof(*cl));
+    CustomLog *cl = (CustomLog *)xcalloc(1, sizeof(*cl));
 
     if ((filename = strtok(NULL, w_space)) == NULL) {
         self_destruct();
@@ -4055,15 +4051,15 @@
 }
 
 static int
-check_null_access_log(customlog *customlog_definitions)
+check_null_access_log(CustomLog *customlog_definitions)
 {
     return customlog_definitions == NULL;
 }
 
 static void
-dump_access_log(StoreEntry * entry, const char *name, customlog * logs)
+dump_access_log(StoreEntry * entry, const char *name, CustomLog * logs)
 {
-    customlog *log;
+    CustomLog *log;
 
     for (log = logs; log; log = log->next) {
         storeAppendPrintf(entry, "%s ", name);
@@ -4115,10 +4111,10 @@
 }
 
 static void
-free_access_log(customlog ** definitions)
+free_access_log(CustomLog ** definitions)
 {
     while (*definitions) {
-        customlog *log = *definitions;
+        CustomLog *log = *definitions;
         *definitions = log->next;
 
         log->logFormat = NULL;

=== modified file 'src/cache_manager.cc'
--- src/cache_manager.cc	2012-09-03 08:42:58 +0000
+++ src/cache_manager.cc	2012-09-10 09:44:06 +0000
@@ -32,6 +32,7 @@
 
 #include "squid.h"
 #include "base/TextException.h"
+#include "CacheMgrPasswd.h"
 #include "CacheManager.h"
 #include "comm/Connection.h"
 #include "Debug.h"
@@ -49,6 +50,7 @@
 #include "mgr/QueryParams.h"
 #include "protos.h"
 #include "tools.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "wordlist.h"
@@ -458,12 +460,12 @@
 }
 
 /*
- \ingroup CacheManagerInternal
+ * \ingroup CacheManagerInternal
  * gets from the global Config the password the user would need to supply
  * for the action she queried
  */
 char *
-CacheManager::PasswdGet(cachemgr_passwd * a, const char *action)
+CacheManager::PasswdGet(CacheMgrPasswd * a, const char *action)
 {
     wordlist *w;
 

=== modified file 'src/carp.cc'
--- src/carp.cc	2012-09-01 14:38:36 +0000
+++ src/carp.cc	2012-09-04 15:15:51 +0000
@@ -33,9 +33,11 @@
  */
 
 #include "squid.h"
+#include "CachePeer.h"
 #include "HttpRequest.h"
 #include "mgr/Registration.h"
 #include "neighbors.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "URL.h"
 #include "URLScheme.h"
@@ -47,14 +49,14 @@
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
 
 static int n_carp_peers = 0;
-static peer **carp_peers = NULL;
+static CachePeer **carp_peers = NULL;
 static OBJH carpCachemgr;
 
 static int
 peerSortWeight(const void *a, const void *b)
 {
-    const peer *const *p1 = (const peer *const *)a;
-    const peer *const *p2 = (const peer *const *)b;
+    const CachePeer *const *p1 = (const CachePeer *const *)a;
+    const CachePeer *const *p2 = (const CachePeer *const *)b;
     return (*p1)->weight - (*p2)->weight;
 }
 
@@ -71,8 +73,8 @@
     int K;
     int k;
     double P_last, X_last, Xn;
-    peer *p;
-    peer **P;
+    CachePeer *p;
+    CachePeer **P;
     char *t;
     /* Clean up */
 
@@ -105,7 +107,7 @@
     if (n_carp_peers == 0)
         return;
 
-    carp_peers = (peer **)xcalloc(n_carp_peers, sizeof(*carp_peers));
+    carp_peers = (CachePeer **)xcalloc(n_carp_peers, sizeof(*carp_peers));
 
     /* Build a list of the found peers and calculate hashes and load factors */
     for (P = carp_peers, p = Config.peers; p; p = p->next) {
@@ -167,12 +169,12 @@
     }
 }
 
-peer *
+CachePeer *
 carpSelectParent(HttpRequest * request)
 {
     int k;
-    peer *p = NULL;
-    peer *tp;
+    CachePeer *p = NULL;
+    CachePeer *tp;
     unsigned int user_hash = 0;
     unsigned int combined_hash;
     double score;
@@ -184,7 +186,7 @@
     /* calculate hash key */
     debugs(39, 2, "carpSelectParent: Calculating hash for " << urlCanonical(request));
 
-    /* select peer */
+    /* select CachePeer */
     for (k = 0; k < n_carp_peers; ++k) {
         String key;
         tp = carp_peers[k];
@@ -250,7 +252,7 @@
 static void
 carpCachemgr(StoreEntry * sentry)
 {
-    peer *p;
+    CachePeer *p;
     int sumfetches = 0;
     storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
                       "Hostname",

=== modified file 'src/carp.h'
--- src/carp.h	2012-08-29 00:12:28 +0000
+++ src/carp.h	2012-09-04 14:38:44 +0000
@@ -33,10 +33,10 @@
 #ifndef SQUID_CARP_H_
 #define SQUID_CARP_H_
 
-class peer;
+class CachePeer;
 class HttpRequest;
 
 extern void carpInit(void);
-extern peer *carpSelectParent(HttpRequest *);
+extern CachePeer *carpSelectParent(HttpRequest *);
 
 #endif /* SQUID_CARP_H_ */

=== modified file 'src/client_db.cc'
--- src/client_db.cc	2012-09-01 14:38:36 +0000
+++ src/client_db.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "log/access_log.h"
 #include "Mem.h"
 #include "mgr/Registration.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "StatCounters.h"

=== modified file 'src/client_side.cc'
--- src/client_side.cc	2012-09-09 17:13:42 +0000
+++ src/client_side.cc	2012-09-13 11:40:32 +0000
@@ -83,6 +83,7 @@
 #include "anyp/PortCfg.h"
 #include "base/Subscription.h"
 #include "base/TextException.h"
+#include "CachePeer.h"
 #include "ChunkedCodingParser.h"
 #include "client_db.h"
 #include "client_side_reply.h"
@@ -120,6 +121,7 @@
 #include "mime_header.h"
 #include "profiler/Profiler.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "StatHist.h"
@@ -847,7 +849,10 @@
            RequestMethodStr(request->method));
 
     // TODO: move to HttpRequest::hdrCacheInit, just like HttpReply.
-    request->flags.proxy_keepalive = request->persistent() ? 1 : 0;
+    if (request->persistent())
+        request->flags.setProxyKeepalive();
+    else
+        request->flags.clearProxyKeepalive();
 }
 
 static int
@@ -983,7 +988,7 @@
 {
     assert(rep == NULL);
 
-    if (!multipartRangeRequest() && !http->request->flags.chunked_reply) {
+    if (!multipartRangeRequest() && !http->request->flags.isReplyChunked()) {
         size_t length = lengthToSend(bodyData.range());
         noteSentBodyBytes (length);
         AsyncCall::Pointer call = commCbCall(33, 5, "clientWriteBodyComplete",
@@ -1267,7 +1272,7 @@
     else if (rep->content_length != http->memObject()->getReply()->content_length)
         range_err = "INCONSISTENT length";	/* a bug? */
 
-    /* hits only - upstream peer determines correct behaviour on misses, and client_side_reply determines
+    /* hits only - upstream CachePeer determines correct behaviour on misses, and client_side_reply determines
      * hits candidates
      */
     else if (logTypeIsATcpHit(http->logType) && http->request->header.has(HDR_IF_RANGE) && !clientIfRangeMatch(http, rep))
@@ -1392,7 +1397,7 @@
     if (bodyData.data && bodyData.length) {
         if (multipartRangeRequest())
             packRange(bodyData, mb);
-        else if (http->request->flags.chunked_reply) {
+        else if (http->request->flags.isReplyChunked()) {
             packChunk(bodyData, *mb);
         } else {
             size_t length = lengthToSend(bodyData.range());
@@ -1447,8 +1452,9 @@
 
     // After sending Transfer-Encoding: chunked (at least), always send
     // the last-chunk if there was no error, ignoring responseFinishedOrFailed.
-    const bool mustSendLastChunk = http->request->flags.chunked_reply &&
-                                   !http->request->flags.stream_error && !context->startOfOutput();
+    const bool mustSendLastChunk = http->request->flags.isReplyChunked() &&
+                                   !http->request->flags.hadStreamError() &&
+                                   !context->startOfOutput();
     if (responseFinishedOrFailed(rep, receivedData) && !mustSendLastChunk) {
         context->writeComplete(context->clientConnection, NULL, 0, COMM_OK);
         PROF_stop(clientSocketRecipient);
@@ -1736,7 +1742,7 @@
                 debugs(33, 5, HERE << "Range request at end of returnable " <<
                        "range sequence on " << clientConnection);
 
-                if (http->request->flags.proxy_keepalive)
+                if (http->request->flags.proxyKeepalive())
                     return STREAM_COMPLETE;
                 else
                     return STREAM_UNPLANNED_COMPLETE;
@@ -1753,7 +1759,7 @@
             // did we get at least what we expected, based on range specs?
 
             if (bytesSent == bytesExpected) { // got everything
-                if (http->request->flags.proxy_keepalive)
+                if (http->request->flags.proxyKeepalive())
                     return STREAM_COMPLETE;
                 else
                     return STREAM_UNPLANNED_COMPLETE;
@@ -1763,7 +1769,7 @@
             // expected why would persistency matter? Should not this
             // always be an error?
             if (bytesSent > bytesExpected) { // got extra
-                if (http->request->flags.proxy_keepalive)
+                if (http->request->flags.proxyKeepalive())
                     return STREAM_COMPLETE;
                 else
                     return STREAM_UNPLANNED_COMPLETE;
@@ -2469,7 +2475,7 @@
     // at the client-side, but many such errors do require closure and the
     // client-side code is bad at handling errors so we play it safe.
     if (request)
-        request->flags.proxy_keepalive = 0;
+        request->flags.clearProxyKeepalive();
     flags.readMore = false;
     debugs(33,4, HERE << "Will close after error: " << clientConnection);
 }
@@ -2649,15 +2655,19 @@
 
     request->clientConnectionManager = conn;
 
-    request->flags.accelerated = http->flags.accel;
-    request->flags.sslBumped = conn->switchedToHttps();
-    request->flags.canRePin = request->flags.sslBumped && conn->pinning.pinned;
-    request->flags.ignore_cc = conn->port->ignore_cc;
+    if (http->flags.accel)
+        request->flags.markAccelerated();
+    request->flags.setSslBumped(conn->switchedToHttps());
+    if (request->flags.sslBumped() && conn->pinning.pinned)
+        request->flags.allowRepinning();
+    if (conn->port->ignore_cc)
+        request->flags.ignoreCacheControl();
     // TODO: decouple http->flags.accel from request->flags.sslBumped
-    request->flags.no_direct = (request->flags.accelerated && !request->flags.sslBumped) ?
-                               !conn->port->allow_direct : 0;
+    if (request->flags.accelerated() && !request->flags.sslBumped())
+        if (!conn->port->allow_direct)
+            request->flags.setNoDirect();
 #if USE_AUTH
-    if (request->flags.sslBumped) {
+    if (request->flags.sslBumped()) {
         if (conn->auth_user_request != NULL)
             request->auth_user_request = conn->auth_user_request;
     }
@@ -2668,8 +2678,10 @@
      * from the port settings to the request.
      */
     if (http->clientConnection != NULL) {
-        request->flags.intercepted = ((http->clientConnection->flags & COMM_INTERCEPTION) != 0);
-        request->flags.spoof_client_ip = ((http->clientConnection->flags & COMM_TRANSPARENT) != 0 ) ;
+        if ((http->clientConnection->flags & COMM_INTERCEPTION) != 0)
+            request->flags.markIntercepted();
+        if ((http->clientConnection->flags & COMM_TRANSPARENT) != 0 )
+            request->flags.setSpoofClientIp();
     }
 
     if (internalCheck(request->urlpath.termedBuf())) {
@@ -2688,7 +2700,8 @@
         request->login[0] = '\0';
     }
 
-    request->flags.internal = http->flags.internal;
+    if (http->flags.internal)
+        request->flags.markInternal();
     setLogUri (http, urlCanonicalClean(request));
     request->client_addr = conn->clientConnection->remote; // XXX: remove reuest->client_addr member.
 #if FOLLOW_X_FORWARDED_FOR
@@ -3146,7 +3159,7 @@
         repContext->setReplyToError(error, scode,
                                     repContext->http->request->method,
                                     repContext->http->uri,
-                                    peer,
+                                    CachePeer,
                                     repContext->http->request,
                                     in.buf, NULL);
         context->pullData();
@@ -3215,7 +3228,7 @@
         clientReplyContext *repContext = dynamic_cast<clientReplyContext *>(node->data.getRaw());
         assert (repContext);
         repContext->setReplyToError(ERR_LIFETIME_EXP,
-                                    HTTP_REQUEST_TIMEOUT, METHOD_NONE, "N/A", &peer.sin_addr,
+                                    HTTP_REQUEST_TIMEOUT, METHOD_NONE, "N/A", &CachePeer.sin_addr,
                                     NULL, NULL, NULL);
         /* No requests can be outstanded */
         assert(chr == NULL);
@@ -3578,8 +3591,10 @@
         fakeRequest->indirect_client_addr = connState->clientConnection->remote;
 #endif
         fakeRequest->my_addr = connState->clientConnection->local;
-        fakeRequest->flags.spoof_client_ip = ((connState->clientConnection->flags & COMM_TRANSPARENT) != 0 ) ;
-        fakeRequest->flags.intercepted = ((connState->clientConnection->flags & COMM_INTERCEPTION) != 0);
+        if ((connState->clientConnection->flags & COMM_TRANSPARENT) != 0)
+            fakeRequest->flags.setSpoofClientIp();
+        if ((connState->clientConnection->flags & COMM_INTERCEPTION) != 0)
+            fakeRequest->flags.markIntercepted();
         debugs(33, 4, HERE << details << " try to generate a Dynamic SSL CTX");
         connState->switchToHttps(fakeRequest, bumpMode);
     }
@@ -3889,7 +3904,7 @@
 
     // commSetConnTimeout() was called for this request before we switched.
 
-    // Disable the client read handler until peer selection is complete
+    // Disable the client read handler until CachePeer selection is complete
     Comm::SetSelect(clientConnection->fd, COMM_SELECT_READ, NULL, NULL, 0);
     Comm::SetSelect(clientConnection->fd, COMM_SELECT_READ, clientNegotiateSSL, this, 0);
     switchedToHttps_ = true;
@@ -3911,7 +3926,7 @@
     // and now want to switch to SSL to send the error to the client
     // without even peeking at the origin server certificate.
     if (bumpServerMode == Ssl::bumpServerFirst && !sslServerBump) {
-        request->flags.sslPeek = 1;
+        request->flags.setSslPeek();
         sslServerBump = new Ssl::ServerBump(request);
 
         // will call httpsPeeked() with certificate and connection, eventually
@@ -4416,7 +4431,7 @@
 }
 
 void
-ConnStateData::pinConnection(const Comm::ConnectionPointer &pinServer, HttpRequest *request, struct peer *aPeer, bool auth)
+ConnStateData::pinConnection(const Comm::ConnectionPointer &pinServer, HttpRequest *request, CachePeer *aPeer, bool auth)
 {
     char desc[FD_DESC_SZ];
 
@@ -4462,7 +4477,7 @@
 }
 
 const Comm::ConnectionPointer
-ConnStateData::validatePinnedConnection(HttpRequest *request, const struct peer *aPeer)
+ConnStateData::validatePinnedConnection(HttpRequest *request, const CachePeer *aPeer)
 {
     debugs(33, 7, HERE << pinning.serverConnection);
 

=== modified file 'src/client_side.h'
--- src/client_side.h	2012-08-29 07:29:35 +0000
+++ src/client_side.h	2012-09-04 14:38:44 +0000
@@ -259,7 +259,7 @@
         int port;               /* port of pinned connection */
         bool pinned;             /* this connection was pinned */
         bool auth;               /* pinned for www authentication */
-        struct peer *peer;             /* peer the connection goes via */
+        CachePeer *peer;             /* CachePeer the connection goes via */
         AsyncCall::Pointer closeHandler; /*The close handler for pinned server side connection*/
     } pinning;
 
@@ -290,23 +290,23 @@
     /**
      * Correlate the current ConnStateData object with the pinning_fd socket descriptor.
      */
-    void pinConnection(const Comm::ConnectionPointer &pinServerConn, HttpRequest *request, struct peer *peer, bool auth);
+    void pinConnection(const Comm::ConnectionPointer &pinServerConn, HttpRequest *request, CachePeer *peer, bool auth);
     /**
-     * Decorrelate the ConnStateData object from its pinned peer
+     * Decorrelate the ConnStateData object from its pinned CachePeer
      */
     void unpinConnection();
     /**
      * Checks if there is pinning info if it is valid. It can close the server side connection
      * if pinned info is not valid.
      \param request   if it is not NULL also checks if the pinning info refers to the request client side HttpRequest
-     \param peer      if it is not NULL also check if the peer is the pinning peer
+     \param CachePeer      if it is not NULL also check if the CachePeer is the pinning CachePeer
      \return          The details of the server side connection (may be closed if failures were present).
      */
-    const Comm::ConnectionPointer validatePinnedConnection(HttpRequest *request, const struct peer *peer);
+    const Comm::ConnectionPointer validatePinnedConnection(HttpRequest *request, const CachePeer *peer);
     /**
-     * returts the pinned peer if exists, NULL otherwise
+     * returts the pinned CachePeer if exists, NULL otherwise
      */
-    struct peer *pinnedPeer() const {return pinning.peer;}
+    CachePeer *pinnedPeer() const {return pinning.peer;}
     bool pinnedAuth() const {return pinning.auth;}
 
     // pining related comm callbacks

=== modified file 'src/client_side_reply.cc'
--- src/client_side_reply.cc	2012-09-13 06:56:05 +0000
+++ src/client_side_reply.cc	2012-09-13 16:20:41 +0000
@@ -54,6 +54,8 @@
 #include "mime_header.h"
 #include "neighbors.h"
 #include "refresh.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StoreClient.h"
@@ -127,11 +129,11 @@
 {
     if (errstate->httpStatus == HTTP_NOT_IMPLEMENTED && http->request)
         /* prevent confusion over whether we default to persistent or not */
-        http->request->flags.proxy_keepalive = 0;
+        http->request->flags.clearProxyKeepalive();
 
     http->al->http.code = errstate->httpStatus;
 
-    createStoreEntry(method, request_flags());
+    createStoreEntry(method, RequestFlags());
     assert(errstate->callback_data == NULL);
     errorAppendEntry(http->storeEntry(), errstate);
     /* Now the caller reads to get this */
@@ -225,7 +227,7 @@
 void
 clientReplyContext::startError(ErrorState * err)
 {
-    createStoreEntry(http->request->method, request_flags());
+    createStoreEntry(http->request->method, RequestFlags());
     triggerInitialStoreRead();
     errorAppendEntry(http->storeEntry(), err);
 }
@@ -271,7 +273,7 @@
         return;
     }
 
-    http->request->flags.refresh = 1;
+    http->request->flags.setRefresh();
 #if STORE_CLIENT_LIST_DEBUG
     /* Prevent a race with the store client memory free routines
      */
@@ -388,7 +390,7 @@
     // origin replied 304
     if (status == HTTP_NOT_MODIFIED) {
         http->logType = LOG_TCP_REFRESH_UNMODIFIED;
-        http->request->flags.stale_if_hit = 0; // old_entry is no longer stale
+        http->request->flags.clearStaleIfHit(); // old_entry is no longer stale
 
         // update headers on existing entry
         old_rep->updateOnNotModified(http->storeEntry()->getReply());
@@ -396,7 +398,7 @@
 
         // if client sent IMS
 
-        if (http->request->flags.ims && !old_entry->modifiedSince(http->request)) {
+        if (http->request->flags.hasIMS() && !old_entry->modifiedSince(http->request)) {
             // forward the 304 from origin
             debugs(88, 3, "handleIMSReply: origin replied 304, revalidating existing entry and forwarding 304 to client");
             sendClientUpstreamResponse();
@@ -417,7 +419,7 @@
     }
 
     // origin replied with an error
-    else if (http->request->flags.fail_on_validation_err) {
+    else if (http->request->flags.failOnValidationError()) {
         http->logType = LOG_TCP_REFRESH_FAIL_ERR;
         debugs(88, 3, "handleIMSReply: origin replied with error " << status <<
                ", forwarding to client due to fail_on_validation_err");
@@ -539,10 +541,7 @@
         return;
     }
 
-    if (e->checkNegativeHit()
-#if USE_HTTP_VIOLATIONS
-            && !r->flags.nocache_hack
-#endif
+    if (e->checkNegativeHit() && !r->flags.noCacheHackEnabled()
        ) {
         http->logType = LOG_TCP_NEGATIVE_HIT;
         sendMoreData(result);
@@ -558,7 +557,7 @@
          * request.  Otherwise two siblings could generate a loop if
          * both have a stale version of the object.
          */
-        r->flags.need_validation = 1;
+        r->flags.setNeedValidation();
 
         if (e->lastmod < 0) {
             /*
@@ -567,7 +566,7 @@
              */
             http->logType = LOG_TCP_MISS;
             processMiss();
-        } else if (r->flags.nocache) {
+        } else if (r->flags.noCache()) {
             /*
              * This did not match a refresh pattern that overrides no-cache
              * we should honour the client no-cache header.
@@ -652,10 +651,10 @@
     }
 
     /// Deny loops
-    if (r->flags.loopdetect) {
+    if (r->flags.loopDetect()) {
         http->al->http.code = HTTP_FORBIDDEN;
         err = clientBuildError(ERR_ACCESS_DENIED, HTTP_FORBIDDEN, NULL, http->getConn()->clientConnection->remote, http->request);
-        createStoreEntry(r->method, request_flags());
+        createStoreEntry(r->method, RequestFlags());
         errorAppendEntry(http->storeEntry(), err);
         triggerInitialStoreRead();
         return;
@@ -730,7 +729,7 @@
     if (r.header.has(HDR_IF_NONE_MATCH)) {
         if (!e->hasIfNoneMatchEtag(r)) {
             // RFC 2616: ignore IMS if If-None-Match did not match
-            r.flags.ims = 0;
+            r.flags.clearIMS();
             r.ims = -1;
             r.imslen = 0;
             r.header.delById(HDR_IF_MODIFIED_SINCE);
@@ -739,7 +738,7 @@
             return;
         }
 
-        if (!r.flags.ims) {
+        if (!r.flags.hasIMS()) {
             // RFC 2616: if If-None-Match matched and there is no IMS,
             // reply with 304 Not Modified or 412 Precondition Failed
             sendNotModifiedOrPreconditionFailedError();
@@ -750,7 +749,7 @@
         matchedIfNoneMatch = true;
     }
 
-    if (r.flags.ims) {
+    if (r.flags.hasIMS()) {
         // handle If-Modified-Since requests from the client
         if (e->modifiedSince(&r)) {
             http->logType = LOG_TCP_IMS_HIT;
@@ -993,7 +992,7 @@
     /* FIXME: This doesn't need to go through the store. Simply
      * push down the client chain
      */
-    createStoreEntry(http->request->method, request_flags());
+    createStoreEntry(http->request->method, RequestFlags());
 
     triggerInitialStoreRead();
 
@@ -1008,7 +1007,7 @@
 {
     clientStreamNode *nextNode = (clientStreamNode *)node->node.next->data;
     StoreIOBuffer localTempBuffer;
-    createStoreEntry(http->request->method, request_flags());
+    createStoreEntry(http->request->method, RequestFlags());
     localTempBuffer.offset = nextNode->readBuffer.offset + headers_sz;
     localTempBuffer.length = nextNode->readBuffer.length;
     localTempBuffer.data = nextNode->readBuffer.data;
@@ -1040,7 +1039,7 @@
     if (http->flags.done_copying)
         return 1;
 
-    if (http->request->flags.chunked_reply && !flags.complete) {
+    if (http->request->flags.isReplyChunked() && !flags.complete) {
         // last-chunk was not sent
         return 0;
     }
@@ -1184,7 +1183,7 @@
 
         const int64_t expectedBodySize =
             http->storeEntry()->getReply()->bodySize(http->request->method);
-        if (!http->request->flags.proxy_keepalive && expectedBodySize < 0) {
+        if (!http->request->flags.proxyKeepalive() && expectedBodySize < 0) {
             debugs(88, 5, "clientReplyStatus: closing, content_length < 0");
             return STREAM_FAILED;
         }
@@ -1199,7 +1198,7 @@
             return STREAM_UNPLANNED_COMPLETE;
         }
 
-        if (http->request->flags.proxy_keepalive) {
+        if (http->request->flags.proxyKeepalive()) {
             debugs(88, 5, "clientReplyStatus: stream complete and can keepalive");
             return STREAM_COMPLETE;
         }
@@ -1374,9 +1373,9 @@
     }
 
     // add Warnings required by RFC 2616 if serving a stale hit
-    if (http->request->flags.stale_if_hit && logTypeIsATcpHit(http->logType)) {
+    if (http->request->flags.staleIfHit() && logTypeIsATcpHit(http->logType)) {
         hdr->putWarning(110, "Response is stale");
-        if (http->request->flags.need_validation)
+        if (http->request->flags.validationNeeded())
             hdr->putWarning(111, "Revalidation failed");
     }
 
@@ -1399,12 +1398,12 @@
                         ||
                         (strncasecmp(value, "Kerberos", 8) == 0 &&
                          (value[8] == '\0' || value[8] == ' '))) {
-                    if (request->flags.connection_auth_disabled) {
+                    if (request->flags.connectionAuthDisabled()) {
                         hdr->delAt(pos, connection_auth_blocked);
                         continue;
                     }
-                    request->flags.must_keepalive = 1;
-                    if (!request->flags.accelerated && !request->flags.intercepted) {
+                    request->flags.setMustKeepalive();
+                    if (!request->flags.accelerated() && !request->flags.intercepted()) {
                         httpHeaderPutStrf(hdr, HDR_PROXY_SUPPORT, "Session-Based-Authentication");
                         /*
                           We send "[Proxy-]Connection: Proxy-Support" header to mark
@@ -1461,36 +1460,36 @@
                                      (request->http_ver >= HttpVersion(1, 1));
 
     /* Check whether we should send keep-alive */
-    if (!Config.onoff.error_pconns && reply->sline.status >= 400 && !request->flags.must_keepalive) {
+    if (!Config.onoff.error_pconns && reply->sline.status >= 400 && !request->flags.mustKeepalive()) {
         debugs(33, 3, "clientBuildReplyHeader: Error, don't keep-alive");
-        request->flags.proxy_keepalive = 0;
-    } else if (!Config.onoff.client_pconns && !request->flags.must_keepalive) {
+        request->flags.clearProxyKeepalive();
+    } else if (!Config.onoff.client_pconns && !request->flags.mustKeepalive()) {
         debugs(33, 2, "clientBuildReplyHeader: Connection Keep-Alive not requested by admin or client");
-        request->flags.proxy_keepalive = 0;
-    } else if (request->flags.proxy_keepalive && shutting_down) {
+        request->flags.clearProxyKeepalive();
+    } else if (request->flags.proxyKeepalive() && shutting_down) {
         debugs(88, 3, "clientBuildReplyHeader: Shutting down, don't keep-alive.");
-        request->flags.proxy_keepalive = 0;
-    } else if (request->flags.connection_auth && !reply->keep_alive) {
+        request->flags.clearProxyKeepalive();
+    } else if (request->flags.connectionAuthWanted() && !reply->keep_alive) {
         debugs(33, 2, "clientBuildReplyHeader: Connection oriented auth but server side non-persistent");
-        request->flags.proxy_keepalive = 0;
+        request->flags.clearProxyKeepalive();
     } else if (reply->bodySize(request->method) < 0 && !maySendChunkedReply) {
         debugs(88, 3, "clientBuildReplyHeader: can't keep-alive, unknown body size" );
-        request->flags.proxy_keepalive = 0;
-    } else if (fdUsageHigh()&& !request->flags.must_keepalive) {
+        request->flags.clearProxyKeepalive();
+    } else if (fdUsageHigh()&& !request->flags.mustKeepalive()) {
         debugs(88, 3, "clientBuildReplyHeader: Not many unused FDs, can't keep-alive");
-        request->flags.proxy_keepalive = 0;
-    } else if (request->flags.sslBumped && !reply->persistent()) {
+        request->flags.clearProxyKeepalive();
+    } else if (request->flags.sslBumped() && !reply->persistent()) {
         // We do not really have to close, but we pretend we are a tunnel.
         debugs(88, 3, "clientBuildReplyHeader: bumped reply forces close");
-        request->flags.proxy_keepalive = 0;
+        request->flags.clearProxyKeepalive();
     }
 
     // Decide if we send chunked reply
     if (maySendChunkedReply &&
-            request->flags.proxy_keepalive &&
+            request->flags.proxyKeepalive() &&
             reply->bodySize(request->method) < 0) {
         debugs(88, 3, "clientBuildReplyHeader: chunked reply");
-        request->flags.chunked_reply = 1;
+        request->flags.markReplyChunked();
         hdr->putStr(HDR_TRANSFER_ENCODING, "chunked");
     }
 
@@ -1508,7 +1507,7 @@
         hdr->putStr(HDR_VIA, strVia.termedBuf());
     }
     /* Signal keep-alive or close explicitly */
-    hdr->putStr(HDR_CONNECTION, request->flags.proxy_keepalive ? "keep-alive" : "close");
+    hdr->putStr(HDR_CONNECTION, request->flags.proxyKeepalive() ? "keep-alive" : "close");
 
 #if ADD_X_REQUEST_URI
     /*
@@ -1556,7 +1555,7 @@
 {
     HttpRequest *r = http->request;
 
-    if (r->flags.cachable || r->flags.internal) {
+    if (r->flags.isCachable() || r->flags.isInternal()) {
         lookingforstore = 5;
         StoreEntry::getPublicByRequest (this, r);
     } else {
@@ -1587,29 +1586,23 @@
     /** \li If the request has no-cache flag set or some no_cache HACK in operation we
       * 'invalidate' the cached IP entries for this request ???
       */
-    if (r->flags.nocache) {
-
-#if USE_DNSHELPER
-        ipcacheInvalidate(r->GetHost());
-#else
-        ipcacheInvalidateNegative(r->GetHost());
-#endif /* USE_DNSHELPER */
-
-    }
-
-#if USE_HTTP_VIOLATIONS
-
-    else if (r->flags.nocache_hack) {
-
-#if USE_DNSHELPER
-        ipcacheInvalidate(r->GetHost());
-#else
-        ipcacheInvalidateNegative(r->GetHost());
-#endif /* USE_DNSHELPER */
-
-    }
-
-#endif /* USE_HTTP_VIOLATIONS */
+    if (r->flags.noCache()) {
+
+#if USE_DNSHELPER
+        ipcacheInvalidate(r->GetHost());
+#else
+        ipcacheInvalidateNegative(r->GetHost());
+#endif /* USE_DNSHELPER */
+
+    }
+
+    else if (r->flags.noCacheHackEnabled()) {
+#if USE_DNSHELPER
+        ipcacheInvalidate(r->GetHost());
+#else
+        ipcacheInvalidateNegative(r->GetHost());
+#endif /* USE_DNSHELPER */
+    }
 #if USE_CACHE_DIGESTS
 
     lookup_type = http->storeEntry() ? "HIT" : "MISS";
@@ -1657,7 +1650,7 @@
         return;
     }
 
-    if (r->flags.nocache) {
+    if (r->flags.noCache()) {
         debugs(85, 3, "clientProcessRequest2: no-cache REFRESH MISS");
         http->storeEntry(NULL);
         http->logType = LOG_TCP_CLIENT_REFRESH_MISS;
@@ -1827,7 +1820,7 @@
     debugs(88, 5, "clientReplyContext::sendStreamError: A stream error has occured, marking as complete and sending no data.");
     StoreIOBuffer localTempBuffer;
     flags.complete = 1;
-    http->request->flags.stream_error = 1;
+    http->request->flags.setStreamError();
     localTempBuffer.flags.error = result.flags.error;
     clientStreamCallback((clientStreamNode*)http->client_stream.head->data, http, NULL,
                          localTempBuffer);
@@ -1898,7 +1891,7 @@
     HttpReply *const temprep = e->getReply()->make304();
     http->logType = LOG_TCP_IMS_HIT;
     removeClientStoreReference(&sc, http);
-    createStoreEntry(http->request->method, request_flags());
+    createStoreEntry(http->request->method, RequestFlags());
     e = http->storeEntry();
     // Copy timestamp from the original entry so the 304
     // reply has a meaningful Age: header.
@@ -2160,7 +2153,7 @@
 /* Using this breaks the client layering just a little!
  */
 void
-clientReplyContext::createStoreEntry(const HttpRequestMethod& m, request_flags reqFlags)
+clientReplyContext::createStoreEntry(const HttpRequestMethod& m, RequestFlags reqFlags)
 {
     assert(http != NULL);
     /*

=== modified file 'src/client_side_reply.h'
--- src/client_side_reply.h	2012-08-07 15:12:08 +0000
+++ src/client_side_reply.h	2012-09-10 12:49:35 +0000
@@ -31,11 +31,12 @@
 #ifndef SQUID_CLIENTSIDEREPLY_H
 #define SQUID_CLIENTSIDEREPLY_H
 
+#include "client_side_request.h"
+#include "clientStream.h"
+#include "HttpHeader.h"
 #include "RefCount.h"
-#include "HttpHeader.h"
-#include "clientStream.h"
+#include "RequestFlags.h"
 #include "StoreClient.h"
-#include "client_side_request.h"
 
 class ErrorState;
 #include "ip/forward.h"
@@ -82,7 +83,7 @@
 #endif
     /// creates a store entry for the reply and appends err to it
     void setReplyToError(const HttpRequestMethod& method, ErrorState *err);
-    void createStoreEntry(const HttpRequestMethod& m, request_flags flags);
+    void createStoreEntry(const HttpRequestMethod& m, RequestFlags flags);
     void removeStoreReference(store_client ** scp, StoreEntry ** ep);
     void removeClientStoreReference(store_client **scp, ClientHttpRequest *http);
     void startError(ErrorState * err);

=== modified file 'src/client_side_request.cc'
--- src/client_side_request.cc	2012-09-01 14:38:36 +0000
+++ src/client_side_request.cc	2012-09-14 11:50:29 +0000
@@ -67,6 +67,7 @@
 #include "MemObject.h"
 #include "Parsing.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StrList.h"
@@ -386,9 +387,10 @@
     /*
      * build new header list *? TODO
      */
-    request->flags.accelerated = http->flags.accel;
+    if (http->flags.accel)
+        request->flags.markAccelerated();
 
-    request->flags.internalclient = 1;
+    request->flags.setInternalClient();
 
     /* this is an internally created
      * request, not subject to acceleration
@@ -533,7 +535,7 @@
         conn->log_addr = request->indirect_client_addr;
     }
     request->x_forwarded_for_iterator.clean();
-    request->flags.done_follow_x_forwarded_for = 1;
+    request->flags.setDoneFollowXFF();
 
     if (answer != ACCESS_ALLOWED && answer != ACCESS_DENIED) {
         debugs(28, DBG_CRITICAL, "ERROR: Processing X-Forwarded-For. Stopping at IP address: " << request->indirect_client_addr );
@@ -564,7 +566,7 @@
         for (int i = 0; i < ia->count; ++i) {
             if (clientConn->local.matchIPAddr(ia->in_addrs[i]) == 0) {
                 debugs(85, 3, HERE << "validate IP " << clientConn->local << " possible from Host:");
-                http->request->flags.hostVerified = 1;
+                http->request->flags.markHostVerified();
                 http->doCallouts();
                 return;
             }
@@ -586,9 +588,9 @@
 
         // NP: it is tempting to use 'flags.nocache' but that is all about READing cache data.
         // The problems here are about WRITE for new cache content, which means flags.cachable
-        http->request->flags.cachable = 0; // MUST NOT cache (for now)
+        http->request->flags.setNotCachable(); // MUST NOT cache (for now)
         // XXX: when we have updated the cache key to base on raw-IP + URI this cacheable limit can go.
-        http->request->flags.hierarchical = 0; // MUST NOT pass to peers (for now)
+        http->request->flags.clearHierarchical(); // MUST NOT pass to peers (for now)
         // XXX: when we have sorted out the best way to relay requests properly to peers this hierarchical limit can go.
         http->doCallouts();
         return;
@@ -632,7 +634,7 @@
         return;
     }
 
-    if (http->request->flags.internal) {
+    if (http->request->flags.isInternal()) {
         // TODO: kill this when URL handling allows partial URLs out of accel mode
         //       and we no longer screw with the URL just to add our internal host there
         debugs(85, 6, HERE << "validate skipped due to internal composite URL.");
@@ -663,7 +665,7 @@
     }
 
     debugs(85, 3, HERE << "validate host=" << host << ", port=" << port << ", portStr=" << (portStr?portStr:"NULL"));
-    if (http->request->flags.intercepted || http->request->flags.spoof_client_ip) {
+    if (http->request->flags.intercepted() || http->request->flags.spoofClientIp()) {
         // verify the Host: port (if any) matches the apparent destination
         if (portStr && port != http->getConn()->clientConnection->local.GetPort()) {
             debugs(85, 3, HERE << "FAIL on validate port " << http->getConn()->clientConnection->local.GetPort() <<
@@ -698,7 +700,7 @@
     } else {
         // Okay no problem.
         debugs(85, 3, HERE << "validate passed.");
-        http->request->flags.hostVerified = 1;
+        http->request->flags.markHostVerified();
         http->doCallouts();
     }
     safe_free(hostB);
@@ -709,7 +711,7 @@
 ClientRequestContext::clientAccessCheck()
 {
 #if FOLLOW_X_FORWARDED_FOR
-    if (!http->request->flags.done_follow_x_forwarded_for &&
+    if (!http->request->flags.doneFollowXFF() &&
             Config.accessList.followXFF &&
             http->request->header.has(HDR_X_FORWARDED_FOR)) {
 
@@ -725,7 +727,7 @@
         acl_checklist->nonBlockingCheck(clientFollowXForwardedForCheck, this);
         return;
     }
-#endif /* FOLLOW_X_FORWARDED_FOR */
+#endif
 
     if (Config.accessList.http) {
         acl_checklist = clientAclChecklistCreate(Config.accessList.http, http);
@@ -809,7 +811,7 @@
 
         if (auth_challenge) {
 #if USE_AUTH
-            if (http->request->flags.sslBumped) {
+            if (http->request->flags.sslBumped()) {
                 /*SSL Bumped request, authentication is not possible*/
                 status = HTTP_FORBIDDEN;
             } else if (!http->flags.accel) {
@@ -923,7 +925,7 @@
     const wordlist *p = NULL;
 
     // intercepted requests MUST NOT (yet) be sent to peers unless verified
-    if (!request->flags.hostVerified && (request->flags.intercepted || request->flags.spoof_client_ip))
+    if (!request->flags.hostVerified() && (request->flags.intercepted() || request->flags.spoofClientIp()))
         return 0;
 
     /*
@@ -931,14 +933,14 @@
      * neighbors support private keys
      */
 
-    if (request->flags.ims && !neighbors_do_private_keys)
+    if (request->flags.hasIMS() && !neighbors_do_private_keys)
         return 0;
 
     /*
      * This is incorrect: authenticating requests can be sent via a hierarchy
      * (they can even be cached if the correct headers are set on the reply)
      */
-    if (request->flags.auth)
+    if (request->flags.hasAuth())
         return 0;
 
     if (method == METHOD_TRACE)
@@ -952,7 +954,7 @@
         if (strstr(url, p->key))
             return 0;
 
-    if (request->flags.loopdetect)
+    if (request->flags.loopDetect())
         return 0;
 
     if (request->protocol == AnyP::PROTO_HTTP)
@@ -980,14 +982,15 @@
     if (!http_conn)
         return;
 
-    request->flags.connection_auth_disabled = http_conn->port->connection_auth_disabled;
-    if (!request->flags.connection_auth_disabled) {
+    if (http_conn->port->connection_auth_disabled)
+        request->flags.disableConnectionAuth();
+    if (!request->flags.connectionAuthDisabled()) {
         if (Comm::IsConnOpen(http_conn->pinning.serverConnection)) {
             if (http_conn->pinning.auth) {
-                request->flags.connection_auth = 1;
-                request->flags.auth = 1;
+                request->flags.wantConnectionAuth();
+                request->flags.markAuth();
             } else {
-                request->flags.connection_proxy_auth = 1;
+                request->flags.requestConnectionProxyAuth();
             }
             // These should already be linked correctly.
             assert(request->clientConnectionManager == http_conn);
@@ -995,11 +998,11 @@
     }
 
     /* check if connection auth is used, and flag as candidate for pinning
-     * in such case.
+     * in such case.;
      * Note: we may need to set flags.connection_auth even if the connection
      * is already pinned if it was pinned earlier due to proxy auth
      */
-    if (!request->flags.connection_auth) {
+    if (!request->flags.connectionAuthWanted()) {
         if (req_hdr->has(HDR_AUTHORIZATION) || req_hdr->has(HDR_PROXY_AUTHORIZATION)) {
             HttpHeaderPos pos = HttpHeaderInitPos;
             HttpHeaderEntry *e;
@@ -1013,10 +1016,10 @@
                             ||
                             strncasecmp(value, "Kerberos ", 9) == 0) {
                         if (e->id == HDR_AUTHORIZATION) {
-                            request->flags.connection_auth = 1;
+                            request->flags.wantConnectionAuth();
                             may_pin = 1;
                         } else {
-                            request->flags.connection_proxy_auth = 1;
+                            request->flags.requestConnectionProxyAuth();
                             may_pin = 1;
                         }
                     }
@@ -1042,9 +1045,9 @@
     request->ims = req_hdr->getTime(HDR_IF_MODIFIED_SINCE);
 
     if (request->ims > 0)
-        request->flags.ims = 1;
+        request->flags.setIMS();
 
-    if (!request->flags.ignore_cc) {
+    if (!request->flags.ignoringCacheControl()) {
         if (req_hdr->has(HDR_PRAGMA)) {
             String s = req_hdr->getList(HDR_PRAGMA);
 
@@ -1066,7 +1069,7 @@
         * SP1 or not so all 5.5 versions are treated 'normally').
         */
         if (Config.onoff.ie_refresh) {
-            if (http->flags.accel && request->flags.ims) {
+            if (http->flags.accel && request->flags.hasIMS()) {
                 if ((str = req_hdr->getStr(HDR_USER_AGENT))) {
                     if (strstr(str, "MSIE 5.01") != NULL)
                         no_cache=true;
@@ -1089,13 +1092,13 @@
 #if USE_HTTP_VIOLATIONS
 
         if (Config.onoff.reload_into_ims)
-            request->flags.nocache_hack = 1;
+            request->flags.hackNocache();
         else if (refresh_nocache_hack)
-            request->flags.nocache_hack = 1;
+            request->flags.hackNocache();
         else
 #endif
 
-            request->flags.nocache = 1;
+            request->flags.setNocache();
     }
 
     /* ignore range header in non-GETs or non-HEADs */
@@ -1105,7 +1108,7 @@
             request->range = req_hdr->getRange();
 
         if (request->range) {
-            request->flags.range = 1;
+            request->flags.setRanged();
             clientStreamNode *node = (clientStreamNode *)http->client_stream.tail->data;
             /* XXX: This is suboptimal. We should give the stream the range set,
              * and thereby let the top of the stream set the offset when the
@@ -1131,12 +1134,12 @@
     }
 
     if (req_hdr->has(HDR_AUTHORIZATION))
-        request->flags.auth = 1;
+        request->flags.markAuth();
 
     clientCheckPinning(http);
 
     if (request->login[0] != '\0')
-        request->flags.auth = 1;
+        request->flags.markAuth();
 
     if (req_hdr->has(HDR_VIA)) {
         String s = req_hdr->getList(HDR_VIA);
@@ -1149,7 +1152,7 @@
         if (strListIsSubstr(&s, ThisCache2, ',')) {
             debugObj(33, 1, "WARNING: Forwarding loop detected for:\n",
                      request, (ObjPackMethod) & httpRequestPack);
-            request->flags.loopdetect = 1;
+            request->flags.setLoopDetect();
         }
 
 #if USE_FORW_VIA_DB
@@ -1170,17 +1173,17 @@
 
 #endif
 
-    request->flags.cachable = http->request->cacheable();
+    request->flags.setCachable(http->request->cacheable());
 
     if (clientHierarchical(http))
-        request->flags.hierarchical = 1;
+        request->flags.setHierarchical();
 
     debugs(85, 5, "clientInterpretRequestHeaders: REQ_NOCACHE = " <<
-           (request->flags.nocache ? "SET" : "NOT SET"));
+           (request->flags.noCache() ? "SET" : "NOT SET"));
     debugs(85, 5, "clientInterpretRequestHeaders: REQ_CACHABLE = " <<
-           (request->flags.cachable ? "SET" : "NOT SET"));
+           (request->flags.isCachable() ? "SET" : "NOT SET"));
     debugs(85, 5, "clientInterpretRequestHeaders: REQ_HIERARCHICAL = " <<
-           (request->flags.hierarchical ? "SET" : "NOT SET"));
+           (request->flags.hierarchical() ? "SET" : "NOT SET"));
 
 }
 
@@ -1228,7 +1231,7 @@
                 debugs(61,2, HERE << "URL-rewriter diverts URL from " << urlCanonical(old_request) << " to " << urlCanonical(new_request));
 
                 // update the new request to flag the re-writing was done on it
-                new_request->flags.redirected = 1;
+                new_request->flags.markRedirected();
 
                 // unlink bodypipe from the old request. Not needed there any longer.
                 if (old_request->body_pipe != NULL) {
@@ -1290,7 +1293,8 @@
 ClientRequestContext::checkNoCacheDone(const allow_t &answer)
 {
     acl_checklist = NULL;
-    http->request->flags.cachable = (answer == ACCESS_ALLOWED);
+    if (answer == ACCESS_ALLOWED)
+        http->request->flags.setCachable();
     http->doCallouts();
 }
 
@@ -1598,7 +1602,7 @@
         if (!calloutContext->no_cache_done) {
             calloutContext->no_cache_done = true;
 
-            if (Config.accessList.noCache && request->flags.cachable) {
+            if (Config.accessList.noCache && request->flags.isCachable()) {
                 debugs(83, 3, HERE << "Doing calloutContext->checkNoCache()");
                 calloutContext->checkNoCache();
                 return;

=== modified file 'src/comm.cc'
--- src/comm.cc	2012-08-31 16:57:39 +0000
+++ src/comm.cc	2012-09-04 09:10:20 +0000
@@ -59,6 +59,7 @@
 #include "MemBuf.h"
 #include "pconn.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "StoreIOBuffer.h"

=== modified file 'src/comm/ConnOpener.cc'
--- src/comm/ConnOpener.cc	2012-08-31 16:57:39 +0000
+++ src/comm/ConnOpener.cc	2012-09-04 15:15:51 +0000
@@ -3,6 +3,7 @@
  */
 
 #include "squid.h"
+#include "CachePeer.h"
 #include "comm/ConnOpener.h"
 #include "comm/Connection.h"
 #include "comm/Loops.h"
@@ -12,12 +13,15 @@
 #include "globals.h"
 #include "icmp/net_db.h"
 #include "ipcache.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 #if HAVE_ERRNO_H
 #include <errno.h>
 #endif
 
+class CachePeer;
+
 CBDATA_NAMESPACED_CLASS_INIT(Comm, ConnOpener);
 
 Comm::ConnOpener::ConnOpener(Comm::ConnectionPointer &c, AsyncCall::Pointer &handler, time_t ctimeout) :
@@ -203,11 +207,11 @@
 
     /*
      * stats.conn_open is used to account for the number of
-     * connections that we have open to the peer, so we can limit
+     * connections that we have open to the CachePeer, so we can limit
      * based on the max-conn option.  We need to increment here,
      * even if the connection may fail.
      */
-    if (peer *peer=(conn_->getPeer()))
+    if (CachePeer *peer=(conn_->getPeer()))
         ++peer->stats.conn_open;
 
     lookupLocalAddress();

=== modified file 'src/comm/Connection.cc'
--- src/comm/Connection.cc	2012-08-06 17:41:08 +0000
+++ src/comm/Connection.cc	2012-09-04 15:15:51 +0000
@@ -1,10 +1,12 @@
 #include "squid.h"
+#include "CachePeer.h"
 #include "cbdata.h"
 #include "comm.h"
 #include "comm/Connection.h"
 #include "fde.h"
 #include "SquidTime.h"
 
+class CachePeer;
 bool
 Comm::IsConnOpen(const Comm::ConnectionPointer &conn)
 {
@@ -18,7 +20,7 @@
         fd(-1),
         tos(0),
         flags(COMM_NONBLOCKING),
-        _peer(NULL)
+        peer_(NULL)
 {
     *rfc931 = 0; // quick init the head. the rest does not matter.
 }
@@ -32,7 +34,7 @@
         close();
     }
 
-    cbdataReferenceDone(_peer);
+    cbdataReferenceDone(peer_);
 }
 
 Comm::ConnectionPointer
@@ -49,8 +51,8 @@
     // ensure FD is not open in the new copy.
     c->fd = -1;
 
-    // ensure we have a cbdata reference to _peer not a straight ptr copy.
-    c->_peer = cbdataReference(getPeer());
+    // ensure we have a cbdata reference to peer_ not a straight ptr copy.
+    c->peer_ = cbdataReference(getPeer());
 
     return c;
 }
@@ -61,29 +63,29 @@
     if (isOpen()) {
         comm_close(fd);
         fd = -1;
-        if (peer *p=getPeer())
+        if (CachePeer *p=getPeer())
             -- p->stats.conn_open;
     }
 }
 
-peer *
+CachePeer *
 Comm::Connection::getPeer() const
 {
-    if (cbdataReferenceValid(_peer))
-        return _peer;
+    if (cbdataReferenceValid(peer_))
+        return peer_;
 
     return NULL;
 }
 
 void
-Comm::Connection::setPeer(peer *p)
+Comm::Connection::setPeer(CachePeer *p)
 {
     /* set to self. nothing to do. */
     if (getPeer() == p)
         return;
 
-    cbdataReferenceDone(_peer);
+    cbdataReferenceDone(peer_);
     if (p) {
-        _peer = cbdataReference(p);
+        peer_ = cbdataReference(p);
     }
 }

=== modified file 'src/comm/Connection.h'
--- src/comm/Connection.h	2012-08-14 11:53:07 +0000
+++ src/comm/Connection.h	2012-09-04 14:38:44 +0000
@@ -56,7 +56,7 @@
 #include <ostream>
 #endif
 
-struct peer;
+class CachePeer;
 
 namespace Comm
 {
@@ -108,16 +108,16 @@
     /** determine whether this object describes an active connection or not. */
     bool isOpen() const { return (fd >= 0); }
 
-    /** retrieve the peer pointer for use.
+    /** retrieve the CachePeer pointer for use.
      * The caller is responsible for all CBDATA operations regarding the
      * used of the pointer returned.
      */
-    peer * getPeer() const;
+    CachePeer * getPeer() const;
 
-    /** alter the stored peer pointer.
-     * Perform appropriate CBDATA operations for locking the peer pointer
+    /** alter the stored CachePeer pointer.
+     * Perform appropriate CBDATA operations for locking the CachePeer pointer
      */
-    void setPeer(peer * p);
+    void setPeer(CachePeer * p);
 
 private:
     /** These objects may not be exactly duplicated. Use copyDetails() instead. */
@@ -156,12 +156,8 @@
 #endif
 
 private:
-    // XXX: we need to call this member peer_ but the struct peer_ global type
-    //      behind peer* clashes despite our private Comm:: namespace
-    //      (it being global gets inherited here too).
-
     /** cache_peer data object (if any) */
-    peer *_peer;
+    CachePeer *peer_;
 };
 
 }; // namespace Comm

=== modified file 'src/comm/ModPoll.cc'
--- src/comm/ModPoll.cc	2012-09-01 14:38:36 +0000
+++ src/comm/ModPoll.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "ICP.h"
 #include "mgr/Registration.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "Store.h"

=== modified file 'src/comm/ModSelect.cc'
--- src/comm/ModSelect.cc	2012-09-01 14:38:36 +0000
+++ src/comm/ModSelect.cc	2012-09-05 09:41:45 +0000
@@ -43,6 +43,7 @@
 #include "StatCounters.h"
 #include "StatHist.h"
 #include "Store.h"
+#include "SquidConfig.h"
 
 #if HAVE_SYS_STAT_H
 #include <sys/stat.h>

=== modified file 'src/comm/TcpAcceptor.cc'
--- src/comm/TcpAcceptor.cc	2012-08-31 16:57:39 +0000
+++ src/comm/TcpAcceptor.cc	2012-09-04 09:10:20 +0000
@@ -46,6 +46,7 @@
 #include "globals.h"
 #include "ip/Intercept.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 

=== modified file 'src/dns.cc'
--- src/dns.cc	2012-09-01 14:38:36 +0000
+++ src/dns.cc	2012-09-05 09:41:45 +0000
@@ -32,11 +32,12 @@
  */
 
 #include "squid.h"
+#include "helper.h"
+#include "mgr/Registration.h"
+#include "SquidConfig.h"
+#include "SquidTime.h"
 #include "Store.h"
 #include "wordlist.h"
-#include "SquidTime.h"
-#include "mgr/Registration.h"
-#include "helper.h"
 
 /* MS VisualStudio Projects are monolitich, so we need the following
    #if to include the external DNS code in compile process when

=== modified file 'src/dns_internal.cc'
--- src/dns_internal.cc	2012-09-01 14:38:36 +0000
+++ src/dns_internal.cc	2012-09-04 09:10:20 +0000
@@ -45,6 +45,7 @@
 #include "MemBuf.h"
 #include "mgr/Registration.h"
 #include "rfc3596.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "tools.h"

=== modified file 'src/errorpage.cc'
--- src/errorpage.cc	2012-09-01 14:38:36 +0000
+++ src/errorpage.cc	2012-09-04 09:10:20 +0000
@@ -46,6 +46,7 @@
 #include "fde.h"
 #include "MemBuf.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "URL.h"
 #include "URLScheme.h"
 #include "URL.h"

=== modified file 'src/esi/Esi.cc'
--- src/esi/Esi.cc	2012-08-31 16:57:39 +0000
+++ src/esi/Esi.cc	2012-09-04 09:10:20 +0000
@@ -60,6 +60,7 @@
 #include "Mem.h"
 #include "MemBuf.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 
 /* quick reference on behaviour here.
  * The ESI specification 1.0 requires the ESI processor to be able to

=== modified file 'src/external_acl.cc'
--- src/external_acl.cc	2012-09-01 14:38:36 +0000
+++ src/external_acl.cc	2012-09-04 09:10:20 +0000
@@ -55,6 +55,7 @@
 #include "MemBuf.h"
 #include "mgr/Registration.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidString.h"
 #include "SquidTime.h"
 #include "Store.h"

=== modified file 'src/fde.h'
--- src/fde.h	2012-08-14 11:53:07 +0000
+++ src/fde.h	2012-09-04 15:15:51 +0000
@@ -34,6 +34,10 @@
 #include "ip/Address.h"
 #include "structs.h"
 
+#if USE_SSL
+#include <openssl/ssl.h>
+#endif
+
 #if USE_DELAY_POOLS
 class ClientInfo;
 #endif

=== modified file 'src/format/Format.cc'
--- src/format/Format.cc	2012-08-31 16:57:39 +0000
+++ src/format/Format.cc	2012-09-12 16:06:56 +0000
@@ -383,8 +383,8 @@
         case LFT_LOCAL_LISTENING_IP: {
             // avoid logging a dash if we have reliable info
             const bool interceptedAtKnownPort = al->request ?
-                                                (al->request->flags.spoof_client_ip ||
-                                                 al->request->flags.intercepted) && al->cache.port :
+                                                (al->request->flags.spoofClientIp() ||
+                                                 al->request->flags.intercepted()) && al->cache.port :
                                                 false;
             if (interceptedAtKnownPort) {
                 const bool portAddressConfigured = !al->cache.port->s.IsAnyAddr();

=== modified file 'src/format/Token.cc'
--- src/format/Token.cc	2012-08-06 17:41:08 +0000
+++ src/format/Token.cc	2012-09-04 09:10:20 +0000
@@ -2,6 +2,7 @@
 #include "format/Config.h"
 #include "format/Token.h"
 #include "format/TokenTableEntry.h"
+#include "SquidConfig.h"
 #include "Store.h"
 
 const char *Format::log_tags[] = {

=== modified file 'src/forward.cc'
--- src/forward.cc	2012-09-13 06:56:05 +0000
+++ src/forward.cc	2012-09-13 16:20:41 +0000
@@ -32,9 +32,11 @@
 
 #include "squid.h"
 #include "AccessLogEntry.h"
+#include "acl/AclAddress.h"
 #include "acl/FilledChecklist.h"
 #include "acl/Gadgets.h"
 #include "anyp/PortCfg.h"
+#include "CachePeer.h"
 #include "CacheManager.h"
 #include "client_side.h"
 #include "comm/Connection.h"
@@ -63,6 +65,7 @@
 #include "neighbors.h"
 #include "pconn.h"
 #include "PeerSelectState.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StoreClient.h"
@@ -370,7 +373,7 @@
             fail(anErr);
         } // else use actual error from last connection attempt
 #if USE_SSL
-        if (request->flags.sslPeek && request->clientConnectionManager.valid()) {
+        if (request->flags.sslPeek() && request->clientConnectionManager.valid()) {
             errorAppendEntry(entry, err); // will free err
             err = NULL;
             CallJobHere1(17, 4, request->clientConnectionManager, ConnStateData,
@@ -718,7 +721,7 @@
             // a user-entered address (a host name or a user-entered IP).
             const bool isConnectRequest = !request->clientConnectionManager->port->spoof_client_ip &&
                                           !request->clientConnectionManager->port->intercepted;
-            if (request->flags.sslPeek && !isConnectRequest) {
+            if (request->flags.sslPeek() && !isConnectRequest) {
                 if (X509 *srvX509 = errDetails->peerCert()) {
                     if (const char *name = Ssl::CommonHostName(srvX509)) {
                         request->SetHost(name);
@@ -767,7 +770,7 @@
 {
     SSL *ssl;
     SSL_CTX *sslContext = NULL;
-    const peer *peer = serverConnection()->getPeer();
+    const CachePeer *peer = serverConnection()->getPeer();
     int fd = serverConnection()->fd;
 
     if (peer) {
@@ -815,7 +818,7 @@
         const bool hostnameIsIp = request->GetHostIsNumeric();
         const bool isConnectRequest = !request->clientConnectionManager->port->spoof_client_ip &&
                                       !request->clientConnectionManager->port->intercepted;
-        if (!request->flags.sslPeek || isConnectRequest)
+        if (!request->flags.sslPeek() || isConnectRequest)
             SSL_set_ex_data(ssl, ssl_ex_index_server, (void*)hostname);
 
         // Use SNI TLS extension only when we connect directly
@@ -879,20 +882,20 @@
         peerConnectSucceded(serverConnection()->getPeer());
 
     // some requests benefit from pinning but do not require it and can "repin"
-    const bool rePin = request->flags.canRePin &&
+    const bool rePin = request->flags.canRePin() &&
                        request->clientConnectionManager.valid();
     if (rePin) {
         debugs(17, 3, HERE << "repinning " << serverConn);
         request->clientConnectionManager->pinConnection(serverConn,
-                request, serverConn->getPeer(), request->flags.auth);
-        request->flags.pinned = 1;
+                request, serverConn->getPeer(), request->flags.hasAuth());
+        request->flags.markPinned();
     }
 
 #if USE_SSL
-    if (!request->flags.pinned || rePin) {
+    if (!request->flags.pinned() || rePin) {
         if ((serverConnection()->getPeer() && serverConnection()->getPeer()->use_ssl) ||
                 (!serverConnection()->getPeer() && request->protocol == AnyP::PROTO_HTTPS) ||
-                request->flags.sslPeek) {
+                request->flags.sslPeek()) {
             initiateSSL();
             return;
         }
@@ -956,7 +959,7 @@
     if (ftimeout < ctimeout)
         ctimeout = ftimeout;
 
-    if (serverDestinations[0]->getPeer() && request->flags.sslBumped == true) {
+    if (serverDestinations[0]->getPeer() && request->flags.sslBumped() == true) {
         debugs(50, 4, "fwdConnectStart: Ssl bumped connections through parrent proxy are not allowed");
         ErrorState *anErr = new ErrorState(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE, request);
         fail(anErr);
@@ -964,7 +967,7 @@
         return;
     }
 
-    request->flags.pinned = 0; // XXX: what if the ConnStateData set this to flag existing credentials?
+    request->flags.clearPinned(); // XXX: what if the ConnStateData set this to flag existing credentials?
     // XXX: answer: the peer selection *should* catch it and give us only the pinned peer. so we reverse the =0 step below.
     // XXX: also, logs will now lie if pinning is broken and leads to an error message.
     if (serverDestinations[0]->peerType == PINNED) {
@@ -981,9 +984,9 @@
                 serverConn->peerType = HIER_DIRECT;
 #endif
             ++n_tries;
-            request->flags.pinned = 1;
+            request->flags.markPinned();
             if (pinned_connection->pinnedAuth())
-                request->flags.auth = 1;
+                request->flags.markAuth();
             comm_add_close_handler(serverConn->fd, fwdServerClosedWrapper, this);
             // the server may close the pinned connection before this request
             pconnRace = racePossible;
@@ -992,7 +995,7 @@
         }
         /* Failure. Fall back on next path unless we can re-pin */
         debugs(17,2,HERE << "Pinned connection failed: " << pinned_connection);
-        if (pconnRace != raceHappened || !request->flags.canRePin) {
+        if (pconnRace != raceHappened || !request->flags.canRePin()) {
             serverDestinations.shift();
             pconnRace = raceImpossible;
             startConnectionOrFail();
@@ -1125,7 +1128,7 @@
 #endif
 
 #if USE_SSL
-    if (request->flags.sslPeek) {
+    if (request->flags.sslPeek()) {
         CallJobHere1(17, 4, request->clientConnectionManager, ConnStateData,
                      ConnStateData::httpsPeeked, serverConnection());
         unregister(serverConn); // async call owns it now
@@ -1140,7 +1143,7 @@
         request->peer_domain = serverConnection()->getPeer()->domain;
         httpStart(this);
     } else {
-        assert(!request->flags.sslPeek);
+        assert(!request->flags.sslPeek());
         request->peer_login = NULL;
         request->peer_domain = NULL;
 
@@ -1254,7 +1257,7 @@
 ErrorState *
 FwdState::makeConnectingError(const err_type type) const
 {
-    return new ErrorState(type, request->flags.need_validation ?
+    return new ErrorState(type, request->flags.validationNeeded() ?
                           HTTP_GATEWAY_TIMEOUT : HTTP_SERVICE_UNAVAILABLE, request);
 }
 
@@ -1400,7 +1403,7 @@
         conn->local.SetIPv4();
 
     // maybe use TPROXY client address
-    if (request && request->flags.spoof_client_ip) {
+    if (request && request->flags.spoofClientIp()) {
         if (!conn->getPeer() || !conn->getPeer()->options.no_tproxy) {
 #if FOLLOW_X_FORWARDED_FOR && LINUX_NETFILTER
             if (Config.onoff.tproxy_uses_indirect_client)
@@ -1427,7 +1430,7 @@
     // TODO use the connection details in ACL.
     // needs a bit of rework in ACLFilledChecklist to use Comm::Connection instead of ConnStateData
 
-    acl_address *l;
+    AclAddress *l;
     for (l = Config.accessList.outgoing_address; l; l = l->next) {
 
         /* check if the outgoing address is usable to the destination */

=== modified file 'src/forward.h'
--- src/forward.h	2012-08-29 14:27:18 +0000
+++ src/forward.h	2012-09-05 15:12:36 +0000
@@ -4,6 +4,7 @@
 #include "Array.h"
 #include "comm.h"
 #include "comm/Connection.h"
+#include "err_type.h"
 #include "fde.h"
 #include "ip/Address.h"
 #include "RefCount.h"

=== modified file 'src/fqdncache.cc'
--- src/fqdncache.cc	2012-09-01 14:38:36 +0000
+++ src/fqdncache.cc	2012-09-04 09:10:20 +0000
@@ -36,6 +36,7 @@
 #include "event.h"
 #include "Mem.h"
 #include "mgr/Registration.h"
+#include "SquidConfig.h"
 #include "SquidDns.h"
 #include "SquidTime.h"
 #include "StatCounters.h"

=== modified file 'src/fs/coss/store_dir_coss.cc'
--- src/fs/coss/store_dir_coss.cc	2012-08-30 08:30:12 +0000
+++ src/fs/coss/store_dir_coss.cc	2012-09-06 14:22:03 +0000
@@ -52,6 +52,7 @@
 #include "store_key_md5.h"
 #include "swap_log_op.h"
 #include "store_rebuild.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 
 #if HAVE_ERRNO_H
@@ -76,7 +77,7 @@
         unsigned int clean:1;
     } flags;
 
-    struct _store_rebuild_data counts;
+    StoreRebuildData counts;
 };
 
 static char *storeCossDirSwapLogFile(SwapDir *, const char *);

=== modified file 'src/fs/coss/store_io_coss.cc'
--- src/fs/coss/store_io_coss.cc	2012-09-01 14:38:36 +0000
+++ src/fs/coss/store_io_coss.cc	2012-09-04 09:10:20 +0000
@@ -33,13 +33,14 @@
 
 #include "squid.h"
 #include "CossSwapDir.h"
+#include "DiskIO/DiskIOStrategy.h"
+#include "fde.h"
+#include "MemObject.h"
+#include "SquidConfig.h"
+#include "store_coss.h"
 #include "Store.h"
-#include "store_coss.h"
-#include "MemObject.h"
-#include "fde.h"
+#include "StoreFScoss.h"
 #include "SwapDir.h"
-#include "StoreFScoss.h"
-#include "DiskIO/DiskIOStrategy.h"
 
 CBDATA_TYPE(CossMemBuf);
 

=== modified file 'src/fs/rock/RockRebuild.h'
--- src/fs/rock/RockRebuild.h	2011-09-06 22:32:30 +0000
+++ src/fs/rock/RockRebuild.h	2012-09-06 14:22:03 +0000
@@ -2,7 +2,8 @@
 #define SQUID_FS_ROCK_REBUILD_H
 
 #include "base/AsyncJob.h"
-#include "structs.h"
+#include "cbdata.h"
+#include "store_rebuild.h"
 
 namespace Rock
 {
@@ -39,7 +40,7 @@
     int64_t dbOffset;
     int filen;
 
-    struct _store_rebuild_data counts;
+    StoreRebuildData counts;
 
     static void Steps(void *data);
 

=== modified file 'src/fs/rock/RockSwapDir.cc'
--- src/fs/rock/RockSwapDir.cc	2012-09-01 14:38:36 +0000
+++ src/fs/rock/RockSwapDir.cc	2012-09-04 09:10:20 +0000
@@ -17,6 +17,7 @@
 #include "ipc/mem/Pages.h"
 #include "MemObject.h"
 #include "Parsing.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "tools.h"
 

=== modified file 'src/fs/ufs/RebuildState.cc'
--- src/fs/ufs/RebuildState.cc	2012-08-31 16:57:39 +0000
+++ src/fs/ufs/RebuildState.cc	2012-09-04 09:10:20 +0000
@@ -34,6 +34,7 @@
 #include "disk.h"
 #include "globals.h"
 #include "RebuildState.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "store_key_md5.h"
 #include "store_rebuild.h"

=== modified file 'src/fs/ufs/RebuildState.h'
--- src/fs/ufs/RebuildState.h	2012-08-28 13:00:30 +0000
+++ src/fs/ufs/RebuildState.h	2012-09-06 14:22:03 +0000
@@ -32,8 +32,8 @@
 
 #include "RefCount.h"
 #include "UFSSwapDir.h"
-#include "structs.h"
 #include "UFSSwapLogParser.h"
+#include "store_rebuild.h"
 
 class StoreEntry;
 
@@ -76,7 +76,7 @@
     char fullpath[MAXPATHLEN];
     char fullfilename[MAXPATHLEN];
 
-    struct _store_rebuild_data counts;
+    StoreRebuildData counts;
 
 private:
     CBDATA_CLASS2(RebuildState);

=== modified file 'src/fs/ufs/UFSSwapDir.cc'
--- src/fs/ufs/UFSSwapDir.cc	2012-08-31 16:57:39 +0000
+++ src/fs/ufs/UFSSwapDir.cc	2012-09-04 09:10:20 +0000
@@ -46,6 +46,7 @@
 #include "store_key_md5.h"
 #include "StoreSearchUFS.h"
 #include "StoreSwapLogData.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "tools.h"

=== modified file 'src/ftp.cc'
--- src/ftp.cc	2012-09-01 14:38:36 +0000
+++ src/ftp.cc	2012-09-04 09:10:20 +0000
@@ -53,6 +53,7 @@
 #include "mime.h"
 #include "rfc1738.h"
 #include "Server.h"
+#include "SquidConfig.h"
 #include "SquidString.h"
 #include "SquidTime.h"
 #include "StatCounters.h"

=== modified file 'src/globals.h'
--- src/globals.h	2012-09-01 14:38:36 +0000
+++ src/globals.h	2012-09-06 14:48:49 +0000
@@ -40,6 +40,8 @@
 #include "defines.h"
 
 /* for iostats */
+#include "acl/AclDenyInfoList.h"
+#include "CacheDigest.h"
 #include "structs.h"
 
 extern char *ConfigFile;	/* NULL */
@@ -87,7 +89,7 @@
 extern int n_disk_objects;	/* 0 */
 extern iostats IOStats;
 
-extern struct acl_deny_info_list *DenyInfoList;	/* NULL */
+extern AclDenyInfoList *DenyInfoList;	/* NULL */
 
 extern struct timeval squid_start;
 extern int starting_up;	/* 1 */

=== modified file 'src/gopher.cc'
--- src/gopher.cc	2012-08-31 16:57:39 +0000
+++ src/gopher.cc	2012-09-04 09:10:20 +0000
@@ -43,6 +43,7 @@
 #include "MemBuf.h"
 #include "mime.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "Store.h"

=== modified file 'src/htcp.cc'
--- src/htcp.cc	2012-09-01 14:38:36 +0000
+++ src/htcp.cc	2012-09-04 15:15:51 +0000
@@ -35,6 +35,7 @@
 #include "AccessLogEntry.h"
 #include "acl/Acl.h"
 #include "acl/FilledChecklist.h"
+#include "CachePeer.h"
 #include "comm.h"
 #include "comm/Connection.h"
 #include "comm/Loops.h"
@@ -49,6 +50,7 @@
 #include "md5.h"
 #include "MemBuf.h"
 #include "refresh.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "store_key_md5.h"
@@ -1307,7 +1309,7 @@
 static void
 htcpForwardClr(char *buf, int sz)
 {
-    peer *p;
+    CachePeer *p;
 
     for (p = Config.peers; p; p = p->next) {
         if (!p->options.htcp) {
@@ -1550,7 +1552,7 @@
 }
 
 int
-htcpQuery(StoreEntry * e, HttpRequest * req, peer * p)
+htcpQuery(StoreEntry * e, HttpRequest * req, CachePeer * p)
 {
     cache_key *save_key;
     static char pkt[8192];
@@ -1603,10 +1605,10 @@
 }
 
 /*
- * Send an HTCP CLR message for a specified item to a given peer.
+ * Send an HTCP CLR message for a specified item to a given CachePeer.
  */
 void
-htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason)
+htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, CachePeer * p, htcp_clr_reason reason)
 {
     static char pkt[8192];
     ssize_t pktlen;

=== modified file 'src/htcp.h'
--- src/htcp.h	2012-08-14 11:53:07 +0000
+++ src/htcp.h	2012-09-04 14:38:44 +0000
@@ -79,10 +79,10 @@
  * 		Don't wait for a reply or count in stats as sent.
  * \retval -1   Error sending request.
  */
-SQUIDCEXTERN int htcpQuery(StoreEntry * e, HttpRequest * req, peer * p);
+SQUIDCEXTERN int htcpQuery(StoreEntry * e, HttpRequest * req, CachePeer * p);
 
 /// \ingroup ServerProtocolHTCP
-SQUIDCEXTERN void htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason);
+SQUIDCEXTERN void htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, CachePeer * p, htcp_clr_reason reason);
 
 /// \ingroup ServerProtocolHTCP
 SQUIDCEXTERN void htcpSocketShutdown(void);

=== modified file 'src/http.cc'
--- src/http.cc	2012-09-03 07:16:45 +0000
+++ src/http.cc	2012-09-13 16:20:41 +0000
@@ -39,6 +39,7 @@
 #include "base64.h"
 #include "base/AsyncJobCalls.h"
 #include "base/TextException.h"
+#include "CachePeer.h"
 #include "client_side.h"
 #include "comm/Connection.h"
 #include "comm/Write.h"
@@ -64,7 +65,9 @@
 #include "peer_proxy_negotiate_auth.h"
 #include "profiler/Profiler.h"
 #include "refresh.h"
+#include "RefreshPattern.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "Store.h"
@@ -117,7 +120,7 @@
         _peer = cbdataReference(fwd->serverConnection()->getPeer());         /* might be NULL */
 
     if (_peer) {
-        request->flags.proxying = 1;
+        request->flags.setProxying();
         /*
          * This NEIGHBOR_PROXY_ONLY check probably shouldn't be here.
          * We might end up getting the object from somewhere else if,
@@ -294,7 +297,7 @@
 void
 HttpStateData::processSurrogateControl(HttpReply *reply)
 {
-    if (request->flags.accelerated && reply->surrogate_control) {
+    if (request->flags.accelerated() && reply->surrogate_control) {
         HttpHdrScTarget *sctusable = reply->surrogate_control->getMergedTarget(Config.Accel.surrogate_id);
 
         if (sctusable) {
@@ -335,7 +338,7 @@
     const char *v;
 #if USE_HTTP_VIOLATIONS
 
-    const refresh_t *R = NULL;
+    const RefreshPattern *R = NULL;
 
     /* This strange looking define first looks up the refresh pattern
      * and then checks if the specified flag is set. The main purpose
@@ -376,7 +379,7 @@
         }
     }
 
-    if (request->flags.auth || request->flags.auth_sent) {
+    if (request->flags.hasAuth() || request->flags.authSent()) {
         /*
          * Responses to requests with authorization may be cached
          * only if a Cache-Control: public reply header is present.
@@ -713,7 +716,7 @@
     }
 
     if (!peerSupportsConnectionPinning())
-        request->flags.connection_auth_disabled = 1;
+        request->flags.disableConnectionAuth();
 
     HttpReply *vrep = setVirginReply(newrep);
     flags.headers_parsed = 1;
@@ -834,7 +837,7 @@
         return true;
 
     /*if the connections it is already pinned it is OK*/
-    if (request->flags.pinned)
+    if (request->flags.pinned())
         return true;
 
     /*Allow pinned connections only if the Proxy-support header exists in
@@ -1234,7 +1237,7 @@
             debugs(11, DBG_IMPORTANT, "WARNING: HTTP: Invalid Response: Headers did not parse at all for " << entry->url() << " AKA " << request->GetHost() << request->urlpath.termedBuf() );
         } else {
             error = ERR_ZERO_SIZE_OBJECT;
-            debugs(11, (request->flags.accelerated?DBG_IMPORTANT:2), "WARNING: HTTP: Invalid Response: No object data received for " <<
+            debugs(11, (request->flags.accelerated()?DBG_IMPORTANT:2), "WARNING: HTTP: Invalid Response: No object data received for " <<
                    entry->url() << " AKA " << request->GetHost() << request->urlpath.termedBuf() );
         }
     }
@@ -1383,18 +1386,18 @@
             closeHandler = NULL;
             fwd->unregister(serverConnection);
 
-            if (request->flags.spoof_client_ip)
+            if (request->flags.spoofClientIp())
                 client_addr = request->client_addr;
 
-            if (request->flags.pinned) {
+            if (request->flags.pinned()) {
                 ispinned = true;
-            } else if (request->flags.connection_auth && request->flags.auth_sent) {
+            } else if (request->flags.connectionAuthWanted() && request->flags.authSent()) {
                 ispinned = true;
             }
 
             if (request->pinnedConnection() && ispinned) {
                 request->pinnedConnection()->pinConnection(serverConnection, request, _peer,
-                        (request->flags.connection_auth != 0));
+                        request->flags.connectionAuthWanted());
             } else {
                 fwd->pconnPush(serverConnection, request->peer_host ? request->peer_host : request->GetHost());
             }
@@ -1527,7 +1530,7 @@
     http_hdr_type header = flags.originpeer ? HDR_AUTHORIZATION : HDR_PROXY_AUTHORIZATION;
 
     /* Nothing to do unless we are forwarding to a peer */
-    if (!request->flags.proxying)
+    if (!request->flags.proxying())
         return;
 
     /* Needs to be explicitly enabled */
@@ -1645,11 +1648,11 @@
      */
     if (!we_do_ranges && request->multipartRangeRequest()) {
         /* don't cache the result */
-        request->flags.cachable = 0;
+        request->flags.setNotCachable();
         /* pretend it's not a range request */
         delete request->range;
         request->range = NULL;
-        request->flags.range = 0;
+        request->flags.clearRanged();
     }
 
     /* append Via */
@@ -1664,7 +1667,7 @@
         strVia.clean();
     }
 
-    if (request->flags.accelerated) {
+    if (request->flags.accelerated()) {
         /* Append Surrogate-Capabilities */
         String strSurrogate(hdr_in->getList(HDR_SURROGATE_CAPABILITY));
 #if USE_SQUID_ESI
@@ -1733,7 +1736,7 @@
 
     /* append Authorization if known in URL, not in header and going direct */
     if (!hdr_out->has(HDR_AUTHORIZATION)) {
-        if (!request->flags.proxying && request->login && *request->login) {
+        if (!request->flags.proxying() && request->login && *request->login) {
             httpHeaderPutStrf(hdr_out, HDR_AUTHORIZATION, "Basic %s",
                               old_base64_encode(request->login));
         }
@@ -1867,7 +1870,7 @@
          */
         if (request->peer_domain)
             hdr_out->putStr(HDR_HOST, request->peer_domain);
-        else if (request->flags.redirected && !Config.onoff.redir_rewrites_host)
+        else if (request->flags.isRedirected() && !Config.onoff.redir_rewrites_host)
             hdr_out->addEntry(e->clone());
         else {
             /* use port# only if not default */
@@ -1984,13 +1987,13 @@
 
     int64_t roffLimit = request->getRangeOffsetLimit();
 
-    if (NULL == request->range || !request->flags.cachable
-            || request->range->offsetLimitExceeded(roffLimit) || request->flags.connection_auth)
+    if (NULL == request->range || !request->flags.isCachable()
+            || request->range->offsetLimitExceeded(roffLimit) || request->flags.connectionAuthWanted())
         result = false;
 
     debugs(11, 8, "decideIfWeDoRanges: range specs: " <<
            request->range << ", cachable: " <<
-           request->flags.cachable << "; we_do_ranges: " << result);
+           request->flags.isCachable() << "; we_do_ranges: " << result);
 
     return result;
 }
@@ -2018,10 +2021,10 @@
         Packer p;
         httpBuildRequestHeader(request, entry, fwd->al, &hdr, flags);
 
-        if (request->flags.pinned && request->flags.connection_auth)
-            request->flags.auth_sent = 1;
+        if (request->flags.pinned() && request->flags.connectionAuthWanted())
+            request->flags.markAuthSent();
         else if (hdr.has(HDR_AUTHORIZATION))
-            request->flags.auth_sent = 1;
+            request->flags.markAuthSent();
 
         packerToMemInit(&p, mb);
         hdr.packInto(&p);
@@ -2088,7 +2091,7 @@
     /*
      * Is keep-alive okay for all request methods?
      */
-    if (request->flags.must_keepalive)
+    if (request->flags.mustKeepalive())
         flags.keepalive = 1;
     else if (!Config.onoff.server_pconns)
         flags.keepalive = 0;

=== modified file 'src/http.h'
--- src/http.h	2012-09-01 14:38:36 +0000
+++ src/http.h	2012-09-04 14:38:44 +0000
@@ -61,7 +61,7 @@
     virtual void maybeReadVirginBody(); // read response data from the network
     int cacheableReply();
 
-    peer *_peer;		/* peer request made to */
+    CachePeer *_peer;		/* CachePeer request made to */
     int eof;			/* reached end-of-object? */
     int lastChunk;		/* reached last chunk of a chunk-encoded reply */
     http_state_flags flags;

=== modified file 'src/icmp/IcmpSquid.cc'
--- src/icmp/IcmpSquid.cc	2012-09-01 14:38:36 +0000
+++ src/icmp/IcmpSquid.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "icmp/IcmpSquid.h"
 #include "icmp/net_db.h"
 #include "ip/tools.h"
+#include "SquidConfig.h"
 #include "SquidIpc.h"
 #include "SquidTime.h"
 

=== modified file 'src/icmp/net_db.cc'
--- src/icmp/net_db.cc	2012-08-31 16:57:39 +0000
+++ src/icmp/net_db.cc	2012-09-13 11:40:32 +0000
@@ -39,6 +39,7 @@
  */
 
 #include "squid.h"
+#include "CachePeer.h"
 #include "cbdata.h"
 #include "disk.h"
 #include "event.h"
@@ -81,7 +82,7 @@
 } netdb_conn_state_t;
 
 typedef struct {
-    peer *p;
+    CachePeer *p;
     StoreEntry *e;
     store_client *sc;
     HttpRequest *r;
@@ -105,7 +106,7 @@
 static void netdbPurgeLRU(void);
 static netdbEntry *netdbLookupHost(const char *key);
 static net_db_peer *netdbPeerByName(const netdbEntry * n, const char *);
-static net_db_peer *netdbPeerAdd(netdbEntry * n, peer * e);
+static net_db_peer *netdbPeerAdd(netdbEntry * n, CachePeer * e);
 static const char *netdbPeerName(const char *name);
 static IPH netdbSendPing;
 static QS sortPeerByRtt;
@@ -116,7 +117,7 @@
 static STCB netdbExchangeHandleReply;
 static void netdbExchangeDone(void *);
 
-/* We have to keep a local list of peer names.  The Peers structure
+/* We have to keep a local list of CachePeer names.  The Peers structure
  * gets freed during a reconfigure.  We want this database to
  * remain persisitent, so _net_db_peer->peername points into this
  * linked list */
@@ -421,7 +422,7 @@
 }
 
 static net_db_peer *
-netdbPeerAdd(netdbEntry * n, peer * e)
+netdbPeerAdd(netdbEntry * n, CachePeer * e)
 {
     net_db_peer *p;
     net_db_peer *o;
@@ -1123,7 +1124,7 @@
 }
 
 void
-netdbUpdatePeer(HttpRequest * r, peer * e, int irtt, int ihops)
+netdbUpdatePeer(HttpRequest * r, CachePeer * e, int irtt, int ihops)
 {
 #if USE_ICMP
     netdbEntry *n;
@@ -1159,7 +1160,7 @@
 }
 
 void
-netdbExchangeUpdatePeer(Ip::Address &addr, peer * e, double rtt, double hops)
+netdbExchangeUpdatePeer(Ip::Address &addr, CachePeer * e, double rtt, double hops)
 {
 #if USE_ICMP
     netdbEntry *n;
@@ -1313,7 +1314,7 @@
 netdbExchangeStart(void *data)
 {
 #if USE_ICMP
-    peer *p = (peer *)data;
+    CachePeer *p = (CachePeer *)data;
     char *uri;
     netdbExchangeState *ex;
     StoreIOBuffer tempBuffer;
@@ -1334,7 +1335,7 @@
     assert(NULL != ex->r);
     ex->r->http_ver = HttpVersion(1,1);
     ex->connstate = STATE_HEADER;
-    ex->e = storeCreateEntry(uri, uri, request_flags(), METHOD_GET);
+    ex->e = storeCreateEntry(uri, uri, RequestFlags(), METHOD_GET);
     ex->buf_sz = NETDB_REQBUF_SZ;
     assert(NULL != ex->e);
     ex->sc = storeClientListAdd(ex->e, ex);
@@ -1343,7 +1344,7 @@
     tempBuffer.data = ex->buf;
     storeClientCopy(ex->sc, ex->e, tempBuffer,
                     netdbExchangeHandleReply, ex);
-    ex->r->flags.loopdetect = 1;	/* cheat! -- force direct */
+    ex->r->flags.setLoopDetect();	/* cheat! -- force direct */
 
     if (p->login)
         xstrncpy(ex->r->login, p->login, MAX_LOGIN_SZ);
@@ -1355,11 +1356,11 @@
 #endif
 }
 
-peer *
+CachePeer *
 netdbClosestParent(HttpRequest * request)
 {
 #if USE_ICMP
-    peer *p = NULL;
+    CachePeer *p = NULL;
     netdbEntry *n;
     const ipcache_addrs *ia;
     net_db_peer *h;

=== modified file 'src/icmp/net_db.h'
--- src/icmp/net_db.h	2012-08-28 13:00:30 +0000
+++ src/icmp/net_db.h	2012-09-04 14:38:44 +0000
@@ -9,7 +9,7 @@
 class StoreEntry;
 class HttpRequest;
 
-/* for struct peer */
+/* for CachePeer */
 #include "structs.h"
 
 SQUIDCEXTERN void netdbInit(void);
@@ -21,14 +21,14 @@
 SQUIDCEXTERN void netdbFreeMemory(void);
 SQUIDCEXTERN int netdbHostHops(const char *host);
 SQUIDCEXTERN int netdbHostRtt(const char *host);
-SQUIDCEXTERN void netdbUpdatePeer(HttpRequest *, peer * e, int rtt, int hops);
+SQUIDCEXTERN void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops);
 
 SQUIDCEXTERN void netdbDeleteAddrNetwork(Ip::Address &addr);
 SQUIDCEXTERN void netdbBinaryExchange(StoreEntry *);
 SQUIDCEXTERN void netdbExchangeStart(void *);
 
-SQUIDCEXTERN void netdbExchangeUpdatePeer(Ip::Address &, peer *, double, double);
-SQUIDCEXTERN peer *netdbClosestParent(HttpRequest *);
+SQUIDCEXTERN void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double);
+SQUIDCEXTERN CachePeer *netdbClosestParent(HttpRequest *);
 SQUIDCEXTERN void netdbHostData(const char *host, int *samp, int *rtt, int *hops);
 
 #endif /* ICMP_NET_DB_H */

=== modified file 'src/icp_v2.cc'
--- src/icp_v2.cc	2012-08-31 16:57:39 +0000
+++ src/icp_v2.cc	2012-09-04 09:10:20 +0000
@@ -56,6 +56,7 @@
 #include "neighbors.h"
 #include "refresh.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
 #include "Store.h"

=== modified file 'src/internal.cc'
--- src/internal.cc	2012-09-01 14:38:36 +0000
+++ src/internal.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "HttpRequest.h"
 #include "HttpReply.h"
 #include "MemBuf.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "tools.h"
 #include "URL.h"

=== modified file 'src/ipc.cc'
--- src/ipc.cc	2012-08-31 16:57:39 +0000
+++ src/ipc.cc	2012-09-04 09:10:20 +0000
@@ -36,6 +36,7 @@
 #include "fde.h"
 #include "globals.h"
 #include "ip/Address.h"
+#include "SquidConfig.h"
 #include "SquidIpc.h"
 #include "tools.h"
 #include "rfc1738.h"

=== modified file 'src/ipc/Kids.cc'
--- src/ipc/Kids.cc	2012-08-31 16:57:39 +0000
+++ src/ipc/Kids.cc	2012-09-04 09:10:20 +0000
@@ -7,6 +7,7 @@
 #include "globals.h"
 #include "ipc/Kids.h"
 #include "tools.h"
+#include "SquidConfig.h"
 #include "structs.h"
 
 Kids TheKids;

=== modified file 'src/ipc_win32.cc'
--- src/ipc_win32.cc	2012-09-01 14:38:36 +0000
+++ src/ipc_win32.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "fde.h"
 #include "ip/Address.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidIpc.h"
 #include "SquidTime.h"
 #include "tools.h"

=== modified file 'src/ipcache.cc'
--- src/ipcache.cc	2012-08-31 16:57:39 +0000
+++ src/ipcache.cc	2012-09-04 09:10:20 +0000
@@ -41,6 +41,7 @@
 #include "Mem.h"
 #include "mgr/Registration.h"
 #include "rfc3596.h"
+#include "SquidConfig.h"
 #include "SquidDns.h"
 #include "SquidTime.h"
 #include "StatCounters.h"

=== added file 'src/log/CustomLog.cc'
--- src/log/CustomLog.cc	1970-01-01 00:00:00 +0000
+++ src/log/CustomLog.cc	2012-09-06 12:47:15 +0000
@@ -0,0 +1,31 @@
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#include "squid.h"
+#include "CustomLog.h"
+

=== added file 'src/log/CustomLog.h'
--- src/log/CustomLog.h	1970-01-01 00:00:00 +0000
+++ src/log/CustomLog.h	2012-09-06 13:29:14 +0000
@@ -0,0 +1,48 @@
+#ifndef SQUID_CUSTOMLOG_H_
+#define SQUID_CUSTOMLOG_H_
+/*
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  Squid is the result of efforts by numerous individuals from
+ *  the Internet community; see the CONTRIBUTORS file for full
+ *  details.   Many organizations have provided support for Squid's
+ *  development; see the SPONSORS file for full details.  Squid is
+ *  Copyrighted (C) 2001 by the Regents of the University of
+ *  California; see the COPYRIGHT file for full details.  Squid
+ *  incorporates software developed and/or copyrighted by other
+ *  sources; see the CREDITS file for full details.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+#include "format/Format.h"
+#include "log/Formats.h"
+
+class ACLList;
+class Logfile;
+
+class CustomLog {
+public:
+    char *filename;
+    ACLList *aclList;
+    Format::Format *logFormat;
+    Logfile *logfile;
+    CustomLog *next;
+    Log::Format::log_type type;
+};
+
+
+#endif /* SQUID_CUSTOMLOG_H_ */

=== modified file 'src/log/FormatHttpdCombined.cc'
--- src/log/FormatHttpdCombined.cc	2012-09-01 14:38:36 +0000
+++ src/log/FormatHttpdCombined.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "HttpRequest.h"
 #include "log/File.h"
 #include "log/Formats.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 void

=== modified file 'src/log/FormatHttpdCommon.cc'
--- src/log/FormatHttpdCommon.cc	2012-09-01 14:38:36 +0000
+++ src/log/FormatHttpdCommon.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "globals.h"
 #include "log/File.h"
 #include "log/Formats.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 void

=== modified file 'src/log/FormatSquidCustom.cc'
--- src/log/FormatSquidCustom.cc	2012-09-01 14:38:36 +0000
+++ src/log/FormatSquidCustom.cc	2012-09-06 13:29:14 +0000
@@ -32,12 +32,13 @@
 
 #include "squid.h"
 #include "AccessLogEntry.h"
+#include "log/CustomLog.h"
 #include "log/File.h"
 #include "log/Formats.h"
 #include "MemBuf.h"
 
 void
-Log::Format::SquidCustom(const AccessLogEntry::Pointer &al, customlog * log)
+Log::Format::SquidCustom(const AccessLogEntry::Pointer &al, CustomLog * log)
 {
     static MemBuf mb;
     mb.reset();

=== modified file 'src/log/FormatSquidIcap.cc'
--- src/log/FormatSquidIcap.cc	2012-09-01 14:38:36 +0000
+++ src/log/FormatSquidIcap.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "HttpRequest.h"
 #include "log/File.h"
 #include "log/Formats.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 void

=== modified file 'src/log/FormatSquidNative.cc'
--- src/log/FormatSquidNative.cc	2012-09-01 14:38:36 +0000
+++ src/log/FormatSquidNative.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "globals.h"
 #include "log/File.h"
 #include "log/Formats.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 void

=== modified file 'src/log/Formats.h'
--- src/log/Formats.h	2012-07-17 14:11:24 +0000
+++ src/log/Formats.h	2012-09-06 13:29:14 +0000
@@ -5,6 +5,7 @@
 
 typedef RefCount<AccessLogEntry> AccessLogEntryPointer;
 class AccessLogEntry;
+class CustomLog;
 class Logfile;
 
 namespace Log
@@ -40,7 +41,7 @@
 void SquidReferer(const AccessLogEntryPointer &al, Logfile * logfile);
 
 /// Log with a local custom format
-void SquidCustom(const AccessLogEntryPointer &al, customlog * log);
+void SquidCustom(const AccessLogEntryPointer &al, CustomLog * log);
 
 /// Log with Apache httpd common format
 void HttpdCommon(const AccessLogEntryPointer &al, Logfile * logfile);

=== modified file 'src/log/Makefile.am'
--- src/log/Makefile.am	2012-08-29 07:29:35 +0000
+++ src/log/Makefile.am	2012-09-06 12:47:15 +0000
@@ -27,5 +27,7 @@
 	ModTcp.cc \
 	ModTcp.h \
 	ModUdp.cc \
-	ModUdp.h
+	ModUdp.h \
+	CustomLog.h \
+	CustomLog.cc
 

=== modified file 'src/log/ModDaemon.cc'
--- src/log/ModDaemon.cc	2012-08-31 16:57:39 +0000
+++ src/log/ModDaemon.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 #include "log/File.h"
 #include "log/ModDaemon.h"
 #include "SquidIpc.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 #if HAVE_ERRNO_H

=== modified file 'src/log/ModStdio.cc'
--- src/log/ModStdio.cc	2012-08-31 16:57:39 +0000
+++ src/log/ModStdio.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "globals.h"
 #include "log/File.h"
 #include "log/ModStdio.h"
+#include "SquidConfig.h"
 
 #if HAVE_ERRNO_H
 #include <errno.h>

=== modified file 'src/log/ModTcp.cc'
--- src/log/ModTcp.cc	2012-08-31 16:57:39 +0000
+++ src/log/ModTcp.cc	2012-09-04 09:10:20 +0000
@@ -40,6 +40,7 @@
 #include "log/ModTcp.h"
 #include "Parsing.h"
 #include "structs.h"
+#include "SquidConfig.h"
 
 #if HAVE_ERRNO_H
 #include <errno.h>

=== modified file 'src/log/ModUdp.cc'
--- src/log/ModUdp.cc	2012-08-31 16:57:39 +0000
+++ src/log/ModUdp.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 #include "log/ModUdp.h"
 #include "Parsing.h"
 #include "structs.h"
+#include "SquidConfig.h"
 
 #if HAVE_ERRNO_H
 #include <errno.h>

=== modified file 'src/log/access_log.cc'
--- src/log/access_log.cc	2012-09-01 14:38:36 +0000
+++ src/log/access_log.cc	2012-09-06 13:29:14 +0000
@@ -32,10 +32,10 @@
 
 #include "squid.h"
 #include "AccessLogEntry.h"
-#include "Store.h"
-#include "errorpage.h"
+#include "acl/Checklist.h"
+#include "CachePeer.h"
 #include "err_detail_type.h"
-#include "acl/Checklist.h"
+#include "errorpage.h"
 #include "errorpage.h"
 #include "format/Token.h"
 #include "globals.h"
@@ -44,12 +44,15 @@
 #include "HttpRequest.h"
 #include "log/access_log.h"
 #include "log/Config.h"
+#include "log/CustomLog.h"
 #include "log/File.h"
 #include "log/Formats.h"
 #include "MemBuf.h"
 #include "mgr/Registration.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
+#include "Store.h"
 
 #if USE_SQUID_EUI
 #include "eui/Eui48.h"
@@ -88,7 +91,7 @@
 int LogfileStatus = LOG_DISABLE;
 
 void
-accessLogLogTo(customlog* log, AccessLogEntry::Pointer &al, ACLChecklist * checklist)
+accessLogLogTo(CustomLog* log, AccessLogEntry::Pointer &al, ACLChecklist * checklist)
 {
 
     if (al->url == NULL)
@@ -201,7 +204,7 @@
 void
 accessLogRotate(void)
 {
-    customlog *log;
+    CustomLog *log;
 #if USE_FORW_VIA_DB
 
     fvdbClear();
@@ -223,7 +226,7 @@
 void
 accessLogClose(void)
 {
-    customlog *log;
+    CustomLog *log;
 
     for (log = Config.Log.accesslogs; log; log = log->next) {
         if (log->logfile) {
@@ -298,7 +301,7 @@
 void
 accessLogInit(void)
 {
-    customlog *log;
+    CustomLog *log;
 
     accessLogRegisterWithCacheManager();
 

=== modified file 'src/main.cc'
--- src/main.cc	2012-09-01 10:40:00 +0000
+++ src/main.cc	2012-09-04 09:10:20 +0000
@@ -83,6 +83,7 @@
 #include "send-announce.h"
 #include "store_log.h"
 #include "tools.h"
+#include "SquidConfig.h"
 #include "SquidDns.h"
 #include "SquidTime.h"
 #include "stat.h"

=== modified file 'src/mem.cc'
--- src/mem.cc	2012-09-01 14:38:36 +0000
+++ src/mem.cc	2012-09-06 14:48:49 +0000
@@ -31,13 +31,18 @@
  */
 
 #include "squid.h"
+#include "acl/AclDenyInfoList.h"
+#include "acl/AclNameList.h"
+#include "CacheDigest.h"
+#include "ClientInfo.h"
 #include "event.h"
-#include "ClientInfo.h"
+#include "md5.h"
 #include "Mem.h"
-#include "md5.h"
 #include "MemBuf.h"
 #include "memMeter.h"
 #include "mgr/Registration.h"
+#include "RegexList.h"
+#include "SquidConfig.h"
 #include "SquidList.h"
 #include "SquidTime.h"
 #include "Store.h"
@@ -448,9 +453,9 @@
     memDataInit(MEM_16K_BUF, "16K Buffer", 16384, 10, false);
     memDataInit(MEM_32K_BUF, "32K Buffer", 32768, 10, false);
     memDataInit(MEM_64K_BUF, "64K Buffer", 65536, 10, false);
-    memDataInit(MEM_ACL_DENY_INFO_LIST, "acl_deny_info_list",
-                sizeof(acl_deny_info_list), 0);
-    memDataInit(MEM_ACL_NAME_LIST, "acl_name_list", sizeof(acl_name_list), 0);
+    memDataInit(MEM_ACL_DENY_INFO_LIST, "AclDenyInfoList",
+                sizeof(AclDenyInfoList), 0);
+    memDataInit(MEM_ACL_NAME_LIST, "acl_name_list", sizeof(AclNameList), 0);
 #if USE_CACHE_DIGESTS
 
     memDataInit(MEM_CACHE_DIGEST, "CacheDigest", sizeof(CacheDigest), 0);
@@ -463,7 +468,7 @@
     memDataInit(MEM_HTTP_HDR_CONTENT_RANGE, "HttpHdrContRange", sizeof(HttpHdrContRange), 0);
     memDataInit(MEM_NETDBENTRY, "netdbEntry", sizeof(netdbEntry), 0);
     memDataInit(MEM_NET_DB_NAME, "net_db_name", sizeof(net_db_name), 0);
-    memDataInit(MEM_RELIST, "relist", sizeof(relist), 0);
+    memDataInit(MEM_RELIST, "RegexList", sizeof(RegexList), 0);
     memDataInit(MEM_CLIENT_INFO, "ClientInfo", sizeof(ClientInfo), 0);
     memDataInit(MEM_MD5_DIGEST, "MD5 digest", SQUID_MD5_DIGEST_LENGTH, 0);
     MemPools[MEM_MD5_DIGEST]->setChunkSize(512 * 1024);

=== modified file 'src/mgr/ActionParams.h'
--- src/mgr/ActionParams.h	2012-09-01 14:38:36 +0000
+++ src/mgr/ActionParams.h	2012-09-10 12:49:35 +0000
@@ -9,6 +9,7 @@
 #include "HttpRequestMethod.h"
 #include "ipc/forward.h"
 #include "mgr/QueryParams.h"
+#include "RequestFlags.h"
 
 namespace Mgr
 {
@@ -26,7 +27,7 @@
     /* details of the client HTTP request that caused the action */
     String httpUri; ///< HTTP request URI
     _method_t httpMethod; ///< HTTP request method
-    request_flags httpFlags; ///< HTTP request flags
+    RequestFlags httpFlags; ///< HTTP request flags
     String httpOrigin;       ///< HTTP Origin: header (if any)
 
     /* action parameters extracted from the client HTTP request */

=== modified file 'src/mgr/BasicActions.cc'
--- src/mgr/BasicActions.cc	2012-09-01 14:38:36 +0000
+++ src/mgr/BasicActions.cc	2012-09-04 09:10:20 +0000
@@ -12,6 +12,7 @@
 #include "mgr/Registration.h"
 #include "protos.h"
 #include "Store.h"
+#include "SquidConfig.h"
 
 Mgr::IndexAction::Pointer
 Mgr::IndexAction::Create(const Command::Pointer &cmd)

=== modified file 'src/mgr/IoAction.cc'
--- src/mgr/IoAction.cc	2012-09-01 14:38:36 +0000
+++ src/mgr/IoAction.cc	2012-09-01 20:23:30 +0000
@@ -24,13 +24,13 @@
 Mgr::IoActionData::operator += (const IoActionData& stats)
 {
     http_reads += stats.http_reads;
-    for (int i = 0; i < _iostats::histSize; ++i)
+    for (int i = 0; i < iostats::histSize; ++i)
         http_read_hist[i] += stats.http_read_hist[i];
     ftp_reads += stats.ftp_reads;
-    for (int i = 0; i < _iostats::histSize; ++i)
+    for (int i = 0; i < iostats::histSize; ++i)
         ftp_read_hist[i] += stats.ftp_read_hist[i];
     gopher_reads += stats.gopher_reads;
-    for (int i = 0; i < _iostats::histSize; ++i)
+    for (int i = 0; i < iostats::histSize; ++i)
         gopher_read_hist[i] += stats.gopher_read_hist[i];
 
     return *this;

=== modified file 'src/mgr/IoAction.h'
--- src/mgr/IoAction.h	2012-09-01 14:38:36 +0000
+++ src/mgr/IoAction.h	2012-09-01 20:23:30 +0000
@@ -7,7 +7,7 @@
 #define SQUID_MGR_IO_ACTION_H
 
 #include "mgr/Action.h"
-#include "structs.h" /* _iostats::histSize */
+#include "structs.h" /* iostats::histSize */
 
 namespace Mgr
 {
@@ -23,9 +23,9 @@
     double http_reads;
     double ftp_reads;
     double gopher_reads;
-    double http_read_hist[_iostats::histSize];
-    double ftp_read_hist[_iostats::histSize];
-    double gopher_read_hist[_iostats::histSize];
+    double http_read_hist[iostats::histSize];
+    double ftp_read_hist[iostats::histSize];
+    double gopher_read_hist[iostats::histSize];
 };
 
 /// implement aggregated 'io' action

=== modified file 'src/mime.cc'
--- src/mime.cc	2012-09-01 14:38:36 +0000
+++ src/mime.cc	2012-09-13 16:20:41 +0000
@@ -43,6 +43,8 @@
 #include "MemBuf.h"
 #include "mime.h"
 #include "MemObject.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "StoreClient.h"
 
@@ -430,7 +432,7 @@
 
     int n;
 
-    request_flags flags;
+    RequestFlags flags;
 
     struct stat sb;
 
@@ -453,7 +455,7 @@
         return;
     }
 
-    flags.cachable = 1;
+    flags.setCachable();
     StoreEntry *e = storeCreateEntry(url,
                                      url,
                                      flags,

=== modified file 'src/mime.h'
--- src/mime.h	2012-08-29 12:56:25 +0000
+++ src/mime.h	2012-09-17 13:31:37 +0000
@@ -1,6 +1,6 @@
 /*
- * DEBUG: section 
- * AUTHOR: 
+ * DEBUG: section 25    MIME Parsing and Internal Icons
+ * AUTHOR: Harvest Derived
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------

=== modified file 'src/multicast.cc'
--- src/multicast.cc	2012-09-01 14:38:36 +0000
+++ src/multicast.cc	2012-09-17 13:31:37 +0000
@@ -1,4 +1,3 @@
-
 /*
  * DEBUG: section 07    Multicast
  * AUTHOR: Martin Hamilton

=== modified file 'src/multicast.h'
--- src/multicast.h	2012-08-29 14:08:06 +0000
+++ src/multicast.h	2012-09-17 13:31:37 +0000
@@ -1,6 +1,6 @@
 /*
- * DEBUG: section 
- * AUTHOR: 
+ * DEBUG: section 07    Multicast
+ * AUTHOR: Martin Hamilton
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------

=== modified file 'src/neighbors.cc'
--- src/neighbors.cc	2012-09-03 07:16:45 +0000
+++ src/neighbors.cc	2012-09-13 16:20:41 +0000
@@ -34,6 +34,7 @@
 #include "acl/FilledChecklist.h"
 #include "anyp/PortCfg.h"
 #include "CacheDigest.h"
+#include "CachePeer.h"
 #include "comm/Connection.h"
 #include "comm/ConnOpener.h"
 #include "event.h"
@@ -53,6 +54,8 @@
 #include "neighbors.h"
 #include "PeerDigest.h"
 #include "PeerSelectState.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "stat.h"
@@ -64,35 +67,35 @@
 /* count mcast group peers every 15 minutes */
 #define MCAST_COUNT_RATE 900
 
-bool peerAllowedToUse(const peer *, HttpRequest *);
-static int peerWouldBePinged(const peer *, HttpRequest *);
-static void neighborRemove(peer *);
-static void neighborAlive(peer *, const MemObject *, const icp_common_t *);
+bool peerAllowedToUse(const CachePeer *, HttpRequest *);
+static int peerWouldBePinged(const CachePeer *, HttpRequest *);
+static void neighborRemove(CachePeer *);
+static void neighborAlive(CachePeer *, const MemObject *, const icp_common_t *);
 #if USE_HTCP
-static void neighborAliveHtcp(peer *, const MemObject *, const htcpReplyData *);
+static void neighborAliveHtcp(CachePeer *, const MemObject *, const htcpReplyData *);
 #endif
-static void neighborCountIgnored(peer *);
+static void neighborCountIgnored(CachePeer *);
 static void peerRefreshDNS(void *);
 static IPH peerDNSConfigure;
-static bool peerProbeConnect(peer *);
+static bool peerProbeConnect(CachePeer *);
 static CNCB peerProbeConnectDone;
 static void peerCountMcastPeersDone(void *data);
 static void peerCountMcastPeersStart(void *data);
-static void peerCountMcastPeersSchedule(peer * p, time_t when);
+static void peerCountMcastPeersSchedule(CachePeer * p, time_t when);
 static IRCB peerCountHandleIcpReply;
 
 static void neighborIgnoreNonPeer(const Ip::Address &, icp_opcode);
 static OBJH neighborDumpPeers;
 static OBJH neighborDumpNonPeers;
-static void dump_peers(StoreEntry * sentry, peer * peers);
+static void dump_peers(StoreEntry * sentry, CachePeer * peers);
 
 static unsigned short echo_port;
 
 static int NLateReplies = 0;
-static peer *first_ping = NULL;
+static CachePeer *first_ping = NULL;
 
 const char *
-neighborTypeStr(const peer * p)
+neighborTypeStr(const CachePeer * p)
 {
     if (p->type == PEER_NONE)
         return "Non-Peer";
@@ -106,12 +109,12 @@
     return "Parent";
 }
 
-peer *
+CachePeer *
 whichPeer(const Ip::Address &from)
 {
     int j;
 
-    peer *p = NULL;
+    CachePeer *p = NULL;
     debugs(15, 3, "whichPeer: from " << from);
 
     for (p = Config.peers; p; p = p->next) {
@@ -126,10 +129,10 @@
 }
 
 peer_t
-neighborType(const peer * p, const HttpRequest * request)
+neighborType(const CachePeer * p, const HttpRequest * request)
 {
 
-    const struct _domain_type *d = NULL;
+    const domain_type *d = NULL;
 
     for (d = p->typelist; d; d = d->next) {
         if (0 == matchDomainName(request->GetHost(), d->domain))
@@ -149,33 +152,33 @@
  * \return Whether it is appropriate to fetch REQUEST from PEER.
  */
 bool
-peerAllowedToUse(const peer * p, HttpRequest * request)
+peerAllowedToUse(const CachePeer * p, HttpRequest * request)
 {
 
-    const struct _domain_ping *d = NULL;
+    const domain_ping *d = NULL;
     assert(request != NULL);
 
     if (neighborType(p, request) == PEER_SIBLING) {
 #if PEER_MULTICAST_SIBLINGS
         if (p->type == PEER_MULTICAST && p->options.mcast_siblings &&
-                (request->flags.nocache || request->flags.refresh || request->flags.loopdetect || request->flags.need_validation))
+                (request->flags.noCache() || request->flags.refresh() || request->flags.loopDetect() || request->flags.validationNeeded()))
             debugs(15, 2, "peerAllowedToUse(" << p->name << ", " << request->GetHost() << ") : multicast-siblings optimization match");
 #endif
-        if (request->flags.nocache)
-            return false;
-
-        if (request->flags.refresh)
-            return false;
-
-        if (request->flags.loopdetect)
-            return false;
-
-        if (request->flags.need_validation)
+        if (request->flags.noCache())
+            return false;
+
+        if (request->flags.refresh())
+            return false;
+
+        if (request->flags.loopDetect())
+            return false;
+
+        if (request->flags.validationNeeded())
             return false;
     }
 
     // CONNECT requests are proxy requests. Not to be forwarded to origin servers.
-    // Unless the destination port matches, in which case we MAY perform a 'DIRECT' to this peer.
+    // Unless the destination port matches, in which case we MAY perform a 'DIRECT' to this CachePeer.
     if (p->options.originserver && request->method == METHOD_CONNECT && request->port != p->in_addr.GetPort())
         return false;
 
@@ -205,9 +208,9 @@
     return (checklist.fastCheck() == ACCESS_ALLOWED);
 }
 
-/* Return TRUE if it is okay to send an ICP request to this peer.   */
+/* Return TRUE if it is okay to send an ICP request to this CachePeer.   */
 static int
-peerWouldBePinged(const peer * p, HttpRequest * request)
+peerWouldBePinged(const CachePeer * p, HttpRequest * request)
 {
     if (p->icp.port == 0)
         return 0;
@@ -227,7 +230,7 @@
     /* the case below seems strange, but can happen if the
      * URL host is on the other side of a firewall */
     if (p->type == PEER_SIBLING)
-        if (!request->flags.hierarchical)
+        if (!request->flags.hierarchical())
             return 0;
 
     if (!peerAllowedToUse(p, request))
@@ -243,9 +246,9 @@
     return 1;
 }
 
-/* Return TRUE if it is okay to send an HTTP request to this peer. */
+/* Return TRUE if it is okay to send an HTTP request to this CachePeer. */
 int
-peerHTTPOkay(const peer * p, HttpRequest * request)
+peerHTTPOkay(const CachePeer * p, HttpRequest * request)
 {
     if (p->max_conn)
         if (p->stats.conn_open >= p->max_conn)
@@ -263,7 +266,7 @@
 int
 neighborsCount(HttpRequest * request)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
     int count = 0;
 
     for (p = Config.peers; p; p = p->next)
@@ -275,10 +278,10 @@
     return count;
 }
 
-peer *
+CachePeer *
 getFirstUpParent(HttpRequest * request)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
 
     for (p = Config.peers; p; p = p->next) {
         if (!neighborUp(p))
@@ -297,11 +300,11 @@
     return p;
 }
 
-peer *
+CachePeer *
 getRoundRobinParent(HttpRequest * request)
 {
-    peer *p;
-    peer *q = NULL;
+    CachePeer *p;
+    CachePeer *q = NULL;
 
     for (p = Config.peers; p; p = p->next) {
         if (!p->options.roundrobin)
@@ -336,11 +339,11 @@
     return q;
 }
 
-peer *
+CachePeer *
 getWeightedRoundRobinParent(HttpRequest * request)
 {
-    peer *p;
-    peer *q = NULL;
+    CachePeer *p;
+    CachePeer *q = NULL;
     int weighted_rtt;
 
     for (p = Config.peers; p; p = p->next) {
@@ -403,7 +406,7 @@
 }
 
 /**
- * This gets called on startup and restart to kick off the peer round-robin
+ * This gets called on startup and restart to kick off the CachePeer round-robin
  * maintenance event. It ensures that no matter how many times its called
  * no more than one event is scheduled.
  */
@@ -421,23 +424,23 @@
  * Called whenever the round-robin counters need to be reset to a sane state.
  * So far those times are:
  *  - On startup and reconfigure - to set the counters to sane initial settings.
- *  -  When a peer has revived from dead, to prevent the revived peer being
+ *  -  When a CachePeer has revived from dead, to prevent the revived CachePeer being
  *     flooded with requests which it has 'missed' during the down period.
  */
 void
 peerClearRR()
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
     for (p = Config.peers; p; p = p->next) {
         p->rr_count = 0;
     }
 }
 
 /**
- * Perform all actions when a peer is detected revived.
+ * Perform all actions when a CachePeer is detected revived.
  */
 void
-peerAlive(peer *p)
+peerAlive(CachePeer *p)
 {
     if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
         debugs(15, DBG_IMPORTANT, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
@@ -449,10 +452,10 @@
     p->stats.probe_start = 0;
 }
 
-peer *
+CachePeer *
 getDefaultParent(HttpRequest * request)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
 
     for (p = Config.peers; p; p = p->next) {
         if (neighborType(p, request) != PEER_PARENT)
@@ -473,23 +476,23 @@
     return NULL;
 }
 
-peer *
-getNextPeer(peer * p)
+CachePeer *
+getNextPeer(CachePeer * p)
 {
     return p->next;
 }
 
-peer *
+CachePeer *
 getFirstPeer(void)
 {
     return Config.peers;
 }
 
 static void
-neighborRemove(peer * target)
+neighborRemove(CachePeer * target)
 {
-    peer *p = NULL;
-    peer **P = NULL;
+    CachePeer *p = NULL;
+    CachePeer **P = NULL;
     p = Config.peers;
     P = &Config.peers;
 
@@ -530,8 +533,8 @@
 {
     struct servent *sep = NULL;
     const char *me = getMyHostname();
-    peer *thisPeer = NULL;
-    peer *next = NULL;
+    CachePeer *thisPeer = NULL;
+    CachePeer *next = NULL;
 
     neighborsRegisterWithCacheManager();
 
@@ -577,7 +580,7 @@
 {
     const char *url = entry->url();
     MemObject *mem = entry->mem_obj;
-    peer *p = NULL;
+    CachePeer *p = NULL;
     int i;
     int reqnum = 0;
     int flags;
@@ -608,7 +611,7 @@
         debugs(15, 5, "neighborsUdpPing: Peer " << p->host);
 
         if (!peerWouldBePinged(p, request))
-            continue;		/* next peer */
+            continue;		/* next CachePeer */
 
         ++peers_pinged;
 
@@ -687,8 +690,8 @@
         p->stats.last_query = squid_curtime;
 
         /*
-         * keep probe_start == 0 for a multicast peer,
-         * so neighborUp() never says this peer is dead.
+         * keep probe_start == 0 for a multicast CachePeer,
+         * so neighborUp() never says this CachePeer is dead.
          */
 
         if ((p->type != PEER_MULTICAST) && (p->stats.probe_start == 0))
@@ -730,9 +733,9 @@
     return peers_pinged;
 }
 
-/* lookup the digest of a given peer */
+/* lookup the digest of a given CachePeer */
 lookup_t
-peerDigestLookup(peer * p, HttpRequest * request)
+peerDigestLookup(CachePeer * p, HttpRequest * request)
 {
 #if USE_CACHE_DIGESTS
     const cache_key *key = request ? storeKeyPublicByRequest(request) : NULL;
@@ -772,21 +775,21 @@
     return LOOKUP_NONE;
 }
 
-/* select best peer based on cache digests */
-peer *
+/* select best CachePeer based on cache digests */
+CachePeer *
 neighborsDigestSelect(HttpRequest * request)
 {
-    peer *best_p = NULL;
+    CachePeer *best_p = NULL;
 #if USE_CACHE_DIGESTS
 
     int best_rtt = 0;
     int choice_count = 0;
     int ichoice_count = 0;
-    peer *p;
+    CachePeer *p;
     int p_rtt;
     int i;
 
-    if (!request->flags.hierarchical)
+    if (!request->flags.hierarchical())
         return NULL;
 
     storeKeyPublicByRequest(request);
@@ -814,7 +817,7 @@
 
         debugs(15, 5, "neighborsDigestSelect: peer " << p->host << " rtt: " << p_rtt);
 
-        /* is this peer better than others in terms of rtt ? */
+        /* is this CachePeer better than others in terms of rtt ? */
         if (!best_p || (p_rtt && p_rtt < best_rtt)) {
             best_p = p;
             best_rtt = p_rtt;
@@ -837,7 +840,7 @@
 }
 
 void
-peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup)
+peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup)
 {
 #if USE_CACHE_DIGESTS
     if (p)
@@ -851,7 +854,7 @@
 }
 
 static void
-neighborAlive(peer * p, const MemObject * mem, const icp_common_t * header)
+neighborAlive(CachePeer * p, const MemObject * mem, const icp_common_t * header)
 {
     peerAlive(p);
     ++ p->stats.pings_acked;
@@ -863,7 +866,7 @@
 }
 
 static void
-neighborUpdateRtt(peer * p, MemObject * mem)
+neighborUpdateRtt(CachePeer * p, MemObject * mem)
 {
     int rtt, rtt_av_factor;
 
@@ -888,7 +891,7 @@
 
 #if USE_HTCP
 static void
-neighborAliveHtcp(peer * p, const MemObject * mem, const htcpReplyData * htcp)
+neighborAliveHtcp(CachePeer * p, const MemObject * mem, const htcpReplyData * htcp)
 {
     peerAlive(p);
     ++ p->stats.pings_acked;
@@ -899,7 +902,7 @@
 #endif
 
 static void
-neighborCountIgnored(peer * p)
+neighborCountIgnored(CachePeer * p)
 {
     if (p == NULL)
         return;
@@ -909,12 +912,12 @@
     ++NLateReplies;
 }
 
-static peer *non_peers = NULL;
+static CachePeer *non_peers = NULL;
 
 static void
 neighborIgnoreNonPeer(const Ip::Address &from, icp_opcode opcode)
 {
-    peer *np;
+    CachePeer *np;
 
     for (np = non_peers; np; np = np->next) {
         if (np->in_addr != from)
@@ -927,7 +930,7 @@
     }
 
     if (np == NULL) {
-        np = (peer *)xcalloc(1, sizeof(peer));
+        np = (CachePeer *)xcalloc(1, sizeof(CachePeer));
         np->in_addr = from;
         np->icp.port = from.GetPort();
         np->type = PEER_NONE;
@@ -946,11 +949,11 @@
 /* ignoreMulticastReply
  *
  * * We want to ignore replies from multicast peers if the
- * * cache_host_domain rules would normally prevent the peer
+ * * cache_host_domain rules would normally prevent the CachePeer
  * * from being used
  */
 static int
-ignoreMulticastReply(peer * p, MemObject * mem)
+ignoreMulticastReply(CachePeer * p, MemObject * mem)
 {
     if (p == NULL)
         return 0;
@@ -974,7 +977,7 @@
 void
 neighborsUdpAck(const cache_key * key, icp_common_t * header, const Ip::Address &from)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
     StoreEntry *entry;
     MemObject *mem = NULL;
     peer_t ntype = PEER_NONE;
@@ -1086,10 +1089,10 @@
     }
 }
 
-peer *
+CachePeer *
 peerFindByName(const char *name)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
 
     for (p = Config.peers; p; p = p->next) {
         if (!strcasecmp(name, p->name))
@@ -1099,10 +1102,10 @@
     return p;
 }
 
-peer *
+CachePeer *
 peerFindByNameAndPort(const char *name, unsigned short port)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
 
     for (p = Config.peers; p; p = p->next) {
         if (strcasecmp(name, p->name))
@@ -1118,17 +1121,17 @@
 }
 
 int
-neighborUp(const peer * p)
+neighborUp(const CachePeer * p)
 {
     if (!p->tcp_up) {
-        if (!peerProbeConnect((peer *) p)) {
+        if (!peerProbeConnect((CachePeer *) p)) {
             debugs(15, 8, "neighborUp: DOWN (probed): " << p->host << " (" << p->in_addr << ")");
             return 0;
         }
     }
 
     /*
-     * The peer can not be UP if we don't have any IP addresses
+     * The CachePeer can not be UP if we don't have any IP addresses
      * for it.
      */
     if (0 == p->n_addresses) {
@@ -1154,14 +1157,14 @@
 void
 peerDestroy(void *data)
 {
-    peer *p = (peer *)data;
+    CachePeer *p = (CachePeer *)data;
 
     if (p == NULL)
         return;
 
-    struct _domain_ping *nl = NULL;
+    domain_ping *nl = NULL;
 
-    for (struct _domain_ping *l = p->peer_domain; l; l = nl) {
+    for (domain_ping *l = p->peer_domain; l; l = nl) {
         nl = l->next;
         safe_free(l->domain);
         xfree(l);
@@ -1177,7 +1180,7 @@
 }
 
 void
-peerNoteDigestGone(peer * p)
+peerNoteDigestGone(CachePeer * p)
 {
 #if USE_CACHE_DIGESTS
     cbdataReferenceDone(p->digest);
@@ -1187,7 +1190,7 @@
 static void
 peerDNSConfigure(const ipcache_addrs *ia, const DnsLookupDetails &, void *data)
 {
-    peer *p = (peer *)data;
+    CachePeer *p = (CachePeer *)data;
 
     int j;
 
@@ -1236,7 +1239,7 @@
 static void
 peerRefreshDNS(void *data)
 {
-    peer *p = NULL;
+    CachePeer *p = NULL;
 
     if (eventFind(peerRefreshDNS, NULL))
         eventDelete(peerRefreshDNS, NULL);
@@ -1255,7 +1258,7 @@
 }
 
 static void
-peerConnectFailedSilent(peer * p)
+peerConnectFailedSilent(CachePeer * p)
 {
     p->stats.last_connect_failure = squid_curtime;
 
@@ -1274,14 +1277,14 @@
 }
 
 void
-peerConnectFailed(peer *p)
+peerConnectFailed(CachePeer *p)
 {
     debugs(15, DBG_IMPORTANT, "TCP connection to " << p->host << "/" << p->http_port << " failed");
     peerConnectFailedSilent(p);
 }
 
 void
-peerConnectSucceded(peer * p)
+peerConnectSucceded(CachePeer * p)
 {
     if (!p->tcp_up) {
         debugs(15, 2, "TCP connection to " << p->host << "/" << p->http_port << " succeded");
@@ -1297,7 +1300,7 @@
 * peerProbeConnect will be called on dead peers by neighborUp
 */
 static bool
-peerProbeConnect(peer * p)
+peerProbeConnect(CachePeer * p)
 {
     time_t ctimeout = p->connect_timeout > 0 ? p->connect_timeout : Config.Timeout.peer_connect;
     bool ret = (squid_curtime - p->stats.last_connect_failure) > (ctimeout * 10);
@@ -1308,7 +1311,7 @@
     if (squid_curtime - p->stats.last_connect_probe == 0)
         return ret;/* don't probe to often */
 
-    /* for each IP address of this peer. find one that we can connect to and probe it. */
+    /* for each IP address of this CachePeer. find one that we can connect to and probe it. */
     for (int i = 0; i < p->n_addresses; ++i) {
         Comm::ConnectionPointer conn = new Comm::Connection;
         conn->remote = p->addresses[i];
@@ -1331,7 +1334,7 @@
 static void
 peerProbeConnectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data)
 {
-    peer *p = (peer*)data;
+    CachePeer *p = (CachePeer*)data;
 
     if (status == COMM_OK) {
         peerConnectSucceded(p);
@@ -1345,7 +1348,7 @@
 }
 
 static void
-peerCountMcastPeersSchedule(peer * p, time_t when)
+peerCountMcastPeersSchedule(CachePeer * p, time_t when)
 {
     if (p->mcast.flags.count_event_pending)
         return;
@@ -1361,7 +1364,7 @@
 static void
 peerCountMcastPeersStart(void *data)
 {
-    peer *p = (peer *)data;
+    CachePeer *p = (CachePeer *)data;
     ps_state *psstate;
     StoreEntry *fake;
     MemObject *mem;
@@ -1373,7 +1376,7 @@
     snprintf(url, MAX_URL, "http://");
     p->in_addr.ToURL(url+7, MAX_URL -8 );
     strcat(url, "/");
-    fake = storeCreateEntry(url, url, request_flags(), METHOD_GET);
+    fake = storeCreateEntry(url, url, RequestFlags(), METHOD_GET);
     HttpRequest *req = HttpRequest::CreateFromUrl(url);
     psstate = new ps_state;
     psstate->request = HTTPMSGLOCK(req);
@@ -1407,7 +1410,7 @@
     StoreEntry *fake = psstate->entry;
 
     if (cbdataReferenceValid(psstate->callback_data)) {
-        peer *p = (peer *)psstate->callback_data;
+        CachePeer *p = (CachePeer *)psstate->callback_data;
         p->mcast.flags.counting = 0;
         p->mcast.avg_n_members = Math::doubleAverage(p->mcast.avg_n_members, (double) psstate->ping.n_recv, ++p->mcast.n_times_counted, 10);
         debugs(15, DBG_IMPORTANT, "Group " << p->host  << ": " << psstate->ping.n_recv  <<
@@ -1426,7 +1429,7 @@
 }
 
 static void
-peerCountHandleIcpReply(peer * p, peer_t type, AnyP::ProtocolType proto, void *hdrnotused, void *data)
+peerCountHandleIcpReply(CachePeer * p, peer_t type, AnyP::ProtocolType proto, void *hdrnotused, void *data)
 {
     int rtt_av_factor;
 
@@ -1459,7 +1462,7 @@
 }
 
 void
-dump_peer_options(StoreEntry * sentry, peer * p)
+dump_peer_options(StoreEntry * sentry, CachePeer * p)
 {
     if (p->options.proxy_only)
         storeAppendPrintf(sentry, " proxy-only");
@@ -1577,11 +1580,11 @@
 }
 
 static void
-dump_peers(StoreEntry * sentry, peer * peers)
+dump_peers(StoreEntry * sentry, CachePeer * peers)
 {
-    peer *e = NULL;
+    CachePeer *e = NULL;
     char ntoabuf[MAX_IPSTRLEN];
-    struct _domain_ping *d = NULL;
+    domain_ping *d = NULL;
     icp_opcode op;
     int i;
 
@@ -1688,7 +1691,7 @@
 {
     StoreEntry *e = Store::Root().get(key);
     MemObject *mem = NULL;
-    peer *p;
+    CachePeer *p;
     peer_t ntype = PEER_NONE;
     debugs(15, 6, "neighborsHtcpReply: " <<
            (htcp->hit ? "HIT" : "MISS") << " " <<
@@ -1753,7 +1756,7 @@
 void
 neighborsHtcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, htcp_clr_reason reason)
 {
-    peer *p;
+    CachePeer *p;
     char buf[128];
 
     for (p = Config.peers; p; p = p->next) {

=== modified file 'src/neighbors.h'
--- src/neighbors.h	2012-08-29 00:12:28 +0000
+++ src/neighbors.h	2012-09-04 14:38:44 +0000
@@ -34,54 +34,53 @@
 #define SQUID_NEIGHBORS_H_
 
 #include "enums.h"
-#include "HttpRequestMethod.h"
+#include "ICP.h"
 #include "lookup_t.h"
-#include "ip/Address.h"
-#include "typedefs.h"
 
 class HttpRequest;
-class peer;
+class HttpRequestMethod;
+class CachePeer;
 class StoreEntry;
 
-SQUIDCEXTERN peer *getFirstPeer(void);
-SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *);
-SQUIDCEXTERN peer *getNextPeer(peer *);
-SQUIDCEXTERN peer *getSingleParent(HttpRequest *);
-SQUIDCEXTERN int neighborsCount(HttpRequest *);
-SQUIDCEXTERN int neighborsUdpPing(HttpRequest *,
+extern CachePeer *getFirstPeer(void);
+extern CachePeer *getFirstUpParent(HttpRequest *);
+extern CachePeer *getNextPeer(CachePeer *);
+extern CachePeer *getSingleParent(HttpRequest *);
+extern int neighborsCount(HttpRequest *);
+extern int neighborsUdpPing(HttpRequest *,
                                   StoreEntry *,
                                   IRCB * callback,
                                   void *data,
                                   int *exprep,
                                   int *timeout);
-SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
+extern void neighborAddAcl(const char *, const char *);
 
-SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
-SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
-SQUIDCEXTERN void neighbors_init(void);
+extern void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
+extern void neighborAdd(const char *, const char *, int, int, int, int, int);
+extern void neighbors_init(void);
 #if USE_HTCP
-SQUIDCEXTERN void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
+extern void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
 #endif
-SQUIDCEXTERN peer *peerFindByName(const char *);
-SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
-SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
-SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
-SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
-SQUIDCEXTERN void peerClearRRStart(void);
-SQUIDCEXTERN void peerClearRR(void);
-SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
-SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
-SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);
-SQUIDCEXTERN void peerNoteDigestGone(peer * p);
-SQUIDCEXTERN int neighborUp(const peer * e);
-SQUIDCEXTERN CBDUNL peerDestroy;
-SQUIDCEXTERN const char *neighborTypeStr(const peer * e);
-SQUIDCEXTERN peer_t neighborType(const peer *, const HttpRequest *);
-SQUIDCEXTERN void peerConnectFailed(peer *);
-SQUIDCEXTERN void peerConnectSucceded(peer *);
-SQUIDCEXTERN void dump_peer_options(StoreEntry *, peer *);
-SQUIDCEXTERN int peerHTTPOkay(const peer *, HttpRequest *);
+extern CachePeer *peerFindByName(const char *);
+extern CachePeer *peerFindByNameAndPort(const char *, unsigned short);
+extern CachePeer *getDefaultParent(HttpRequest * request);
+extern CachePeer *getRoundRobinParent(HttpRequest * request);
+extern CachePeer *getWeightedRoundRobinParent(HttpRequest * request);
+extern void peerClearRRStart(void);
+extern void peerClearRR(void);
+extern lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request);
+extern CachePeer *neighborsDigestSelect(HttpRequest * request);
+extern void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup);
+extern void peerNoteDigestGone(CachePeer * p);
+extern int neighborUp(const CachePeer * e);
+extern CBDUNL peerDestroy;
+extern const char *neighborTypeStr(const CachePeer * e);
+extern peer_t neighborType(const CachePeer *, const HttpRequest *);
+extern void peerConnectFailed(CachePeer *);
+extern void peerConnectSucceded(CachePeer *);
+extern void dump_peer_options(StoreEntry *, CachePeer *);
+extern int peerHTTPOkay(const CachePeer *, HttpRequest *);
 
-SQUIDCEXTERN peer *whichPeer(const Ip::Address &from);
+extern CachePeer *whichPeer(const Ip::Address &from);
 
 #endif /* SQUID_NEIGHBORS_H_ */

=== modified file 'src/pconn.cc'
--- src/pconn.cc	2012-09-01 14:38:36 +0000
+++ src/pconn.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "globals.h"
 #include "mgr/Registration.h"
 #include "pconn.h"
+#include "SquidConfig.h"
 #include "Store.h"
 
 #define PCONN_FDS_SZ	8	/* pconn set size, increase for better memcache hit rate */

=== modified file 'src/peer_digest.cc'
--- src/peer_digest.cc	2012-09-01 14:38:36 +0000
+++ src/peer_digest.cc	2012-09-13 16:20:41 +0000
@@ -34,6 +34,7 @@
 #include "squid.h"
 #if USE_CACHE_DIGESTS
 #include "CacheDigest.h"
+#include "CachePeer.h"
 #include "event.h"
 #include "forward.h"
 #include "globals.h"
@@ -90,7 +91,7 @@
 
 /* initialize peer digest */
 static void
-peerDigestInit(PeerDigest * pd, peer * p)
+peerDigestInit(PeerDigest * pd, CachePeer * p)
 {
     assert(pd && p);
 
@@ -137,7 +138,7 @@
 
 /* allocate new peer digest, call Init, and lock everything */
 PeerDigest *
-peerDigestCreate(peer * p)
+peerDigestCreate(CachePeer * p)
 {
     PeerDigest *pd;
     assert(p);
@@ -164,7 +165,7 @@
      * tell it that the digest is gone.
      */
     if (cbdataReferenceValidDone(peerTmp, &p))
-        peerNoteDigestGone((peer *)p);
+        peerNoteDigestGone((CachePeer *)p);
 
     peerDigestClean(pd);
 
@@ -312,7 +313,7 @@
 static void
 peerDigestRequest(PeerDigest * pd)
 {
-    peer *p = pd->peer;
+    CachePeer *p = pd->peer;
     StoreEntry *e, *old_e;
     char *url;
     const cache_key *key;
@@ -369,10 +370,10 @@
 
     pd_last_req_time = squid_curtime;
 
-    req->flags.cachable = 1;
+    req->flags.setCachable();
 
     /* the rest is based on clientProcessExpired() */
-    req->flags.refresh = 1;
+    req->flags.setRefresh();
 
     old_e = fetch->old_entry = Store::Root().get(key);
 

=== modified file 'src/peer_select.cc'
--- src/peer_select.cc	2012-09-01 14:38:36 +0000
+++ src/peer_select.cc	2012-09-13 16:20:41 +0000
@@ -32,6 +32,7 @@
 
 #include "squid.h"
 #include "acl/FilledChecklist.h"
+#include "CachePeer.h"
 #include "carp.h"
 #include "client_side.h"
 #include "DnsLookupDetails.h"
@@ -50,6 +51,7 @@
 #include "peer_sourcehash.h"
 #include "peer_userhash.h"
 #include "PeerSelectState.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 
@@ -68,10 +70,10 @@
 static void peerPingTimeout(void *data);
 static IRCB peerHandlePingReply;
 static void peerSelectStateFree(ps_state * psstate);
-static void peerIcpParentMiss(peer *, icp_common_t *, ps_state *);
+static void peerIcpParentMiss(CachePeer *, icp_common_t *, ps_state *);
 #if USE_HTCP
-static void peerHtcpParentMiss(peer *, htcpReplyData *, ps_state *);
-static void peerHandleHtcpReply(peer *, peer_t, htcpReplyData *, void *);
+static void peerHtcpParentMiss(CachePeer *, htcpReplyData *, ps_state *);
+static void peerHandleHtcpReply(CachePeer *, peer_t, htcpReplyData *, void *);
 #endif
 static int peerCheckNetdbDirect(ps_state * psstate);
 static void peerGetSomeNeighbor(ps_state *);
@@ -79,7 +81,7 @@
 static void peerGetSomeDirect(ps_state *);
 static void peerGetSomeParent(ps_state *);
 static void peerGetAllParents(ps_state *);
-static void peerAddFwdServer(FwdServer **, peer *, hier_code);
+static void peerAddFwdServer(FwdServer **, CachePeer *, hier_code);
 static void peerSelectPinned(ps_state * ps);
 static void peerSelectDnsResults(const ipcache_addrs *ia, const DnsLookupDetails &details, void *data);
 
@@ -124,7 +126,7 @@
     assert(direct != DIRECT_YES);
     debugs(44, 3, "peerSelectIcpPing: " << entry->url()  );
 
-    if (!request->flags.hierarchical && direct != DIRECT_NO)
+    if (!request->flags.hierarchical() && direct != DIRECT_NO)
         return 0;
 
     if (EBIT_TEST(entry->flags, KEY_PRIVATE) && !neighbors_do_private_keys)
@@ -231,9 +233,9 @@
     // To resolve this we must use only the original client destination when going DIRECT
     // on intercepted traffic which failed Host verification
     const HttpRequest *req = psstate->request;
-    const bool isIntercepted = !req->flags.redirected &&
-                               (req->flags.intercepted || req->flags.spoof_client_ip);
-    const bool useOriginalDst = Config.onoff.client_dst_passthru || !req->flags.hostVerified;
+    const bool isIntercepted = !req->flags.isRedirected() &&
+                               (req->flags.intercepted() || req->flags.spoofClientIp());
+    const bool useOriginalDst = Config.onoff.client_dst_passthru || !req->flags.hostVerified();
     const bool choseDirect = fs && fs->code == HIER_DIRECT;
     if (isIntercepted && useOriginalDst && choseDirect) {
         // construct a "result" adding the ORIGINAL_DST to the set instead of DIRECT
@@ -337,7 +339,7 @@
                 break;
 
             // for TPROXY we must skip unusable addresses.
-            if (psstate->request->flags.spoof_client_ip && !(fs->_peer && fs->_peer->options.no_tproxy) ) {
+            if (psstate->request->flags.spoofClientIp() && !(fs->_peer && fs->_peer->options.no_tproxy) ) {
                 if (ia->in_addrs[n].IsIPv4() != psstate->request->client_addr.IsIPv4()) {
                     // we CAN'T spoof the address on this link. find another.
                     continue;
@@ -380,7 +382,7 @@
 peerCheckNetdbDirect(ps_state * psstate)
 {
 #if USE_ICMP
-    peer *p;
+    CachePeer *p;
     int myrtt;
     int myhops;
 
@@ -427,26 +429,26 @@
     HttpRequest *request = ps->request;
     debugs(44, 3, "peerSelectFoo: '" << RequestMethodStr(request->method) << " " << request->GetHost() << "'");
 
-    /** If we don't know whether DIRECT is permitted ... */
+    /* If we don't know whether DIRECT is permitted ... */
     if (ps->direct == DIRECT_UNKNOWN) {
         if (ps->always_direct == ACCESS_DUNNO) {
             debugs(44, 3, "peerSelectFoo: direct = " << DirectStr[ps->direct] << " (always_direct to be checked)");
-            /** check always_direct; */
+            /* check always_direct; */
             ps->acl_checklist = new ACLFilledChecklist(Config.accessList.AlwaysDirect, request, NULL);
             ps->acl_checklist->nonBlockingCheck(peerCheckAlwaysDirectDone, ps);
             return;
         } else if (ps->never_direct == ACCESS_DUNNO) {
             debugs(44, 3, "peerSelectFoo: direct = " << DirectStr[ps->direct] << " (never_direct to be checked)");
-            /** check never_direct; */
+            /* check never_direct; */
             ps->acl_checklist = new ACLFilledChecklist(Config.accessList.NeverDirect, request, NULL);
             ps->acl_checklist->nonBlockingCheck(peerCheckNeverDirectDone, ps);
             return;
-        } else if (request->flags.no_direct) {
-            /** if we are accelerating, direct is not an option. */
+        } else if (request->flags.noDirect()) {
+            /* if we are accelerating, direct is not an option. */
             ps->direct = DIRECT_NO;
             debugs(44, 3, "peerSelectFoo: direct = " << DirectStr[ps->direct] << " (forced non-direct)");
-        } else if (request->flags.loopdetect) {
-            /** if we are in a forwarding-loop, direct is not an option. */
+        } else if (request->flags.loopDetect()) {
+            /* if we are in a forwarding-loop, direct is not an option. */
             ps->direct = DIRECT_YES;
             debugs(44, 3, "peerSelectFoo: direct = " << DirectStr[ps->direct] << " (forwarding loop detected)");
         } else if (peerCheckNetdbDirect(ps)) {
@@ -490,7 +492,7 @@
         if (Config.onoff.prefer_direct)
             peerGetSomeDirect(ps);
 
-        if (request->flags.hierarchical || !Config.onoff.nonhierarchical_direct) {
+        if (request->flags.hierarchical() || !Config.onoff.nonhierarchical_direct) {
             peerGetSomeParent(ps);
             peerGetAllParents(ps);
         }
@@ -505,7 +507,7 @@
     peerSelectDnsPaths(ps);
 }
 
-bool peerAllowedToUse(const peer * p, HttpRequest * request);
+bool peerAllowedToUse(const CachePeer * p, HttpRequest * request);
 
 /**
  * peerSelectPinned
@@ -518,7 +520,7 @@
     HttpRequest *request = ps->request;
     if (!request->pinnedConnection())
         return;
-    peer *pear = request->pinnedConnection()->pinnedPeer();
+    CachePeer *pear = request->pinnedConnection()->pinnedPeer();
     if (Comm::IsConnOpen(request->pinnedConnection()->validatePinnedConnection(request, pear))) {
         if (pear && peerAllowedToUse(pear, request)) {
             peerAddFwdServer(&ps->servers, pear, PINNED);
@@ -547,7 +549,7 @@
 {
     StoreEntry *entry = ps->entry;
     HttpRequest *request = ps->request;
-    peer *p;
+    CachePeer *p;
     hier_code code = HIER_NONE;
     assert(entry->ping_status == PING_NONE);
 
@@ -611,7 +613,7 @@
 peerGetSomeNeighborReplies(ps_state * ps)
 {
     HttpRequest *request = ps->request;
-    peer *p = NULL;
+    CachePeer *p = NULL;
     hier_code code = HIER_NONE;
     assert(ps->entry->ping_status == PING_WAITING);
     assert(ps->direct != DIRECT_YES);
@@ -662,7 +664,7 @@
 static void
 peerGetSomeParent(ps_state * ps)
 {
-    peer *p;
+    CachePeer *p;
     HttpRequest *request = ps->request;
     hier_code code = HIER_NONE;
     debugs(44, 3, "peerGetSomeParent: " << RequestMethodStr(request->method) << " " << request->GetHost());
@@ -699,7 +701,7 @@
 static void
 peerGetAllParents(ps_state * ps)
 {
-    peer *p;
+    CachePeer *p;
     HttpRequest *request = ps->request;
     /* Add all alive parents */
 
@@ -759,7 +761,7 @@
 }
 
 static void
-peerIcpParentMiss(peer * p, icp_common_t * header, ps_state * ps)
+peerIcpParentMiss(CachePeer * p, icp_common_t * header, ps_state * ps)
 {
     int rtt;
 
@@ -800,7 +802,7 @@
 }
 
 static void
-peerHandleIcpReply(peer * p, peer_t type, icp_common_t * header, void *data)
+peerHandleIcpReply(CachePeer * p, peer_t type, icp_common_t * header, void *data)
 {
     ps_state *psstate = (ps_state *)data;
     icp_opcode op = header->getOpCode();
@@ -834,7 +836,7 @@
 
 #if USE_HTCP
 static void
-peerHandleHtcpReply(peer * p, peer_t type, htcpReplyData * htcp, void *data)
+peerHandleHtcpReply(CachePeer * p, peer_t type, htcpReplyData * htcp, void *data)
 {
     ps_state *psstate = (ps_state *)data;
     debugs(44, 3, "peerHandleHtcpReply: " <<
@@ -859,7 +861,7 @@
 }
 
 static void
-peerHtcpParentMiss(peer * p, htcpReplyData * htcp, ps_state * ps)
+peerHtcpParentMiss(CachePeer * p, htcpReplyData * htcp, ps_state * ps)
 {
     int rtt;
 
@@ -900,7 +902,7 @@
 #endif
 
 static void
-peerHandlePingReply(peer * p, peer_t type, AnyP::ProtocolType proto, void *pingdata, void *data)
+peerHandlePingReply(CachePeer * p, peer_t type, AnyP::ProtocolType proto, void *pingdata, void *data)
 {
     if (proto == AnyP::PROTO_ICP)
         peerHandleIcpReply(p, type, (icp_common_t *)pingdata, data);
@@ -917,7 +919,7 @@
 }
 
 static void
-peerAddFwdServer(FwdServer ** FSVR, peer * p, hier_code code)
+peerAddFwdServer(FwdServer ** FSVR, CachePeer * p, hier_code code)
 {
     FwdServer *fs = (FwdServer *)memAllocate(MEM_FWD_SERVER);
     debugs(44, 5, "peerAddFwdServer: adding " <<

=== modified file 'src/peer_sourcehash.cc'
--- src/peer_sourcehash.cc	2012-09-01 14:38:36 +0000
+++ src/peer_sourcehash.cc	2012-09-04 15:15:51 +0000
@@ -33,9 +33,11 @@
  */
 
 #include "squid.h"
+#include "CachePeer.h"
 #include "HttpRequest.h"
 #include "mgr/Registration.h"
 #include "neighbors.h"
+#include "SquidConfig.h"
 #include "Store.h"
 
 #if HAVE_MATH_H
@@ -45,15 +47,15 @@
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
 
 static int n_sourcehash_peers = 0;
-static peer **sourcehash_peers = NULL;
+static CachePeer **sourcehash_peers = NULL;
 static OBJH peerSourceHashCachemgr;
 static void peerSourceHashRegisterWithCacheManager(void);
 
 static int
 peerSortWeight(const void *a, const void *b)
 {
-    const peer *const *p1 = (const peer *const *)a;
-    const peer *const *p2 = (const peer *const *)b;
+    const CachePeer *const *p1 = (const CachePeer *const *)a;
+    const CachePeer *const *p2 = (const CachePeer *const *)b;
     return (*p1)->weight - (*p2)->weight;
 }
 
@@ -64,8 +66,8 @@
     int K;
     int k;
     double P_last, X_last, Xn;
-    peer *p;
-    peer **P;
+    CachePeer *p;
+    CachePeer **P;
     char *t;
     /* Clean up */
 
@@ -96,7 +98,7 @@
     if (n_sourcehash_peers == 0)
         return;
 
-    sourcehash_peers = (peer **)xcalloc(n_sourcehash_peers, sizeof(*sourcehash_peers));
+    sourcehash_peers = (CachePeer **)xcalloc(n_sourcehash_peers, sizeof(*sourcehash_peers));
 
     /* Build a list of the found peers and calculate hashes and load factors */
     for (P = sourcehash_peers, p = Config.peers; p; p = p->next) {
@@ -164,13 +166,13 @@
                         peerSourceHashCachemgr, 0, 1);
 }
 
-peer *
+CachePeer *
 peerSourceHashSelectParent(HttpRequest * request)
 {
     int k;
     const char *c;
-    peer *p = NULL;
-    peer *tp;
+    CachePeer *p = NULL;
+    CachePeer *tp;
     unsigned int user_hash = 0;
     unsigned int combined_hash;
     double score;
@@ -189,7 +191,7 @@
     for (c = key; *c != 0; ++c)
         user_hash += ROTATE_LEFT(user_hash, 19) + *c;
 
-    /* select peer */
+    /* select CachePeer */
     for (k = 0; k < n_sourcehash_peers; ++k) {
         tp = sourcehash_peers[k];
         combined_hash = (user_hash ^ tp->sourcehash.hash);
@@ -214,7 +216,7 @@
 static void
 peerSourceHashCachemgr(StoreEntry * sentry)
 {
-    peer *p;
+    CachePeer *p;
     int sumfetches = 0;
     storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
                       "Hostname",

=== modified file 'src/peer_sourcehash.h'
--- src/peer_sourcehash.h	2012-08-29 00:12:28 +0000
+++ src/peer_sourcehash.h	2012-09-04 14:38:44 +0000
@@ -34,10 +34,10 @@
 #ifndef SQUID_PEER_SOURCEHASH_H_
 #define SQUID_PEER_SOURCEHASH_H_
 
-class peer;
+class CachePeer;
 class HttpRequest;
 
 extern void peerSourceHashInit(void);
-extern peer * peerSourceHashSelectParent(HttpRequest * request);
+extern CachePeer * peerSourceHashSelectParent(HttpRequest * request);
 
 #endif /* SQUID_PEER_SOURCEHASH_H_ */

=== modified file 'src/peer_userhash.cc'
--- src/peer_userhash.cc	2012-09-01 14:38:36 +0000
+++ src/peer_userhash.cc	2012-09-04 15:15:51 +0000
@@ -37,10 +37,12 @@
 #if USE_AUTH
 
 #include "auth/UserRequest.h"
+#include "CachePeer.h"
 #include "globals.h"
 #include "HttpRequest.h"
 #include "mgr/Registration.h"
 #include "neighbors.h"
+#include "SquidConfig.h"
 #include "Store.h"
 
 #if HAVE_MATH_H
@@ -50,15 +52,15 @@
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
 
 static int n_userhash_peers = 0;
-static peer **userhash_peers = NULL;
+static CachePeer **userhash_peers = NULL;
 static OBJH peerUserHashCachemgr;
 static void peerUserHashRegisterWithCacheManager(void);
 
 static int
 peerSortWeight(const void *a, const void *b)
 {
-    const peer *const *p1 = (const peer *const *)a;
-    const peer *const *p2 = (const peer *const *)b;
+    const CachePeer *const *p1 = (const CachePeer *const *)a;
+    const CachePeer *const *p2 = (const CachePeer *const *)b;
     return (*p1)->weight - (*p2)->weight;
 }
 
@@ -69,8 +71,8 @@
     int K;
     int k;
     double P_last, X_last, Xn;
-    peer *p;
-    peer **P;
+    CachePeer *p;
+    CachePeer **P;
     char *t;
     /* Clean up */
 
@@ -101,7 +103,7 @@
     if (n_userhash_peers == 0)
         return;
 
-    userhash_peers = (peer **)xcalloc(n_userhash_peers, sizeof(*userhash_peers));
+    userhash_peers = (CachePeer **)xcalloc(n_userhash_peers, sizeof(*userhash_peers));
 
     /* Build a list of the found peers and calculate hashes and load factors */
     for (P = userhash_peers, p = Config.peers; p; p = p->next) {
@@ -169,13 +171,13 @@
                         0, 1);
 }
 
-peer *
+CachePeer *
 peerUserHashSelectParent(HttpRequest * request)
 {
     int k;
     const char *c;
-    peer *p = NULL;
-    peer *tp;
+    CachePeer *p = NULL;
+    CachePeer *tp;
     unsigned int user_hash = 0;
     unsigned int combined_hash;
     double score;
@@ -197,7 +199,7 @@
     for (c = key; *c != 0; ++c)
         user_hash += ROTATE_LEFT(user_hash, 19) + *c;
 
-    /* select peer */
+    /* select CachePeer */
     for (k = 0; k < n_userhash_peers; ++k) {
         tp = userhash_peers[k];
         combined_hash = (user_hash ^ tp->userhash.hash);
@@ -222,7 +224,7 @@
 static void
 peerUserHashCachemgr(StoreEntry * sentry)
 {
-    peer *p;
+    CachePeer *p;
     int sumfetches = 0;
     storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
                       "Hostname",

=== modified file 'src/peer_userhash.h'
--- src/peer_userhash.h	2012-08-29 00:12:28 +0000
+++ src/peer_userhash.h	2012-09-04 14:38:44 +0000
@@ -34,10 +34,10 @@
 #ifndef SQUID_PEER_USERHASH_H_
 #define SQUID_PEER_USERHASH_H_
 
-class peer;
+class CachePeer;
 class HttpRequest;
 
 extern void peerUserHashInit(void);
-extern peer * peerUserHashSelectParent(HttpRequest * request);
+extern CachePeer * peerUserHashSelectParent(HttpRequest * request);
 
 #endif /* SQUID_PEER_USERHASH_H_ */

=== modified file 'src/redirect.cc'
--- src/redirect.cc	2012-08-31 16:57:39 +0000
+++ src/redirect.cc	2012-09-04 09:10:20 +0000
@@ -44,6 +44,7 @@
 #include "mgr/Registration.h"
 #include "redirect.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #if USE_AUTH
 #include "auth/UserRequest.h"

=== modified file 'src/refresh.cc'
--- src/refresh.cc	2012-09-01 14:38:36 +0000
+++ src/refresh.cc	2012-09-13 16:20:41 +0000
@@ -41,7 +41,9 @@
 #include "HttpRequest.h"
 #include "HttpReply.h"
 #include "MemObject.h"
+#include "RefreshPattern.h"
 #include "SquidTime.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "URL.h"
 
@@ -108,16 +110,16 @@
 #define REFRESH_DEFAULT_PCT	0.20
 #define REFRESH_DEFAULT_MAX	(time_t)259200
 
-static const refresh_t *refreshUncompiledPattern(const char *);
+static const RefreshPattern *refreshUncompiledPattern(const char *);
 static OBJH refreshStats;
-static int refreshStaleness(const StoreEntry * entry, time_t check_time, const time_t age, const refresh_t * R, stale_flags * sf);
-
-static refresh_t DefaultRefresh;
-
-const refresh_t *
+static int refreshStaleness(const StoreEntry * entry, time_t check_time, const time_t age, const RefreshPattern * R, stale_flags * sf);
+
+static RefreshPattern DefaultRefresh;
+
+const RefreshPattern *
 refreshLimits(const char *url)
 {
-    const refresh_t *R;
+    const RefreshPattern *R;
 
     for (R = Config.Refresh; R; R = R->next) {
         if (!regexec(&(R->compiled_pattern), url, 0, 0, 0))
@@ -127,10 +129,10 @@
     return NULL;
 }
 
-static const refresh_t *
+static const RefreshPattern *
 refreshUncompiledPattern(const char *pat)
 {
-    const refresh_t *R;
+    const RefreshPattern *R;
 
     for (R = Config.Refresh; R; R = R->next) {
         if (0 == strcmp(R->pattern, pat))
@@ -156,7 +158,7 @@
  * times.
  */
 static int
-refreshStaleness(const StoreEntry * entry, time_t check_time, const time_t age, const refresh_t * R, stale_flags * sf)
+refreshStaleness(const StoreEntry * entry, time_t check_time, const time_t age, const RefreshPattern * R, stale_flags * sf)
 {
     /** \par
      * Check for an explicit expiration time (Expires: header).
@@ -230,7 +232,7 @@
 static int
 refreshCheck(const StoreEntry * entry, HttpRequest * request, time_t delta)
 {
-    const refresh_t *R;
+    const RefreshPattern *R;
     const char *uri = NULL;
     time_t age = 0;
     time_t check_time = squid_curtime + delta;
@@ -265,7 +267,7 @@
 
     debugs(22, 3, "\tentry->timestamp:\t" << mkrfc1123(entry->timestamp));
 
-    if (request && !request->flags.ignore_cc) {
+    if (request && !request->flags.ignoringCacheControl()) {
         const HttpHdrCc *const cc = request->cache_control;
         if (cc && cc->hasMinFresh()) {
             const int32_t minFresh=cc->minFresh();
@@ -291,7 +293,7 @@
             entry->mem_obj->getReply()->cache_control->staleIfError() < staleness) {
 
         debugs(22, 3, "refreshCheck: stale-if-error period expired.");
-        request->flags.fail_on_validation_err = 1;
+        request->flags.setFailOnValidationError();
     }
 
     if (EBIT_TEST(entry->flags, ENTRY_REVALIDATE) && staleness > -1
@@ -301,15 +303,15 @@
        ) {
         debugs(22, 3, "refreshCheck: YES: Must revalidate stale response");
         if (request)
-            request->flags.fail_on_validation_err = 1;
+            request->flags.setFailOnValidationError();
         return STALE_MUST_REVALIDATE;
     }
 
     /* request-specific checks */
-    if (request && !request->flags.ignore_cc) {
+    if (request && !request->flags.ignoringCacheControl()) {
         HttpHdrCc *cc = request->cache_control;
 
-        if (request->flags.ims && (R->flags.refresh_ims || Config.onoff.refresh_all_ims)) {
+        if (request->flags.hasIMS() && (R->flags.refresh_ims || Config.onoff.refresh_all_ims)) {
             /* The clients no-cache header is changed into a IMS query */
             debugs(22, 3, "refreshCheck: YES: refresh-ims");
             return STALE_FORCED_RELOAD;
@@ -317,7 +319,7 @@
 
 #if USE_HTTP_VIOLATIONS
 
-        if (!request->flags.nocache_hack) {
+        if (!request->flags.noCacheHackEnabled()) {
             (void) 0;
         } else if (R->flags.ignore_reload) {
             /* The clients no-cache header is ignored */
@@ -329,7 +331,7 @@
         } else {
             /* The clients no-cache header is not overridden on this request */
             debugs(22, 3, "refreshCheck: YES: client reload");
-            request->flags.nocache = 1;
+            request->flags.setNocache();
             return STALE_FORCED_RELOAD;
         }
 
@@ -396,7 +398,7 @@
     if ( max_stale >= 0 && staleness > max_stale) {
         debugs(22, 3, "refreshCheck: YES: max-stale limit");
         if (request)
-            request->flags.fail_on_validation_err = 1;
+            request->flags.setFailOnValidationError();
         return STALE_MAX_STALE;
     }
 
@@ -492,7 +494,8 @@
     int reason = refreshCheck(entry, request, 0);
     ++ refreshCounts[rcHTTP].total;
     ++ refreshCounts[rcHTTP].status[reason];
-    request->flags.stale_if_hit = refreshIsStaleIfHit(reason);
+    if (refreshIsStaleIfHit(reason))
+        request->flags.setStaleIfHit();
     return (Config.onoff.offline || reason < 200) ? 0 : 1;
 }
 
@@ -534,7 +537,7 @@
 time_t
 getMaxAge(const char *url)
 {
-    const refresh_t *R;
+    const RefreshPattern *R;
     debugs(22, 3, "getMaxAge: '" << url << "'");
 
     if ((R = refreshLimits(url)))

=== modified file 'src/refresh.h'
--- src/refresh.h	2012-08-29 00:12:28 +0000
+++ src/refresh.h	2012-09-10 07:59:18 +0000
@@ -33,6 +33,8 @@
 #ifndef SQUID_REFRESH_H_
 #define SQUID_REFRESH_H_
 
+class RefreshPattern;
+
 extern void refreshAddToList(const char *, int, time_t, int, time_t);
 extern int refreshIsCachable(const StoreEntry *);
 extern int refreshCheckHTTP(const StoreEntry *, HttpRequest *);
@@ -41,6 +43,6 @@
 extern int refreshCheckDigest(const StoreEntry *, time_t delta);
 extern time_t getMaxAge(const char *url);
 extern void refreshInit(void);
-extern const refresh_t *refreshLimits(const char *url);
+extern const RefreshPattern *refreshLimits(const char *url);
 
 #endif /* SQUID_REFRESH_H_ */

=== modified file 'src/send-announce.cc'
--- src/send-announce.cc	2012-08-31 16:57:39 +0000
+++ src/send-announce.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 #include "globals.h"
 #include "ICP.h"
 #include "ipcache.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "tools.h"
 

=== modified file 'src/snmp_agent.cc'
--- src/snmp_agent.cc	2012-09-01 14:38:36 +0000
+++ src/snmp_agent.cc	2012-09-04 15:15:51 +0000
@@ -31,6 +31,7 @@
  */
 
 #include "squid.h"
+#include "CachePeer.h"
 #include "cache_snmp.h"
 #include "globals.h"
 #include "mem_node.h"
@@ -39,6 +40,7 @@
 #include "snmp_core.h"
 #include "StatCounters.h"
 #include "StatHist.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "stat.h"
@@ -207,7 +209,7 @@
 
     Ip::Address laddr;
     char *cp = NULL;
-    peer *p = NULL;
+    CachePeer *p = NULL;
     int cnt = 0;
     debugs(49, 5, "snmp_meshPtblFn: peer " << Var->name[LEN_SQ_MESH + 3] << " requested!");
     *ErrP = SNMP_ERR_NOERROR;

=== modified file 'src/snmp_agent.h'
--- src/snmp_agent.h	2012-08-31 15:45:51 +0000
+++ src/snmp_agent.h	2012-09-17 13:31:37 +0000
@@ -1,8 +1,8 @@
 #ifndef SQUID_SNMP_AGENT_H_
 #define SQUID_SNMP_AGENT_H_
 /*
- * DEBUG: section 
- * AUTHOR: 
+ * DEBUG: section 49    SNMP Interface
+ * AUTHOR: Kostas Anagnostakis
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------

=== modified file 'src/snmp_core.cc'
--- src/snmp_core.cc	2012-08-31 16:57:39 +0000
+++ src/snmp_core.cc	2012-09-04 15:15:51 +0000
@@ -32,6 +32,7 @@
 #include "squid.h"
 #include "acl/FilledChecklist.h"
 #include "base/CbcPointer.h"
+#include "CachePeer.h"
 #include "client_db.h"
 #include "comm.h"
 #include "comm/Connection.h"
@@ -42,6 +43,7 @@
 #include "snmp_agent.h"
 #include "snmp_core.h"
 #include "snmp/Forwarder.h"
+#include "SquidConfig.h"
 #include "tools.h"
 
 static void snmpPortOpened(const Comm::ConnectionPointer &conn, int errNo);
@@ -747,7 +749,7 @@
 peer_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn)
 {
     oid *instance = NULL;
-    peer *peers = Config.peers;
+    CachePeer *peers = Config.peers;
 
     if (peers == NULL) {
         debugs(49, 6, "snmp peer_Inst: No Peers.");

=== modified file 'src/ssl/context_storage.cc'
--- src/ssl/context_storage.cc	2012-07-23 15:34:12 +0000
+++ src/ssl/context_storage.cc	2012-09-04 15:15:51 +0000
@@ -9,6 +9,9 @@
 #if HAVE_LIMITS
 #include <limits>
 #endif
+#if USE_SSL
+#include <openssl/ssl.h>
+#endif
 
 Ssl::CertificateStorageAction::CertificateStorageAction(const Mgr::Command::Pointer &cmd)
         :   Mgr::Action(cmd)

=== modified file 'src/ssl/context_storage.h'
--- src/ssl/context_storage.h	2012-08-28 13:00:30 +0000
+++ src/ssl/context_storage.h	2012-09-04 15:15:51 +0000
@@ -17,6 +17,8 @@
 #if HAVE_LIST
 #include <list>
 #endif
+#include <openssl/ssl.h>
+
 
 /// TODO: Replace on real size.
 #define SSL_CTX_SIZE 1024

=== modified file 'src/ssl/helper.cc'
--- src/ssl/helper.cc	2012-08-31 16:57:39 +0000
+++ src/ssl/helper.cc	2012-09-04 09:10:20 +0000
@@ -1,7 +1,3 @@
-/*
- * 2008/11/14
- */
-
 #include "squid.h"
 #include "anyp/PortCfg.h"
 #include "ssl/Config.h"
@@ -10,6 +6,7 @@
 #include "SquidTime.h"
 #include "SwapDir.h"
 #include "wordlist.h"
+#include "SquidConfig.h"
 
 Ssl::Helper * Ssl::Helper::GetInstance()
 {

=== modified file 'src/ssl/support.cc'
--- src/ssl/support.cc	2012-09-09 17:13:42 +0000
+++ src/ssl/support.cc	2012-09-09 19:41:47 +0000
@@ -42,6 +42,7 @@
 #include "anyp/PortCfg.h"
 #include "fde.h"
 #include "globals.h"
+#include "SquidConfig.h"
 #include "ssl/ErrorDetail.h"
 #include "ssl/support.h"
 #include "ssl/gadgets.h"

=== modified file 'src/stat.cc'
--- src/stat.cc	2012-09-01 14:38:36 +0000
+++ src/stat.cc	2012-09-04 15:15:51 +0000
@@ -32,6 +32,7 @@
 
 #include "squid.h"
 #include "CacheDigest.h"
+#include "CachePeer.h"
 #include "client_side_request.h"
 #include "client_side.h"
 #include "comm/Connection.h"
@@ -53,6 +54,7 @@
 #include "mgr/ServiceTimesAction.h"
 #include "neighbors.h"
 #include "PeerDigest.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "StatCounters.h"
@@ -219,19 +221,19 @@
 
     stats.http_reads = IOStats.Http.reads;
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         stats.http_read_hist[i] = IOStats.Http.read_hist[i];
     }
 
     stats.ftp_reads = IOStats.Ftp.reads;
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         stats.ftp_read_hist[i] = IOStats.Ftp.read_hist[i];
     }
 
     stats.gopher_reads = IOStats.Gopher.reads;
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         stats.gopher_read_hist[i] = IOStats.Gopher.read_hist[i];
     }
 }
@@ -245,7 +247,7 @@
     storeAppendPrintf(sentry, "number of reads: %.0f\n", stats.http_reads);
     storeAppendPrintf(sentry, "Read Histogram:\n");
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         storeAppendPrintf(sentry, "%5d-%5d: %9.0f %2.0f%%\n",
                           i ? (1 << (i - 1)) + 1 : 1,
                           1 << i,
@@ -258,7 +260,7 @@
     storeAppendPrintf(sentry, "number of reads: %.0f\n", stats.ftp_reads);
     storeAppendPrintf(sentry, "Read Histogram:\n");
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         storeAppendPrintf(sentry, "%5d-%5d: %9.0f %2.0f%%\n",
                           i ? (1 << (i - 1)) + 1 : 1,
                           1 << i,
@@ -271,7 +273,7 @@
     storeAppendPrintf(sentry, "number of reads: %.0f\n", stats.gopher_reads);
     storeAppendPrintf(sentry, "Read Histogram:\n");
 
-    for (i = 0; i < _iostats::histSize; ++i) {
+    for (i = 0; i < iostats::histSize; ++i) {
         storeAppendPrintf(sentry, "%5d-%5d: %9.0f %2.0f%%\n",
                           i ? (1 << (i - 1)) + 1 : 1,
                           1 << i,
@@ -1810,7 +1812,7 @@
 {
 #if USE_CACHE_DIGESTS
     StatCounters *f = &statCounter;
-    peer *peer;
+    CachePeer *peer;
     const int tot_used = f->cd.times_used + f->icp.times_used;
 
     /* totals */

=== modified file 'src/store.cc'
--- src/store.cc	2012-09-01 14:38:36 +0000
+++ src/store.cc	2012-09-13 16:20:41 +0000
@@ -48,6 +48,8 @@
 #include "mgr/StoreIoAction.h"
 #include "profiler/Profiler.h"
 #include "repl_modules.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Stack.h"
 #include "StatCounters.h"
@@ -816,7 +818,7 @@
 }
 
 StoreEntry *
-storeCreateEntry(const char *url, const char *log_url, request_flags flags, const HttpRequestMethod& method)
+storeCreateEntry(const char *url, const char *log_url, const RequestFlags &flags, const HttpRequestMethod& method)
 {
     StoreEntry *e = NULL;
     MemObject *mem = NULL;
@@ -827,12 +829,12 @@
     mem = e->mem_obj;
     mem->method = method;
 
-    if (neighbors_do_private_keys || !flags.hierarchical)
+    if (neighbors_do_private_keys || !flags.hierarchical())
         e->setPrivateKey();
     else
         e->setPublicKey();
 
-    if (flags.cachable) {
+    if (flags.isCachable()) {
         EBIT_SET(e->flags, ENTRY_CACHABLE);
         EBIT_CLR(e->flags, RELEASE_REQUEST);
     } else {
@@ -1965,7 +1967,7 @@
 {
     const String reqETags = request.header.getList(HDR_IF_NONE_MATCH);
     // weak comparison is allowed only for HEAD or full-body GET requests
-    const bool allowWeakMatch = !request.flags.range &&
+    const bool allowWeakMatch = !request.flags.isRanged() &&
                                 (request.method == METHOD_GET || request.method == METHOD_HEAD);
     return hasOneOfEtags(reqETags, allowWeakMatch);
 }

=== modified file 'src/store_client.cc'
--- src/store_client.cc	2012-09-01 14:38:36 +0000
+++ src/store_client.cc	2012-09-13 16:20:41 +0000
@@ -40,6 +40,7 @@
 #include "MemObject.h"
 #include "mime_header.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "StatCounters.h"
 #include "StoreClient.h"
 #include "Store.h"
@@ -790,7 +791,7 @@
     assert(mem);
     debugs(90, 3, "CheckQuickAbort2: entry=" << entry << ", mem=" << mem);
 
-    if (mem->request && !mem->request->flags.cachable) {
+    if (mem->request && !mem->request->flags.isCachable()) {
         debugs(90, 3, "CheckQuickAbort2: YES !mem->request->flags.cachable");
         return 1;
     }

=== modified file 'src/store_digest.cc'
--- src/store_digest.cc	2012-08-31 16:57:39 +0000
+++ src/store_digest.cc	2012-09-13 16:20:41 +0000
@@ -51,6 +51,7 @@
 #include "MemObject.h"
 #include "PeerDigest.h"
 #include "refresh.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StoreSearch.h"
@@ -376,7 +377,7 @@
 static void
 storeDigestRewriteStart(void *datanotused)
 {
-    request_flags flags;
+    RequestFlags flags;
     char *url;
     StoreEntry *e;
 
@@ -391,7 +392,7 @@
     debugs(71, 2, "storeDigestRewrite: start rewrite #" << sd_state.rewrite_count + 1);
     /* make new store entry */
     url = internalLocalUri("/squid-internal-periodic/", StoreDigestFileName);
-    flags.cachable = 1;
+    flags.setCachable();
     e = storeCreateEntry(url, url, flags, METHOD_GET);
     assert(e);
     sd_state.rewrite_lock = e;

=== modified file 'src/store_dir.cc'
--- src/store_dir.cc	2012-09-01 14:38:36 +0000
+++ src/store_dir.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "MemObject.h"
 #include "MemStore.h"
 #include "profiler/Profiler.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "Store.h"

=== modified file 'src/store_io.cc'
--- src/store_io.cc	2012-08-14 11:53:07 +0000
+++ src/store_io.cc	2012-09-04 09:10:20 +0000
@@ -1,6 +1,7 @@
 #include "squid.h"
 #include "Store.h"
 #include "MemObject.h"
+#include "SquidConfig.h"
 #include "SwapDir.h"
 
 StoreIoStats store_io_stats;

=== modified file 'src/store_log.cc'
--- src/store_log.cc	2012-08-29 16:01:32 +0000
+++ src/store_log.cc	2012-09-04 09:10:20 +0000
@@ -38,6 +38,7 @@
 #include "mgr/Registration.h"
 #include "Store.h"
 #include "store_log.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 static const char *storeLogTags[] = {

=== modified file 'src/store_rebuild.cc'
--- src/store_rebuild.cc	2012-08-31 16:57:39 +0000
+++ src/store_rebuild.cc	2012-09-06 14:22:03 +0000
@@ -41,12 +41,13 @@
 #include "store_digest.h"
 #include "store_rebuild.h"
 #include "StoreSearch.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 #if HAVE_ERRNO_H
 #include <errno.h>
 #endif
-static struct _store_rebuild_data counts;
+static StoreRebuildData counts;
 
 static struct timeval rebuild_start;
 static void storeCleanup(void *);
@@ -136,7 +137,7 @@
 /* meta data recreated from disk image in swap directory */
 void
 
-storeRebuildComplete(struct _store_rebuild_data *dc)
+storeRebuildComplete(StoreRebuildData *dc)
 {
     double dt;
     counts.objcount += dc->objcount;
@@ -294,7 +295,7 @@
 
 bool
 storeRebuildLoadEntry(int fd, int diskIndex, MemBuf &buf,
-                      struct _store_rebuild_data &counts)
+                      StoreRebuildData &counts)
 {
     if (fd < 0)
         return false;
@@ -316,7 +317,7 @@
 
 bool
 storeRebuildParseEntry(MemBuf &buf, StoreEntry &tmpe, cache_key *key,
-                       struct _store_rebuild_data &counts,
+                       StoreRebuildData &counts,
                        uint64_t expectedSize)
 {
     int swap_hdr_len = 0;
@@ -382,7 +383,7 @@
 
 bool
 storeRebuildKeepEntry(const StoreEntry &tmpe, const cache_key *key,
-                      struct _store_rebuild_data &counts)
+                      StoreRebuildData &counts)
 {
     /* this needs to become
      * 1) unpack url

=== modified file 'src/store_rebuild.h'
--- src/store_rebuild.h	2012-09-03 09:02:20 +0000
+++ src/store_rebuild.h	2012-09-09 19:41:47 +0000
@@ -31,16 +31,29 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  *
  */
+class StoreRebuildData {
+public:
+    int objcount;       /* # objects successfully reloaded */
+    int expcount;       /* # objects expired */
+    int scancount;      /* # entries scanned or read from state file */
+    int clashcount;     /* # swapfile clashes avoided */
+    int dupcount;       /* # duplicates purged */
+    int cancelcount;        /* # SWAP_LOG_DEL objects purged */
+    int invalid;        /* # bad lines */
+    int badflags;       /* # bad e->flags */
+    int bad_log_op;
+    int zero_object_sz;
+};
 
 extern void storeRebuildStart(void);
-extern void storeRebuildComplete(struct _store_rebuild_data *);
+extern void storeRebuildComplete(StoreRebuildData *);
 extern void storeRebuildProgress(int sd_index, int total, int sofar);
 
 /// loads entry from disk; fills supplied memory buffer on success
-extern bool storeRebuildLoadEntry(int fd, int diskIndex, MemBuf &buf, struct _store_rebuild_data &counts);
+extern bool storeRebuildLoadEntry(int fd, int diskIndex, MemBuf &buf, StoreRebuildData &counts);
 /// parses entry buffer and validates entry metadata; fills e on success
-extern bool storeRebuildParseEntry(MemBuf &buf, StoreEntry &e, cache_key *key, struct _store_rebuild_data &counts, uint64_t expectedSize);
+extern bool storeRebuildParseEntry(MemBuf &buf, StoreEntry &e, cache_key *key, StoreRebuildData &counts, uint64_t expectedSize);
 /// checks whether the loaded entry should be kept; updates counters
-extern bool storeRebuildKeepEntry(const StoreEntry &e, const cache_key *key, struct _store_rebuild_data &counts);
+extern bool storeRebuildKeepEntry(const StoreEntry &e, const cache_key *key, StoreRebuildData &counts);
 
 #endif /* SQUID_STORE_REBUILD_H_ */

=== modified file 'src/store_swapout.cc'
--- src/store_swapout.cc	2012-09-01 14:38:36 +0000
+++ src/store_swapout.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 /* FIXME: Abstract the use of this more */
 #include "mem_node.h"
 #include "MemObject.h"
+#include "SquidConfig.h"
 #include "SwapDir.h"
 #include "StatCounters.h"
 #include "store_log.h"

=== modified file 'src/structs.h'
--- src/structs.h	2012-09-03 09:02:20 +0000
+++ src/structs.h	2012-09-10 12:49:35 +0000
@@ -29,11 +29,9 @@
 #ifndef SQUID_STRUCTS_H
 #define SQUID_STRUCTS_H
 
-#include "RefCount.h"
 #include "cbdata.h"
 #include "defines.h"
 #include "dlink.h"
-#include "err_type.h"
 #include "hash.h"
 #include "ip/Address.h"
 
@@ -41,33 +39,15 @@
 #include "HttpHeader.h"
 #include "HttpHeaderTools.h"
 
-/* for ICP_END */
-#include "icp_opcode.h"
-
-#if USE_SSL
-#include <openssl/ssl.h>
-#endif
-
 #define PEER_MULTICAST_SIBLINGS 1
 
-struct acl_name_list {
-    char name[ACL_NAME_SZ];
-    acl_name_list *next;
-};
-
-struct acl_deny_info_list {
-    err_type err_page_id;
-    char *err_page_name;
-    acl_name_list *acl_list;
-    acl_deny_info_list *next;
-};
-
 class ACLChecklist;
 
 #if SQUID_SNMP
 
 #include "snmp_session.h"
-struct _snmp_request_t {
+class snmp_request_t {
+public:
     u_char *buf;
     u_char *outbuf;
     int len;
@@ -88,13 +68,6 @@
 
 class ACLList;
 
-struct acl_address {
-    acl_address *next;
-    ACLList *aclList;
-
-    Ip::Address addr;
-};
-
 struct acl_tos {
     acl_tos *next;
     ACLList *aclList;
@@ -113,18 +86,6 @@
     int64_t size;
 };
 
-struct ushortlist {
-    unsigned short i;
-    ushortlist *next;
-};
-
-struct relist {
-    int flags;
-    char *pattern;
-    regex_t regex;
-    relist *next;
-};
-
 #if USE_DELAY_POOLS
 #include "DelayConfig.h"
 #include "ClientDelayConfig.h"
@@ -142,533 +103,23 @@
 class RemovalPolicySettings;
 class external_acl;
 class Store;
+class CustomLog;
+class CacheMgrPasswd;
 namespace AnyP
 {
 struct PortCfg;
 }
 class SwapDir;
 
-/// Used for boolean enabled/disabled options with complex default logic.
-/// Allows Squid to compute the right default after configuration.
-/// Checks that not-yet-defined option values are not used.
-class YesNoNone
-{
-// TODO: generalize to non-boolean option types
+class close_handler {
 public:
-    YesNoNone(): option(0) {}
-
-    /// returns true iff enabled; asserts if the option has not been configured
-    operator void *() const; // TODO: use a fancy/safer version of the operator
-
-    /// enables or disables the option;
-    void configure(bool beSet);
-
-    /// whether the option was enabled or disabled, by user or Squid
-    bool configured() const { return option != 0; }
-
-private:
-    enum { optUnspecified = -1, optDisabled = 0, optEnabled = 1 };
-    int option; ///< configured value or zero
-};
-
-struct SquidConfig {
-
-    struct {
-        /* These should be for the Store::Root instance.
-        * this needs pluggable parsing to be done smoothly.
-        */
-        int highWaterMark;
-        int lowWaterMark;
-    } Swap;
-
-    YesNoNone memShared; ///< whether the memory cache is shared among workers
-    size_t memMaxSize;
-
-    struct {
-        int64_t min;
-        int pct;
-        int64_t max;
-    } quickAbort;
-    int64_t readAheadGap;
-    RemovalPolicySettings *replPolicy;
-    RemovalPolicySettings *memPolicy;
-#if USE_HTTP_VIOLATIONS
-    time_t negativeTtl;
-#endif
-    time_t maxStale;
-    time_t negativeDnsTtl;
-    time_t positiveDnsTtl;
-    time_t shutdownLifetime;
-    time_t backgroundPingRate;
-
-    struct {
-        time_t read;
-        time_t write;
-        time_t lifetime;
-        time_t connect;
-        time_t forward;
-        time_t peer_connect;
-        time_t request;
-        time_t clientIdlePconn;
-        time_t serverIdlePconn;
-        time_t siteSelect;
-        time_t deadPeer;
-        int icp_query;		/* msec */
-        int icp_query_max;	/* msec */
-        int icp_query_min;	/* msec */
-        int mcast_icp_query;	/* msec */
-
-#if !USE_DNSHELPER
-        time_msec_t idns_retransmit;
-        time_msec_t idns_query;
-#endif
-
-    } Timeout;
-    size_t maxRequestHeaderSize;
-    int64_t maxRequestBodySize;
-    int64_t maxChunkedRequestBodySize;
-    size_t maxRequestBufferSize;
-    size_t maxReplyHeaderSize;
-    acl_size_t *ReplyBodySize;
-
-    struct {
-        unsigned short icp;
-#if USE_HTCP
-
-        unsigned short htcp;
-#endif
-#if SQUID_SNMP
-
-        unsigned short snmp;
-#endif
-    } Port;
-
-    struct {
-        AnyP::PortCfg *http;
-#if USE_SSL
-        AnyP::PortCfg *https;
-#endif
-    } Sockaddr;
-#if SQUID_SNMP
-
-    struct {
-        char *configFile;
-        char *agentInfo;
-    } Snmp;
-#endif
-#if USE_WCCP
-
-    struct {
-        Ip::Address router;
-        Ip::Address address;
-        int version;
-    } Wccp;
-#endif
-#if USE_WCCPv2
-
-    struct {
-        Ip::Address_list *router;
-        Ip::Address address;
-        int forwarding_method;
-        int return_method;
-        int assignment_method;
-        int weight;
-        int rebuildwait;
-        void *info;
-    } Wccp2;
-#endif
-
-#if USE_ICMP
-    IcmpConfig pinger;
-#endif
-
-    char *as_whois_server;
-
-    struct {
-        char *store;
-        char *swap;
-        customlog *accesslogs;
-#if ICAP_CLIENT
-        customlog *icaplogs;
-#endif
-        int rotateNumber;
-    } Log;
-    char *adminEmail;
-    char *EmailFrom;
-    char *EmailProgram;
-    char *effectiveUser;
-    char *visible_appname_string;
-    char *effectiveGroup;
-
-    struct {
-#if USE_DNSHELPER
-        char *dnsserver;
-#endif
-
-        wordlist *redirect;
-#if USE_UNLINKD
-
-        char *unlinkd;
-#endif
-
-        char *diskd;
-#if USE_SSL
-
-        char *ssl_password;
-#endif
-
-    } Program;
-#if USE_DNSHELPER
-    HelperChildConfig dnsChildren;
-#endif
-
-    HelperChildConfig redirectChildren;
-    time_t authenticateGCInterval;
-    time_t authenticateTTL;
-    time_t authenticateIpTTL;
-
-    struct {
-        char *surrogate_id;
-    } Accel;
-    char *appendDomain;
-    size_t appendDomainLen;
-    char *pidFilename;
-    char *netdbFilename;
-    char *mimeTablePathname;
-    char *etcHostsPath;
-    char *visibleHostname;
-    char *uniqueHostname;
-    wordlist *hostnameAliases;
-    char *errHtmlText;
-
-    struct {
-        char *host;
-        char *file;
-        time_t period;
-        unsigned short port;
-    } Announce;
-
-    struct {
-
-        Ip::Address udp_incoming;
-        Ip::Address udp_outgoing;
-#if SQUID_SNMP
-        Ip::Address snmp_incoming;
-        Ip::Address snmp_outgoing;
-#endif
-        /* FIXME INET6 : this should really be a CIDR value */
-        Ip::Address client_netmask;
-    } Addrs;
-    size_t tcpRcvBufsz;
-    size_t udpMaxHitObjsz;
-    wordlist *hierarchy_stoplist;
-    wordlist *mcast_group_list;
-    wordlist *dns_nameservers;
-    peer *peers;
-    int npeers;
-
-    struct {
-        int size;
-        int low;
-        int high;
-    } ipcache;
-
-    struct {
-        int size;
-    } fqdncache;
-    int minDirectHops;
-    int minDirectRtt;
-    cachemgr_passwd *passwd_list;
-
-    struct {
-        int objectsPerBucket;
-        int64_t avgObjectSize;
-        int64_t maxObjectSize;
-        int64_t minObjectSize;
-        size_t maxInMemObjSize;
-    } Store;
-
-    struct {
-        int high;
-        int low;
-        time_t period;
-    } Netdb;
-
-    struct {
-        int log_udp;
-        int res_defnames;
-        int anonymizer;
-        int client_db;
-        int query_icmp;
-        int icp_hit_stale;
-        int buffered_logs;
-        int common_log;
-        int log_mime_hdrs;
-        int log_fqdn;
-        int announce;
-        int mem_pools;
-        int test_reachability;
-        int half_closed_clients;
-        int refresh_all_ims;
-#if USE_HTTP_VIOLATIONS
-
-        int reload_into_ims;
-#endif
-
-        int offline;
-        int redir_rewrites_host;
-        int prefer_direct;
-        int nonhierarchical_direct;
-        int strip_query_terms;
-        int redirector_bypass;
-        int ignore_unknown_nameservers;
-        int client_pconns;
-        int server_pconns;
-        int error_pconns;
-#if USE_CACHE_DIGESTS
-
-        int digest_generation;
-#endif
-
-        int ie_refresh;
-        int vary_ignore_expire;
-        int pipeline_prefetch;
-        int surrogate_is_remote;
-        int request_entities;
-        int detect_broken_server_pconns;
-        int balance_on_multiple_ip;
-        int relaxed_header_parser;
-        int check_hostnames;
-        int allow_underscore;
-        int via;
-        int emailErrData;
-        int httpd_suppress_version_string;
-        int global_internal_static;
-
-#if FOLLOW_X_FORWARDED_FOR
-        int acl_uses_indirect_client;
-        int delay_pool_uses_indirect_client;
-        int log_uses_indirect_client;
-#if LINUX_NETFILTER
-        int tproxy_uses_indirect_client;
-#endif
-#endif /* FOLLOW_X_FORWARDED_FOR */
-
-        int WIN32_IpAddrChangeMonitor;
-        int memory_cache_first;
-        int memory_cache_disk;
-        int hostStrictVerify;
-        int client_dst_passthru;
-    } onoff;
-
-    int forward_max_tries;
-    int connect_retries;
-
-    class ACL *aclList;
-
-    struct {
-        acl_access *http;
-        acl_access *adapted_http;
-        acl_access *icp;
-        acl_access *miss;
-        acl_access *NeverDirect;
-        acl_access *AlwaysDirect;
-        acl_access *ASlists;
-        acl_access *noCache;
-        acl_access *log;
-#if SQUID_SNMP
-
-        acl_access *snmp;
-#endif
-#if USE_HTTP_VIOLATIONS
-        acl_access *brokenPosts;
-#endif
-        acl_access *redirector;
-        acl_access *reply;
-        acl_address *outgoing_address;
-#if USE_HTCP
-
-        acl_access *htcp;
-        acl_access *htcp_clr;
-#endif
-
-#if USE_SSL
-        acl_access *ssl_bump;
-#endif
-#if FOLLOW_X_FORWARDED_FOR
-        acl_access *followXFF;
-#endif /* FOLLOW_X_FORWARDED_FOR */
-
-#if ICAP_CLIENT
-        acl_access* icap;
-#endif
-    } accessList;
-    acl_deny_info_list *denyInfoList;
-
-    struct {
-        size_t list_width;
-        int list_wrap;
-        char *anon_user;
-        int passive;
-        int epsv_all;
-        int epsv;
-        int eprt;
-        int sanitycheck;
-        int telnet;
-    } Ftp;
-    refresh_t *Refresh;
-
-    struct _cacheSwap {
-        RefCount<SwapDir> *swapDirs;
-        int n_allocated;
-        int n_configured;
-        /// number of disk processes required to support all cache_dirs
-        int n_strands;
-    } cacheSwap;
-    /*
-     * I'm sick of having to keep doing this ..
-     */
-#define INDEXSD(i)   (Config.cacheSwap.swapDirs[(i)].getRaw())
-
-    struct {
-        char *directory;
-        int use_short_names;
-    } icons;
-    char *errorDirectory;
-#if USE_ERR_LOCALES
-    char *errorDefaultLanguage;
-    int errorLogMissingLanguages;
-#endif
-    char *errorStylesheet;
-
-    struct {
-        int onerror;
-    } retry;
-
-    struct {
-        int64_t limit;
-    } MemPools;
-#if USE_DELAY_POOLS
-
-    DelayConfig Delay;
-    ClientDelayConfig ClientDelay;
-#endif
-
-    struct {
-        struct {
-            int average;
-            int min_poll;
-        } dns, udp, tcp;
-    } comm_incoming;
-    int max_open_disk_fds;
-    int uri_whitespace;
-    acl_size_t *rangeOffsetLimit;
-#if MULTICAST_MISS_STREAM
-
-    struct {
-
-        Ip::Address addr;
-        int ttl;
-        unsigned short port;
-        char *encode_key;
-    } mcast_miss;
-#endif
-
-    /// request_header_access and request_header_replace
-    HeaderManglers *request_header_access;
-    /// reply_header_access and reply_header_replace
-    HeaderManglers *reply_header_access;
-    ///request_header_add access list
-    HeaderWithAclList *request_header_add;
-    char *coredump_dir;
-    char *chroot_dir;
-#if USE_CACHE_DIGESTS
-
-    struct {
-        int bits_per_entry;
-        time_t rebuild_period;
-        time_t rewrite_period;
-        size_t swapout_chunk_size;
-        int rebuild_chunk_percentage;
-    } digest;
-#endif
-#if USE_SSL
-
-    struct {
-        int unclean_shutdown;
-        char *ssl_engine;
-    } SSL;
-#endif
-
-    wordlist *ext_methods;
-
-    struct {
-        int high_rptm;
-        int high_pf;
-        size_t high_memory;
-    } warnings;
-    char *store_dir_select_algorithm;
-    int sleep_after_fork;	/* microseconds */
-    time_t minimum_expiry_time;	/* seconds */
-    external_acl *externalAclHelperList;
-
-#if USE_SSL
-
-    struct {
-        char *cert;
-        char *key;
-        int version;
-        char *options;
-        char *cipher;
-        char *cafile;
-        char *capath;
-        char *crlfile;
-        char *flags;
-        acl_access *cert_error;
-        SSL_CTX *sslContext;
-        sslproxy_cert_sign *cert_sign;
-        sslproxy_cert_adapt *cert_adapt;
-    } ssl_client;
-#endif
-
-    char *accept_filter;
-    int umask;
-    int max_filedescriptors;
-    int workers;
-    CpuAffinityMap *cpuAffinityMap;
-
-#if USE_LOADABLE_MODULES
-    wordlist *loadable_module_names;
-#endif
-
-    int client_ip_max_connections;
-
-    struct {
-        int v4_first;       ///< Place IPv4 first in the order of DNS results.
-        ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies.
-    } dns;
-};
-
-SQUIDCEXTERN SquidConfig Config;
-
-struct SquidConfig2 {
-    struct {
-        int enable_purge;
-        int mangle_request_headers;
-    } onoff;
-    uid_t effectiveUserID;
-    gid_t effectiveGroupID;
-};
-
-SQUIDCEXTERN SquidConfig2 Config2;
-
-struct _close_handler {
     PF *handler;
     void *data;
     close_handler *next;
 };
 
-struct _dread_ctrl {
+class dread_ctrl {
+public:
     int fd;
     off_t offset;
     int req_len;
@@ -678,7 +129,8 @@
     void *client_data;
 };
 
-struct _dwrite_q {
+class dwrite_q {
+public:
     off_t file_offset;
     char *buf;
     size_t len;
@@ -695,37 +147,9 @@
     off_t offset;
 };
 
-/* per field statistics */
-
-class HttpHeaderFieldStat
-{
-
-public:
-    HttpHeaderFieldStat() : aliveCount(0), seenCount(0), parsCount(0), errCount(0), repCount(0) {}
-
-    int aliveCount;		/* created but not destroyed (count) */
-    int seenCount;		/* #fields we've seen */
-    int parsCount;		/* #parsing attempts */
-    int errCount;		/* #pasring errors */
-    int repCount;		/* #repetitons */
-};
-
-/* compiled version of HttpHeaderFieldAttrs plus stats */
-#include "SquidString.h"
-
-class HttpHeaderFieldInfo
-{
-
-public:
-    HttpHeaderFieldInfo() : id (HDR_ACCEPT), type (ftInvalid) {}
-
-    http_hdr_type id;
-    String name;
-    field_type type;
-    HttpHeaderFieldStat stat;
-};
-
-struct _http_state_flags {
+
+class http_state_flags {
+public:
     unsigned int proxying:1;
     unsigned int keepalive:1;
     unsigned int only_if_cached:1;
@@ -743,13 +167,15 @@
     unsigned int sentLastChunk:1; ///< do not try to write last-chunk again
 };
 
-struct _domain_ping {
+class domain_ping {
+public:
     char *domain;
     int do_ping;		/* boolean */
     domain_ping *next;
 };
 
-struct _domain_type {
+class domain_type {
+public:
     char *domain;
     peer_t type;
     domain_type *next;
@@ -757,180 +183,26 @@
 
 class PeerDigest;
 
-struct peer {
-    u_int index;
-    char *name;
-    char *host;
-    peer_t type;
-
-    Ip::Address in_addr;
-
-    struct {
-        int pings_sent;
-        int pings_acked;
-        int fetches;
-        int rtt;
-        int ignored_replies;
-        int n_keepalives_sent;
-        int n_keepalives_recv;
-        time_t probe_start;
-        time_t last_query;
-        time_t last_reply;
-        time_t last_connect_failure;
-        time_t last_connect_probe;
-        int logged_state;	/* so we can print dead/revived msgs */
-        int conn_open;		/* current opened connections */
-    } stats;
-
-    struct {
-        int version;
-        int counts[ICP_END+1];
-        unsigned short port;
-    } icp;
-
-#if USE_HTCP
-    struct {
-        double version;
-        int counts[2];
-        unsigned short port;
-    } htcp;
-#endif
-
-    unsigned short http_port;
-    domain_ping *peer_domain;
-    domain_type *typelist;
-    acl_access *access;
-
-    struct {
-        unsigned int proxy_only:1;
-        unsigned int no_query:1;
-        unsigned int background_ping:1;
-        unsigned int no_digest:1;
-        unsigned int default_parent:1;
-        unsigned int roundrobin:1;
-        unsigned int weighted_roundrobin:1;
-        unsigned int mcast_responder:1;
-        unsigned int closest_only:1;
-#if USE_HTCP
-        unsigned int htcp:1;
-        unsigned int htcp_oldsquid:1;
-        unsigned int htcp_no_clr:1;
-        unsigned int htcp_no_purge_clr:1;
-        unsigned int htcp_only_clr:1;
-        unsigned int htcp_forward_clr:1;
-#endif
-        unsigned int no_netdb_exchange:1;
-#if USE_DELAY_POOLS
-        unsigned int no_delay:1;
-#endif
-        unsigned int allow_miss:1;
-        unsigned int carp:1;
-        struct {
-            unsigned int set:1; //If false, whole url is to be used. Overrides others
-            unsigned int scheme:1;
-            unsigned int host:1;
-            unsigned int port:1;
-            unsigned int path:1;
-            unsigned int params:1;
-        } carp_key;
-#if USE_AUTH
-        unsigned int userhash:1;
-#endif
-        unsigned int sourcehash:1;
-        unsigned int originserver:1;
-        unsigned int no_tproxy:1;
-#if PEER_MULTICAST_SIBLINGS
-        unsigned int mcast_siblings:1;
-#endif
-    } options;
-
-    int weight;
-    int basetime;
-
-    struct {
-        double avg_n_members;
-        int n_times_counted;
-        int n_replies_expected;
-        int ttl;
-        int id;
-
-        struct {
-            unsigned int count_event_pending:1;
-            unsigned int counting:1;
-        } flags;
-    } mcast;
-#if USE_CACHE_DIGESTS
-
-    PeerDigest *digest;
-    char *digest_url;
-#endif
-
-    int tcp_up;			/* 0 if a connect() fails */
-
-    Ip::Address addresses[10];
-    int n_addresses;
-    int rr_count;
-    peer *next;
-    int testing_now;
-
-    struct {
-        unsigned int hash;
-        double load_multiplier;
-        double load_factor;	/* normalized weight value */
-    } carp;
-#if USE_AUTH
-    struct {
-        unsigned int hash;
-        double load_multiplier;
-        double load_factor;	/* normalized weight value */
-    } userhash;
-#endif
-    struct {
-        unsigned int hash;
-        double load_multiplier;
-        double load_factor;	/* normalized weight value */
-    } sourcehash;
-
-    char *login;		/* Proxy authorization */
-    time_t connect_timeout;
-    int connect_fail_limit;
-    int max_conn;
-    char *domain;		/* Forced domain */
-#if USE_SSL
-
-    int use_ssl;
-    char *sslcert;
-    char *sslkey;
-    int sslversion;
-    char *ssloptions;
-    char *sslcipher;
-    char *sslcafile;
-    char *sslcapath;
-    char *sslcrlfile;
-    char *sslflags;
-    char *ssldomain;
-    SSL_CTX *sslContext;
-    SSL_SESSION *sslSession;
-#endif
-
-    int front_end_https;
-    int connection_auth;
-};
-
-struct _net_db_name {
+
+class netdbEntry;
+
+class net_db_name {
+public:
     hash_link hash;		/* must be first */
     net_db_name *next;
     netdbEntry *net_db_entry;
 };
 
-struct _net_db_peer {
+class net_db_peer {
+public:
     const char *peername;
     double hops;
     double rtt;
     time_t expires;
 };
 
-struct _netdbEntry {
+class netdbEntry {
+public:
     hash_link hash;		/* must be first */
     char network[MAX_IPSTRLEN];
     int pings_sent;
@@ -946,9 +218,11 @@
     int n_peers;
 };
 
-struct _iostats {
+class iostats {
+public:
+    static const int histSize=16;
 
-    enum { histSize = 16 };
+//    enum { histSize = 16 };
 
     struct {
         int reads;
@@ -961,131 +235,6 @@
     Http, Ftp, Gopher;
 };
 
-struct request_flags {
-    request_flags(): range(0),nocache(0),ims(0),auth(0),cachable(0),hierarchical(0),loopdetect(0),proxy_keepalive(0),proxying(0),refresh(0),redirected(0),need_validation(0),fail_on_validation_err(0),stale_if_hit(0),accelerated(0),ignore_cc(0),intercepted(0),hostVerified(0),spoof_client_ip(0),internal(0),internalclient(0),must_keepalive(0),pinned(0),canRePin(0),chunked_reply(0),stream_error(0),sslPeek(0),sslBumped(0),destinationIPLookedUp_(0) {
-#if USE_HTTP_VIOLATIONS
-        nocache_hack = 0;
-#endif
-#if FOLLOW_X_FORWARDED_FOR
-        done_follow_x_forwarded_for = 0;
-#endif /* FOLLOW_X_FORWARDED_FOR */
-    }
-
-    unsigned int range:1;
-    unsigned int nocache:1;            ///< whether the response to this request may be READ from cache
-    unsigned int ims:1;
-    unsigned int auth:1;
-    unsigned int cachable:1;           ///< whether the response to thie request may be stored in the cache
-    unsigned int hierarchical:1;
-    unsigned int loopdetect:1;
-    unsigned int proxy_keepalive:1;
-unsigned int proxying:
-    1;	/* this should be killed, also in httpstateflags */
-    unsigned int refresh:1;
-    unsigned int redirected:1;
-    unsigned int need_validation:1;
-    unsigned int fail_on_validation_err:1; ///< whether we should fail if validation fails
-    unsigned int stale_if_hit:1; ///< reply is stale if it is a hit
-#if USE_HTTP_VIOLATIONS
-    unsigned int nocache_hack:1;	/* for changing/ignoring no-cache requests */
-#endif
-    unsigned int accelerated:1;
-    unsigned int ignore_cc:1;
-    unsigned int intercepted:1;        ///< intercepted request
-    unsigned int hostVerified:1;       ///< whether the Host: header passed verification
-    unsigned int spoof_client_ip:1;  /**< spoof client ip if possible */
-    unsigned int internal:1;
-    unsigned int internalclient:1;
-    unsigned int must_keepalive:1;
-    unsigned int connection_auth:1; /** Request wants connection oriented auth */
-    unsigned int connection_auth_disabled:1; /** Connection oriented auth can not be supported */
-    unsigned int connection_proxy_auth:1; /** Request wants connection oriented auth */
-    unsigned int pinned:1;      /* Request sent on a pinned connection */
-    unsigned int canRePin:1; ///< OK to reopen a failed pinned connection
-    unsigned int auth_sent:1;   /* Authentication forwarded */
-    unsigned int no_direct:1;	/* Deny direct forwarding unless overriden by always_direct. Used in accelerator mode */
-    unsigned int chunked_reply:1; /**< Reply with chunked transfer encoding */
-    unsigned int stream_error:1; /**< Whether stream error has occured */
-    unsigned int sslPeek:1; ///< internal ssl-bump request to get server cert
-    unsigned int sslBumped:1; /**< ssl-bumped request*/
-
-    // When adding new flags, please update cloneAdaptationImmune() as needed.
-
-    bool resetTCP() const;
-    void setResetTCP();
-    void clearResetTCP();
-    void destinationIPLookupCompleted();
-    bool destinationIPLookedUp() const;
-
-    // returns a partial copy of the flags that includes only those flags
-    // that are safe for a related (e.g., ICAP-adapted) request to inherit
-    request_flags cloneAdaptationImmune() const;
-
-#if FOLLOW_X_FORWARDED_FOR
-    unsigned int done_follow_x_forwarded_for;
-#endif /* FOLLOW_X_FORWARDED_FOR */
-private:
-
-    unsigned int reset_tcp:1;
-    unsigned int destinationIPLookedUp_:1;
-};
-
-struct _cachemgr_passwd {
-    char *passwd;
-    wordlist *actions;
-    cachemgr_passwd *next;
-};
-
-struct _refresh_t {
-    const char *pattern;
-    regex_t compiled_pattern;
-    time_t min;
-    double pct;
-    time_t max;
-    refresh_t *next;
-
-    struct {
-        unsigned int icase:1;
-        unsigned int refresh_ims:1;
-        unsigned int store_stale:1;
-#if USE_HTTP_VIOLATIONS
-        unsigned int override_expire:1;
-        unsigned int override_lastmod:1;
-        unsigned int reload_into_ims:1;
-        unsigned int ignore_reload:1;
-        unsigned int ignore_no_cache:1;
-        unsigned int ignore_no_store:1;
-        unsigned int ignore_must_revalidate:1;
-        unsigned int ignore_private:1;
-        unsigned int ignore_auth:1;
-#endif
-    } flags;
-    int max_stale;
-};
-
-struct _CacheDigest {
-    /* public, read-only */
-    char *mask;			/* bit mask */
-    int mask_size;		/* mask size in bytes */
-    int capacity;		/* expected maximum for .count, not a hard limit */
-    int bits_per_entry;		/* number of bits allocated for each entry from capacity */
-    int count;			/* number of digested entries */
-    int del_count;		/* number of deletions performed so far */
-};
-
-struct _store_rebuild_data {
-    int objcount;		/* # objects successfully reloaded */
-    int expcount;		/* # objects expired */
-    int scancount;		/* # entries scanned or read from state file */
-    int clashcount;		/* # swapfile clashes avoided */
-    int dupcount;		/* # duplicates purged */
-    int cancelcount;		/* # SWAP_LOG_DEL objects purged */
-    int invalid;		/* # bad lines */
-    int badflags;		/* # bad e->flags */
-    int bad_log_op;
-    int zero_object_sz;
-};
-
 #if USE_SSL
 struct _sslproxy_cert_sign {
     int alg;
@@ -1101,17 +250,4 @@
 };
 #endif
 
-class Logfile;
-
-#include "format/Format.h"
-#include "log/Formats.h"
-struct _customlog {
-    char *filename;
-    ACLList *aclList;
-    Format::Format *logFormat;
-    Logfile *logfile;
-    customlog *next;
-    Log::Format::log_type type;
-};
-
 #endif /* SQUID_STRUCTS_H */

=== modified file 'src/tests/stub_cache_cf.cc'
--- src/tests/stub_cache_cf.cc	2012-09-01 14:38:36 +0000
+++ src/tests/stub_cache_cf.cc	2012-09-04 11:13:13 +0000
@@ -33,6 +33,7 @@
 #include "squid.h"
 #include "ConfigParser.h"
 #include "wordlist.h"
+#include "YesNoNone.h"
 
 #define STUB_API "cache_cf.cc"
 #include "tests/STUB.h"

=== modified file 'src/tests/stub_libcomm.cc'
--- src/tests/stub_libcomm.cc	2012-08-10 00:12:23 +0000
+++ src/tests/stub_libcomm.cc	2012-09-04 14:38:44 +0000
@@ -17,8 +17,8 @@
 Comm::Connection::~Connection() STUB
 Comm::ConnectionPointer Comm::Connection::copyDetails() const STUB_RETVAL(NULL)
 void Comm::Connection::close() STUB
-peer * Comm::Connection::getPeer() const STUB_RETVAL(NULL)
-void Comm::Connection::setPeer(peer * p) STUB
+CachePeer * Comm::Connection::getPeer() const STUB_RETVAL(NULL)
+void Comm::Connection::setPeer(CachePeer * p) STUB
 
 #include "comm/ConnOpener.h"
 CBDATA_NAMESPACED_CLASS_INIT(Comm, ConnOpener);

=== modified file 'src/tests/stub_libicmp.cc'
--- src/tests/stub_libicmp.cc	2012-01-20 18:55:04 +0000
+++ src/tests/stub_libicmp.cc	2012-09-04 14:38:44 +0000
@@ -22,10 +22,10 @@
 void netdbFreeMemory(void) STUB
 int netdbHostHops(const char *host) STUB_RETVAL(-1)
 int netdbHostRtt(const char *host) STUB_RETVAL(-1)
-void netdbUpdatePeer(HttpRequest *, peer * e, int rtt, int hops) STUB
+void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops) STUB
 void netdbDeleteAddrNetwork(Ip::Address &addr) STUB
 void netdbBinaryExchange(StoreEntry *) STUB
 void netdbExchangeStart(void *) STUB
-void netdbExchangeUpdatePeer(Ip::Address &, peer *, double, double) STUB
-peer *netdbClosestParent(HttpRequest *) STUB_RETVAL(NULL)
+void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double) STUB
+CachePeer *netdbClosestParent(HttpRequest *) STUB_RETVAL(NULL)
 void netdbHostData(const char *host, int *samp, int *rtt, int *hops) STUB

=== modified file 'src/tests/stub_store.cc'
--- src/tests/stub_store.cc	2012-08-28 13:00:30 +0000
+++ src/tests/stub_store.cc	2012-09-10 12:49:35 +0000
@@ -1,4 +1,5 @@
 #include "squid.h"
+#include "RequestFlags.h"
 
 #define STUB_API "store.cc"
 #include "tests/STUB.h"
@@ -115,7 +116,7 @@
 SQUIDCEXTERN StoreEntry *storeGetPublic(const char *uri, const HttpRequestMethod& method) STUB_RETVAL(NULL)
 SQUIDCEXTERN StoreEntry *storeGetPublicByRequest(HttpRequest * request) STUB_RETVAL(NULL)
 SQUIDCEXTERN StoreEntry *storeGetPublicByRequestMethod(HttpRequest * request, const HttpRequestMethod& method) STUB_RETVAL(NULL)
-SQUIDCEXTERN StoreEntry *storeCreateEntry(const char *, const char *, request_flags, const HttpRequestMethod&) STUB_RETVAL(NULL)
+extern StoreEntry *storeCreateEntry(const char *, const char *, const RequestFlags &, const HttpRequestMethod&) STUB_RETVAL(NULL)
 SQUIDCEXTERN void storeInit(void) STUB
 SQUIDCEXTERN void storeConfigure(void) STUB
 SQUIDCEXTERN void storeFreeMemory(void) STUB

=== modified file 'src/tests/stub_store_rebuild.cc'
--- src/tests/stub_store_rebuild.cc	2012-09-01 14:38:36 +0000
+++ src/tests/stub_store_rebuild.cc	2012-09-06 14:22:03 +0000
@@ -32,15 +32,16 @@
 
 #include "squid.h"
 #include "MemBuf.h"
+#include "store_rebuild.h"
 
 #define STUB_API "stub_store_rebuild.cc"
 #include "tests/STUB.h"
 
 void storeRebuildProgress(int sd_index, int total, int sofar) STUB
-void storeRebuildComplete(struct _store_rebuild_data *dc) STUB_NOP
-bool storeRebuildLoadEntry(int, int, MemBuf&, _store_rebuild_data&)
+void storeRebuildComplete(StoreRebuildData *dc) STUB_NOP
+bool storeRebuildLoadEntry(int, int, MemBuf&, StoreRebuildData&)
 {
     return false;
 }
-bool storeRebuildKeepEntry(const StoreEntry &tmpe, const cache_key *key, struct _store_rebuild_data &counts) STUB_RETVAL(false)
-bool storeRebuildParseEntry(MemBuf &, StoreEntry &, cache_key *, struct _store_rebuild_data &, uint64_t) STUB_RETVAL(false)
+bool storeRebuildKeepEntry(const StoreEntry &tmpe, const cache_key *key, StoreRebuildData &counts) STUB_RETVAL(false)
+bool storeRebuildParseEntry(MemBuf &, StoreEntry &, cache_key *, StoreRebuildData &, uint64_t) STUB_RETVAL(false)

=== modified file 'src/tests/testCoss.cc'
--- src/tests/testCoss.cc	2012-08-14 11:53:07 +0000
+++ src/tests/testCoss.cc	2012-09-13 16:20:41 +0000
@@ -9,8 +9,10 @@
 #include "MemObject.h"
 #include "HttpHeader.h"
 #include "HttpReply.h"
+#include "RequestFlags.h"
 #include "StoreFileSystem.h"
 #include "testStoreSupport.h"
+#include "SquidConfig.h"
 
 #if HAVE_STDEXCEPT
 #include <stdexcept>
@@ -187,8 +189,8 @@
     /* add an entry */
     {
         /* Create "vary" base object */
-        request_flags flags;
-        flags.cachable = 1;
+        RequestFlags flags;
+        flags.setCachable();
         StoreEntry *pe = storeCreateEntry("dummy url", "dummy log url", flags, METHOD_GET);
         HttpReply *rep = (HttpReply *) pe->getReply();	// bypass const
         rep->setHeaders(HTTP_OK, "dummy test object", "x-squid-internal/test", -1, -1, squid_curtime + 100000);

=== modified file 'src/tests/testHttpParser.cc'
--- src/tests/testHttpParser.cc	2012-08-28 13:00:30 +0000
+++ src/tests/testHttpParser.cc	2012-09-04 09:10:20 +0000
@@ -8,6 +8,7 @@
 #include "Mem.h"
 #include "MemBuf.h"
 #include "structs.h"
+#include "SquidConfig.h"
 
 CPPUNIT_TEST_SUITE_REGISTRATION( testHttpParser );
 

=== modified file 'src/tests/testHttpReply.cc'
--- src/tests/testHttpReply.cc	2012-08-31 16:57:39 +0000
+++ src/tests/testHttpReply.cc	2012-09-04 09:10:20 +0000
@@ -7,10 +7,11 @@
 #include "HttpReply.h"
 #include "Mem.h"
 #include "mime_header.h"
+#include "SquidConfig.h"
 
 CPPUNIT_TEST_SUITE_REGISTRATION( testHttpReply );
 
-struct SquidConfig Config;
+class SquidConfig Config;
 
 /* stub functions to link successfully */
 

=== modified file 'src/tests/testNull.cc'
--- src/tests/testNull.cc	2012-08-14 11:53:07 +0000
+++ src/tests/testNull.cc	2012-09-13 16:20:41 +0000
@@ -9,6 +9,8 @@
 #include "MemObject.h"
 #include "HttpHeader.h"
 #include "HttpReply.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "StoreFileSystem.h"
 #include "testStoreSupport.h"
 
@@ -158,8 +160,8 @@
     /* add an entry */
     {
         /* Create "vary" base object */
-        request_flags flags;
-        flags.cachable = 1;
+        RequestFlags flags;
+        flags.setCachable();
         StoreEntry *pe = storeCreateEntry("dummy url", "dummy log url", flags, METHOD_GET);
         /* We are allowed to do this typecast */
         HttpReply *rep = (HttpReply *) pe->getReply();	// bypass const

=== modified file 'src/tests/testRock.cc'
--- src/tests/testRock.cc	2012-08-31 16:57:39 +0000
+++ src/tests/testRock.cc	2012-09-13 16:20:41 +0000
@@ -8,6 +8,8 @@
 #include "HttpReply.h"
 #include "Mem.h"
 #include "MemObject.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "StoreFileSystem.h"
 #include "StoreSearch.h"
@@ -162,8 +164,8 @@
 StoreEntry *
 testRock::createEntry(const int i)
 {
-    request_flags flags;
-    flags.cachable = 1;
+    RequestFlags flags;
+    flags.setCachable();
     char url[64];
     snprintf(url, sizeof(url), "dummy url %i", i);
     url[sizeof(url) - 1] = '\0';

=== modified file 'src/tests/testStoreController.cc'
--- src/tests/testStoreController.cc	2012-08-28 13:00:30 +0000
+++ src/tests/testStoreController.cc	2012-09-04 09:10:20 +0000
@@ -6,6 +6,7 @@
 #include "SwapDir.h"
 #include "TestSwapDir.h"
 #include "Mem.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 #include "StoreSearch.h"
 

=== modified file 'src/tests/testStoreHashIndex.cc'
--- src/tests/testStoreHashIndex.cc	2012-08-28 13:00:30 +0000
+++ src/tests/testStoreHashIndex.cc	2012-09-04 09:10:20 +0000
@@ -8,6 +8,7 @@
 #include "StoreHashIndex.h"
 #include "Mem.h"
 #include "StoreSearch.h"
+#include "SquidConfig.h"
 #include "SquidTime.h"
 
 CPPUNIT_TEST_SUITE_REGISTRATION( testStoreHashIndex );

=== modified file 'src/tests/testUfs.cc'
--- src/tests/testUfs.cc	2012-08-31 16:57:39 +0000
+++ src/tests/testUfs.cc	2012-09-13 16:20:41 +0000
@@ -8,6 +8,8 @@
 #include "HttpReply.h"
 #include "Mem.h"
 #include "MemObject.h"
+#include "RequestFlags.h"
+#include "SquidConfig.h"
 #include "Store.h"
 #include "SwapDir.h"
 #include "testStoreSupport.h"
@@ -139,8 +141,8 @@
     /* add an entry */
     {
         /* Create "vary" base object */
-        request_flags flags;
-        flags.cachable = 1;
+        RequestFlags flags;
+        flags.setCachable();
         StoreEntry *pe = storeCreateEntry("dummy url", "dummy log url", flags, METHOD_GET);
         HttpReply *rep = (HttpReply *) pe->getReply();	// bypass const
         rep->setHeaders(HTTP_OK, "dummy test object", "x-squid-internal/test", -1, -1, squid_curtime + 100000);

=== modified file 'src/tools.cc'
--- src/tools.cc	2012-09-01 14:38:36 +0000
+++ src/tools.cc	2012-09-04 09:10:20 +0000
@@ -42,6 +42,7 @@
 #include "ip/QosConfig.h"
 #include "MemBuf.h"
 #include "anyp/PortCfg.h"
+#include "SquidConfig.h"
 #include "SquidMath.h"
 #include "SquidTime.h"
 #include "ipc/Kids.h"

=== modified file 'src/tunnel.cc'
--- src/tunnel.cc	2012-09-01 14:38:36 +0000
+++ src/tunnel.cc	2012-09-13 11:40:32 +0000
@@ -32,23 +32,24 @@
  */
 
 #include "squid.h"
-#include "errorpage.h"
-#include "HttpRequest.h"
-#include "fde.h"
+#include "acl/FilledChecklist.h"
 #include "Array.h"
+#include "CachePeer.h"
+#include "client_side_request.h"
+#include "client_side.h"
 #include "comm.h"
 #include "comm/Connection.h"
 #include "comm/ConnOpener.h"
 #include "comm/Write.h"
-#include "client_side_request.h"
-#include "acl/FilledChecklist.h"
-#include "client_side.h"
+#include "errorpage.h"
+#include "fde.h"
+#include "http.h"
+#include "HttpRequest.h"
 #include "MemBuf.h"
-#include "http.h"
 #include "PeerSelectState.h"
+#include "SquidConfig.h"
 #include "StatCounters.h"
 #include "tools.h"
-
 #if USE_DELAY_POOLS
 #include "DelayId.h"
 #endif
@@ -530,7 +531,7 @@
     TunnelStateData *tunnelState = (TunnelStateData *)data;
     debugs(26, 3, HERE << server << ", tunnelState=" << tunnelState);
 
-    if (tunnelState->request && (tunnelState->request->flags.spoof_client_ip || tunnelState->request->flags.intercepted))
+    if (tunnelState->request && (tunnelState->request->flags.spoofClientIp() || tunnelState->request->flags.intercepted()))
         tunnelStartShoveling(tunnelState); // ssl-bumped connection, be quiet
     else {
         AsyncCall::Pointer call = commCbCall(5,5, "tunnelConnectedWriteDone",
@@ -604,13 +605,16 @@
     debugs(26, 4, HERE << "determine post-connect handling pathway.");
     if (conn->getPeer()) {
         tunnelState->request->peer_login = conn->getPeer()->login;
-        tunnelState->request->flags.proxying = (conn->getPeer()->options.originserver?0:1);
+        if (conn->getPeer()->options.originserver)
+            tunnelState->request->flags.setProxying();
+        else
+            tunnelState->request->flags.clearProxying();
     } else {
         tunnelState->request->peer_login = NULL;
-        tunnelState->request->flags.proxying = 0;
+        tunnelState->request->flags.clearProxying();
     }
 
-    if (tunnelState->request->flags.proxying)
+    if (tunnelState->request->flags.proxying())
         tunnelRelayConnectRequest(conn, tunnelState);
     else {
         tunnelConnected(conn, tunnelState);
@@ -694,7 +698,7 @@
     http_state_flags flags;
     debugs(26, 3, HERE << srv << ", tunnelState=" << tunnelState);
     memset(&flags, '\0', sizeof(flags));
-    flags.proxying = tunnelState->request->flags.proxying;
+    flags.proxying = tunnelState->request->flags.proxying();
     MemBuf mb;
     mb.init();
     mb.Printf("CONNECT %s HTTP/1.1\r\n", tunnelState->url);

=== modified file 'src/typedefs.h'
--- src/typedefs.h	2012-09-03 09:02:20 +0000
+++ src/typedefs.h	2012-09-09 19:41:47 +0000
@@ -45,48 +45,8 @@
     size_t kb;
 } kb_t;
 
-typedef struct _close_handler close_handler;
-
-typedef struct _dread_ctrl dread_ctrl;
-
-typedef struct _dwrite_q dwrite_q;
-
-typedef struct _HttpHeaderFieldAttrs HttpHeaderFieldAttrs;
-
-typedef struct _domain_ping domain_ping;
-
-typedef struct _domain_type domain_type;
-
-typedef struct _DigestFetchState DigestFetchState;
-
-typedef struct _net_db_name net_db_name;
-
-typedef struct _net_db_peer net_db_peer;
-
-typedef struct _netdbEntry netdbEntry;
-
-typedef struct _icp_common_t icp_common_t;
-
-typedef struct _iostats iostats;
-
-typedef struct _http_state_flags http_state_flags;
-
-typedef struct _header_mangler header_mangler;
-
-typedef struct _cachemgr_passwd cachemgr_passwd;
-
-typedef struct _refresh_t refresh_t;
-
 typedef struct _CommWriteStateData CommWriteStateData;
 
-typedef struct _storeSwapLogData storeSwapLogData;
-
-typedef struct _CacheDigest CacheDigest;
-
-typedef struct _Version Version;
-
-typedef struct _customlog customlog;
-
 #if USE_SSL
 typedef struct _sslproxy_cert_sign sslproxy_cert_sign;
 
@@ -97,8 +57,6 @@
 #include "snmp_vars.h"
 #include "cache_snmp.h"
 typedef variable_list *(oid_ParseFn) (variable_list *, snint *);
-
-typedef struct _snmp_request_t snmp_request_t;
 #endif
 
 typedef void FREE(void *);
@@ -120,7 +78,8 @@
 typedef void IDCB(const char *ident, void *data);
 
 #include "anyp/ProtocolType.h"
-typedef void IRCB(struct peer *, peer_t, AnyP::ProtocolType, void *, void *data);
+class CachePeer;
+typedef void IRCB(CachePeer *, peer_t, AnyP::ProtocolType, void *, void *data);
 
 typedef void RH(void *data, char *);
 /* in wordlist.h */

=== modified file 'src/url.cc'
--- src/url.cc	2012-09-01 14:38:36 +0000
+++ src/url.cc	2012-09-04 09:10:20 +0000
@@ -35,6 +35,7 @@
 #include "globals.h"
 #include "HttpRequest.h"
 #include "rfc1738.h"
+#include "SquidConfig.h"
 #include "SquidString.h"
 #include "URL.h"
 #include "URLScheme.h"

=== modified file 'src/urn.cc'
--- src/urn.cc	2012-09-01 14:38:36 +0000
+++ src/urn.cc	2012-09-17 13:31:37 +0000
@@ -1,4 +1,3 @@
-
 /*
  * DEBUG: section 52    URN Parsing
  * AUTHOR: Kostas Anagnostakis
@@ -40,6 +39,7 @@
 #include "icmp/net_db.h"
 #include "MemBuf.h"
 #include "mime_header.h"
+#include "RequestFlags.h"
 #include "SquidTime.h"
 #include "Store.h"
 #include "StoreClient.h"
@@ -256,7 +256,7 @@
     urlres_e = newEntry;
 
     if (urlres_e->isNull()) {
-        urlres_e = storeCreateEntry(urlres, urlres, request_flags(), METHOD_GET);
+        urlres_e = storeCreateEntry(urlres, urlres, RequestFlags(), METHOD_GET);
         sc = storeClientListAdd(urlres_e, this);
         FwdState::fwdStart(Comm::ConnectionPointer(), urlres_e, urlres_r);
     } else {

=== modified file 'src/urn.h'
--- src/urn.h	2012-08-29 14:39:43 +0000
+++ src/urn.h	2012-09-17 13:31:37 +0000
@@ -1,6 +1,6 @@
 /*
- * DEBUG: section 
- * AUTHOR: 
+ * DEBUG: section 52    URN Parsing
+ * AUTHOR: Kostas Anagnostakis
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  * ----------------------------------------------------------

=== modified file 'src/wccp.cc'
--- src/wccp.cc	2012-09-01 14:38:36 +0000
+++ src/wccp.cc	2012-09-04 09:10:20 +0000
@@ -37,6 +37,7 @@
 #include "comm/Connection.h"
 #include "comm/Loops.h"
 #include "event.h"
+#include "SquidConfig.h"
 #include "structs.h"
 
 #define WCCP_PORT 2048

=== modified file 'src/whois.cc'
--- src/whois.cc	2012-09-01 14:38:36 +0000
+++ src/whois.cc	2012-09-04 09:10:20 +0000
@@ -39,6 +39,7 @@
 #include "HttpRequest.h"
 #include "HttpRequest.h"
 #include "forward.h"
+#include "SquidConfig.h"
 #include "StatCounters.h"
 #include "Store.h"
 #include "tools.h"

# Begin bundle
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
Hla/A6AnF5ISBCa3nwzElOITeZ+b5gu6A2FAmw2JqE0OrhHxlNFMMJgb5y9EgPv+70eAZ+z15PiP
5FqeSAxYgVPYuQFK0LTVVfgwo2Wapvwmw4flxhZqkoXOYosVOE2OVHHiRKUIFail7EpH621oiWNm
w/etTClBTJ/OpwToiCFzZs6Nr11A5jzQnImsd3q0ZS4jzOTay16YrDBscZLKWKimSZQYilCeYvd5
1hhqWi6rphs0UXdP4/NGhsuuyktI1eLHM2EVVykqPsj19wayGr1umrHbrrxu86UXeOHqiWml0tk2
rhNR5WT4s3Vq4j100cZY5WSdasL7umHxtw4cKOHsRhnPCSirGUqF2Wij/P9Yjnd76u+UtHKlNIv2
3etPnbd0us9ZapqqOGbK84oofS2GX0566bMNnmXDY+LvG7d46Mm7Vh08k5YbM6umjRNw1XcNEqnh
PpKLVdN21bSutysmu1VVWZZUcsF3vvTi7jWm3jtdh5lh44aPFGx2o3c89znr1qsw3aNWHXCV3HDx
tZ32zq4iIH9YiHP5Q/2zVfTtor2mawomk5bO3jlez7iEN3akkt2XjZZtqny2csPVk3JhVooVZqlJ
h8z9/c8Oo4uq7dJNlko5bPe2jRoy6eOuvFXxG+na/Sr02TceJetK+o6WbNSySqblbxJJ/aIh8Xcv
FGVF2qjpSjdqycJMNG7XphV+kIIiOnz3fGzpynHaUVcHrt54uuvd9MpJqqPSrZhJ2hZu1aLtWzV4
qm2UUXZZYd98OWtuKMt+CrVVZ4u7+k013r44VScNWF3cLKOv1xEQDL18jZ2lnVVVJ809etd8tnkR
A+O2zyaizhRNRs1fI3rhlN8eJtWrFJPFMOmrfRZPRq6i97G7Vhu3YUanxVlNqu1a77OmGzRpo+oh
ByYt2OCYOnBkob0ao4pgibNGRvdEK8xNOl2q9mqq3mU3Thdy1aLulnSpNNwu+vq54kum4X19UWXe
OVl+PGXbRxx0oX8YVZTcrcpqLOnjhw2bSapubO3D/FsrgGn2nRo7feVbuqab6Lt8qWukZId8wleR
hhgBEVBY44+AW6wg+gs4MIIgWYGewhecGtk5M6O98hJzqmJzON9JkiCXgLNkJm5xXQUZPnYAbfLj
IzCDHqnQ5uy72whepB0T8K/L5QD2+RKXA58j8D5Gz0HwPep8AkRNE/2v2tmWLFEo5UcsNlnWjVo2
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
FCH86LFOBogsA2SaR/3i7kinChIan3vf4A==
