# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kinkie@squid-cache.org-20120918142358-xpf8toe2rnr7nm36
# target_branch: ../trunk/
# testament_sha1: 3a929eceaada48c3f8451ac7a8832700a6e48388
# timestamp: 2012-09-18 16:32:18 +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-18 14:06:31 +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
@@ -48,6 +49,7 @@
 /* forward decls */
 class HttpReply;
 class HttpRequest;
+class CustomLog;
 
 class AccessLogEntry: public RefCountable
 {
@@ -274,7 +276,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-18 12:54:44 +0000
@@ -1,3 +1,5 @@
+#ifndef SQUID_CACHEDIGEST_H_
+#define SQUID_CACHEDIGEST_H_
 /*
  * DEBUG: section 70    Cache Digest
  * AUTHOR: Alex Rousskov
@@ -30,13 +32,24 @@
  *
  */
 
-#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-18 14:06:31 +0000
@@ -48,6 +48,9 @@
  */
 
 class HttpRequest;
+namespace Mgr {
+class ActionPasswordList;
+} //namespace Mgr
 /**
  \ingroup CacheManagerAPI
  * a CacheManager - the menu system for interacting with squid.
@@ -83,7 +86,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(Mgr::ActionPasswordList *, const char *);
 
     void registerProfile(const Mgr::ActionProfilePointer &profile);
 

=== added file 'src/CachePeer.h'
--- src/CachePeer.h	1970-01-01 00:00:00 +0000
+++ src/CachePeer.h	2012-09-18 12:54:44 +0000
@@ -0,0 +1,207 @@
+#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/ConfigParser.cc'
--- src/ConfigParser.cc	2012-09-01 14:38:36 +0000
+++ src/ConfigParser.cc	2012-09-17 15:12:01 +0000
@@ -35,6 +35,7 @@
 #include "cache_cf.h"
 #include "ConfigParser.h"
 #include "Debug.h"
+#include "fatal.h"
 #include "globals.h"
 
 void

=== 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/ExternalACL.h'
--- src/ExternalACL.h	2012-09-01 14:38:36 +0000
+++ src/ExternalACL.h	2012-09-18 14:06:31 +0000
@@ -34,6 +34,8 @@
 
 #include "acl/Checklist.h"
 
+class external_acl;
+
 /** \todo CLEANUP: kill this typedef. */
 typedef struct _external_acl_data external_acl_data;
 

=== modified file 'src/ExternalACLEntry.h'
--- src/ExternalACLEntry.h	2012-09-01 14:38:36 +0000
+++ src/ExternalACLEntry.h	2012-09-18 14:06:31 +0000
@@ -45,6 +45,7 @@
 #include "acl/Acl.h"
 #include "cbdata.h"
 
+class external_acl;
 /******************************************************************
  * ExternalACLEntryData
  * Core data that ExternalACLEntry manages.

=== 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-18 12:54:44 +0000
@@ -178,7 +178,9 @@
     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-18 14:23:58 +0000
@@ -0,0 +1,47 @@
+#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-18 14:23:58 +0000
@@ -0,0 +1,45 @@
+#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;      /* number of fields we've seen */
+    int parsCount;      /* number of parsing attempts */
+    int errCount;       /* number of pasring errors */
+    int repCount;       /* number of 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-18 14:23:58 +0000
@@ -19,11 +19,12 @@
 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 +95,10 @@
 
 extern int httpHeaderParseOffset(const char *start, int64_t * off);
 
+class HttpHeader;
 class HttpHeaderFieldInfo;
+class HttpRequest;
 class String;
-class HttpHeader;
-class HttpRequest;
 
 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-18 12:37:07 +0000
@@ -76,6 +76,7 @@
     icp_opcode getOpCode() const;
 #endif
 };
+typedef struct _icp_common_t icp_common_t;
 
 #ifdef __cplusplus
 

=== added file 'src/IoStats.h'
--- src/IoStats.h	1970-01-01 00:00:00 +0000
+++ src/IoStats.h	2012-09-18 12:54:44 +0000
@@ -0,0 +1,48 @@
+#ifndef SQUID_IOSTATS_H_
+#define SQUID_IOSTATS_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 IoStats
+{
+public:
+    static const int histSize=16;
+
+    struct {
+        int reads;
+        int reads_deferred;
+        int read_hist[histSize];
+        int writes;
+        int write_hist[histSize];
+    }
+
+    Http, Ftp, Gopher;
+};
+
+#endif /* SQUID_IOSTATS_H_ */

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2012-09-01 14:24:50 +0000
+++ src/Makefile.am	2012-09-18 14:06:31 +0000
@@ -258,6 +258,7 @@
 	CommCalls.h \
 	DescriptorSet.cc \
 	DescriptorSet.h \
+	SquidConfig.h \
 	SquidConfig.cc
 
 squid_SOURCES = \
@@ -268,10 +269,14 @@
 	AsyncEngine.h \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	CacheDigest.h \
 	CacheDigest.cc \
 	cache_manager.cc \
+	CachePeer.h \
 	CacheManager.h \
 	carp.h \
 	carp.cc \
@@ -362,6 +367,7 @@
 	HttpStatusCode.h \
 	HttpStatusLine.cc \
 	HttpStatusLine.h \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -377,6 +383,7 @@
 	HttpHeader.cc \
 	HttpHeaderMask.h \
 	HttpHeaderRange.h \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpBody.h \
@@ -388,6 +395,8 @@
 	HttpParser.h \
 	HttpReply.cc \
 	HttpReply.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequest.h \
 	HttpRequestMethod.cc \
@@ -457,6 +466,7 @@
 	SquidMath.h \
 	SquidMath.cc \
 	SquidNew.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -1106,6 +1116,7 @@
 	ETag.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1119,6 +1130,7 @@
 	HttpHeader.h \
 	HttpHeader.cc \
 	HttpHeaderMask.h \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpControlMsg.h \
@@ -1131,6 +1143,8 @@
 	HttpStatusLine.h \
 	Mem.h \
 	mem.cc \
+	RegexList.h \
+	RegexList.cc \
 	MemBuf.cc \
 	MemBuf.h \
 	mime_header.h \
@@ -1145,6 +1159,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 +1222,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 +1270,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 +1367,8 @@
 	debug.cc \
 	HttpParser.cc \
 	HttpParser.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	Mem.h \
@@ -1365,6 +1385,9 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	CacheDigest.h \
 	CacheDigest.cc \
@@ -1420,8 +1443,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1473,6 +1498,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.h \
 	SquidMath.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -1593,6 +1619,7 @@
 	filemap.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1600,6 +1627,7 @@
 	HttpHdrSc.cc \
 	HttpHdrScTarget.cc \
 	HttpHdrRange.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -1622,6 +1650,8 @@
 	refresh.h \
 	refresh.cc \
 	RemovalPolicy.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	StatCounters.h \
 	StatCounters.cc \
 	StatHist.h \
@@ -1653,6 +1683,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 +1779,9 @@
 	CacheDigest.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	cache_manager.cc \
 	carp.h \
@@ -1806,8 +1840,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -1819,6 +1855,8 @@
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -1867,6 +1905,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.cc \
 	SquidMath.h \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -1981,6 +2020,9 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	carp.h \
 	carp.cc \
@@ -2038,8 +2080,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2051,6 +2095,8 @@
 	HttpParser.cc \
 	HttpParser.h \
 	HttpReply.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	HttpStatusLine.cc \
@@ -2097,6 +2143,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.h \
 	SquidMath.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -2209,6 +2256,9 @@
 	BodyPipe.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	cache_manager.cc \
 	CacheDigest.h \
@@ -2265,6 +2315,7 @@
 	http.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2274,12 +2325,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 \
@@ -2326,6 +2380,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.h \
 	SquidMath.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -2440,6 +2495,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 +2529,8 @@
 	$(ACL_REGISTRATION_SOURCES) \
 	HttpParser.cc \
 	HttpParser.h \
+	RequestFlags.h \
+	RequestFlags.cc \
 	HttpRequest.cc \
 	HttpRequestMethod.cc \
 	Mem.h \
@@ -2492,6 +2550,9 @@
 	cache_manager.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	debug.cc \
 	CacheDigest.h \
@@ -2544,8 +2605,10 @@
 	HttpBody.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2597,6 +2660,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.h \
 	SquidMath.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -2712,6 +2776,7 @@
 	EventLoop.cc \
 	FileMap.h \
 	filemap.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -2719,12 +2784,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 +2837,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 +2936,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 +3013,8 @@
 	HttpStatusLine.cc \
 	int.h \
 	int.cc \
+	RequestFlags.h \
+	RequestFlags.cc \
 	SquidList.h \
 	SquidList.cc \
 	MemObject.cc \
@@ -2980,6 +3052,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 +3064,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3001,6 +3075,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3090,6 +3165,7 @@
 	fd.cc \
 	FileMap.h \
 	filemap.cc \
+	HttpHeaderFieldStat.h \
 	HttpBody.h \
 	HttpBody.cc \
 	HttpHdrCc.cc \
@@ -3099,6 +3175,7 @@
 	HttpHdrScTarget.cc \
 	HttpHeader.h \
 	HttpHeader.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpMsg.cc \
@@ -3117,6 +3194,8 @@
 	Packer.cc \
 	Parsing.cc \
 	RemovalPolicy.cc \
+	RequestFlags.cc \
+	RequestFlags.h \
 	StatCounters.h \
 	StatCounters.cc \
 	StatHist.h \
@@ -3152,6 +3231,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 +3368,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 +3379,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3308,6 +3390,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3439,6 +3522,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 +3535,7 @@
 	stmem.cc \
 	mime.h \
 	tests/stub_mime.cc \
+	HttpHeaderFieldInfo.h \
 	HttpHeaderTools.h \
 	HttpHeaderTools.cc \
 	HttpHeader.h \
@@ -3461,6 +3546,7 @@
 	MemBuf.cc \
 	HttpHdrContRange.cc \
 	Packer.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3530,6 +3616,9 @@
 	BodyPipe.cc \
 	cache_cf.h \
 	AuthReg.h \
+	YesNoNone.h \
+	YesNoNone.cc \
+	RefreshPattern.h \
 	cache_cf.cc \
 	cache_manager.cc \
 	CacheDigest.h \
@@ -3585,6 +3674,7 @@
 	http.cc \
 	HttpBody.h \
 	HttpBody.cc \
+	HttpHeaderFieldStat.h \
 	HttpHdrCc.h \
 	HttpHdrCc.cc \
 	HttpHdrCc.cci \
@@ -3594,12 +3684,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 \
@@ -3646,6 +3739,7 @@
 	$(SNMP_SOURCE) \
 	SquidMath.h \
 	SquidMath.cc \
+	IoStats.h \
 	stat.h \
 	stat.cc \
 	StatCounters.h \
@@ -3681,8 +3775,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 +3859,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-18 12:54:44 +0000
@@ -38,7 +38,9 @@
 /* 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 +61,9 @@
     int reserved[32 - 6];
 };
 
-struct _DigestFetchState {
+class DigestFetchState
+{
+public:
     PeerDigest *pd;
     StoreEntry *entry;
     StoreEntry *old_entry;
@@ -90,7 +94,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 +133,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-18 12:54:44 +0000
@@ -0,0 +1,61 @@
+#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-18 12:54:44 +0000
@@ -0,0 +1,41 @@
+#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-18 14:23:58 +0000
@@ -0,0 +1,96 @@
+/*
+ * 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, HERE);
+    resetTCP_ = true;
+}
+
+void
+RequestFlags::clearResetTCP()
+{
+    debugs(73, 9, HERE);
+    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-18 14:23:58 +0000
@@ -0,0 +1,236 @@
+#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-18 14:06:31 +0000
@@ -0,0 +1,556 @@
+#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;
+namespace Mgr {
+class ActionPasswordList;
+} // namespace Mgr
+class CustomLog;
+class external_acl;
+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;
+    Mgr::ActionPasswordList *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/SquidList.h'
--- src/SquidList.h	2012-08-31 08:48:38 +0000
+++ src/SquidList.h	2012-09-18 12:54:44 +0000
@@ -32,7 +32,8 @@
  *
  */
 
-class link_list {
+class link_list
+{
     public:
     void *ptr;
     link_list *next;

=== 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-18 12:37:07 +0000
@@ -0,0 +1,55 @@
+#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-18 14:23:58 +0000
@@ -0,0 +1,44 @@
+#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"
+
+class AclAddress
+{
+public:
+    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-18 12:54:44 +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-18 12:54:44 +0000
@@ -0,0 +1,41 @@
+#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-18 14:06:31 +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 "mgr/ActionPasswordList.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, Mgr::ActionPasswordList * list)
 {
     wordlist *w;
 
@@ -2382,15 +2390,15 @@
 }
 
 static void
-parse_cachemgrpasswd(cachemgr_passwd ** head)
+parse_cachemgrpasswd(Mgr::ActionPasswordList ** head)
 {
     char *passwd = NULL;
     wordlist *actions = NULL;
-    cachemgr_passwd *p;
-    cachemgr_passwd **P;
+    Mgr::ActionPasswordList *p;
+    Mgr::ActionPasswordList **P;
     parse_string(&passwd);
     parse_wordlist(&actions);
-    p = static_cast<cachemgr_passwd *>(xcalloc(1, sizeof(cachemgr_passwd)));
+    p = new Mgr::ActionPasswordList;
     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 Mgr::ActionPasswordList 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(Mgr::ActionPasswordList ** head)
 {
-    cachemgr_passwd *p;
+    Mgr::ActionPasswordList *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-18 14:06:31 +0000
@@ -32,6 +32,7 @@
 
 #include "squid.h"
 #include "base/TextException.h"
+#include "mgr/ActionPasswordList.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(Mgr::ActionPasswordList * 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-17 15:12:01 +0000
@@ -30,18 +30,17 @@
 #ifndef SQUID_GLOBALS_H
 #define SQUID_GLOBALS_H
 
+#include "acl/AclDenyInfoList.h"
+#include "CacheDigest.h"
+#include "defines.h"
+#include "hash.h"
+#include "IoStats.h"
+#include "rfc2181.h"
+
 #if HAVE_STDIO_H
 #include <stdio.h>
 #endif
 
-#include "rfc2181.h"
-
-/* for ERROR_BUF_SZ, BUFSIZ */
-#include "defines.h"
-
-/* for iostats */
-#include "structs.h"
-
 extern char *ConfigFile;	/* NULL */
 extern char *IcpOpcodeStr[];
 extern char tmp_error_buf[ERROR_BUF_SZ];
@@ -85,9 +84,9 @@
 extern int DnsSocketA;		/* -1 */
 extern int DnsSocketB;		/* -1 */
 extern int n_disk_objects;	/* 0 */
-extern iostats IOStats;
+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-18 12:54:44 +0000
@@ -1,6 +1,9 @@
 #ifndef ICMP_NET_DB_H
 #define ICMP_NET_DB_H
 
+#include "CachePeer.h"
+#include "hash.h"
+
 namespace Ip
 {
 class Address;
@@ -8,27 +11,60 @@
 
 class StoreEntry;
 class HttpRequest;
-
-/* for struct peer */
-#include "structs.h"
-
-SQUIDCEXTERN void netdbInit(void);
-
-SQUIDCEXTERN void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt);
-SQUIDCEXTERN void netdbPingSite(const char *hostname);
+class netdbEntry;
+
+class net_db_name
+{
+public:
+    hash_link hash;     /* must be first */
+    net_db_name *next;
+    netdbEntry *net_db_entry;
+};
+
+class net_db_peer
+{
+public:
+    const char *peername;
+    double hops;
+    double rtt;
+    time_t expires;
+};
+
+class netdbEntry
+{
+public:
+    hash_link hash;     /* must be first */
+    char network[MAX_IPSTRLEN];
+    int pings_sent;
+    int pings_recv;
+    double hops;
+    double rtt;
+    time_t next_ping_time;
+    time_t last_use_time;
+    int link_count;
+    net_db_name *hosts;
+    net_db_peer *peers;
+    int n_peers_alloc;
+    int n_peers;
+};
+
+extern void netdbInit(void);
+
+extern void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt);
+extern void netdbPingSite(const char *hostname);
 void netdbDump(StoreEntry *);
 
-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 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 netdbHostData(const char *host, int *samp, int *rtt, int *hops);
+extern void netdbFreeMemory(void);
+extern int netdbHostHops(const char *host);
+extern int netdbHostRtt(const char *host);
+extern void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops);
+
+extern void netdbDeleteAddrNetwork(Ip::Address &addr);
+extern void netdbBinaryExchange(StoreEntry *);
+extern void netdbExchangeStart(void *);
+
+extern void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double);
+extern CachePeer *netdbClosestParent(HttpRequest *);
+extern 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-18 12:54:44 +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-17 18:03:06 +0000
@@ -31,13 +31,19 @@
  */
 
 #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 "icmp/net_db.h"
+#include "RegexList.h"
+#include "SquidConfig.h"
 #include "SquidList.h"
 #include "SquidTime.h"
 #include "Store.h"
@@ -448,9 +454,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 +469,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 */

=== added file 'src/mgr/ActionPasswordList.cc'
--- src/mgr/ActionPasswordList.cc	1970-01-01 00:00:00 +0000
+++ src/mgr/ActionPasswordList.cc	2012-09-18 14:06:31 +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 "mgr/ActionPasswordList.h"
+

=== added file 'src/mgr/ActionPasswordList.h'
--- src/mgr/ActionPasswordList.h	1970-01-01 00:00:00 +0000
+++ src/mgr/ActionPasswordList.h	2012-09-18 14:06:31 +0000
@@ -0,0 +1,46 @@
+#ifndef SQUID_MGR_CACHEMGRPASSWD_H_
+#define SQUID_MGR_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;
+
+namespace Mgr {
+//TODO: refactor into a std::list-backed proper list.
+class ActionPasswordList
+{
+public:
+    char *passwd;
+    wordlist *actions;
+    ActionPasswordList *next;
+};
+
+} //namespace Mgr
+
+#endif /* SQUID_MGR_CACHEMGRPASSWD_H_ */

=== 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-17 15:12:01 +0000
@@ -5,6 +5,7 @@
 
 #include "squid.h"
 #include "base/TextException.h"
+#include "IoStats.h"
 #include "ipc/Messages.h"
 #include "ipc/TypedMsgHdr.h"
 #include "mgr/IoAction.h"
@@ -24,13 +25,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-17 15:12:01 +0000
@@ -7,7 +7,7 @@
 #define SQUID_MGR_IO_ACTION_H
 
 #include "mgr/Action.h"
-#include "structs.h" /* _iostats::histSize */
+#include "IoStats.h"
 
 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/mgr/Makefile.am'
--- src/mgr/Makefile.am	2012-08-01 12:51:45 +0000
+++ src/mgr/Makefile.am	2012-09-18 14:06:31 +0000
@@ -9,6 +9,8 @@
 	Action.h \
 	ActionParams.cc \
 	ActionParams.h \
+	ActionPasswordList.h \
+	ActionPasswordList.cc \
 	ActionProfile.h \
 	ActionWriter.cc \
 	ActionWriter.h \

=== 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-18 12:37:07 +0000
@@ -17,6 +17,7 @@
 #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-17 15:12:01 +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"
@@ -41,6 +42,7 @@
 #include "format/Token.h"
 #include "globals.h"
 #include "HttpRequest.h"
+#include "IoStats.h"
 #include "MemObject.h"
 #include "mem_node.h"
 #include "MemBuf.h"
@@ -53,6 +55,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 +222,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 +248,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 +261,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 +274,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 +1813,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-18 12:54:44 +0000
@@ -31,16 +31,30 @@
  *  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-18 14:06:31 +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,16 @@
 #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 +69,6 @@
 
 class ACLList;
 
-struct acl_address {
-    acl_address *next;
-    ACLList *aclList;
-
-    Ip::Address addr;
-};
-
 struct acl_tos {
     acl_tos *next;
     ACLList *aclList;
@@ -113,18 +87,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"
@@ -139,536 +101,18 @@
 /* forward decl for SquidConfig, see RemovalPolicy.h */
 
 class CpuAffinityMap;
-class RemovalPolicySettings;
-class external_acl;
-class Store;
-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
+class close_handler
 {
-// 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
-};
-
-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 +122,9 @@
     void *client_data;
 };
 
-struct _dwrite_q {
+class dwrite_q
+{
+public:
     off_t file_offset;
     char *buf;
     size_t len;
@@ -695,37 +141,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 +161,17 @@
     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,335 +179,6 @@
 
 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 {
-    hash_link hash;		/* must be first */
-    net_db_name *next;
-    netdbEntry *net_db_entry;
-};
-
-struct _net_db_peer {
-    const char *peername;
-    double hops;
-    double rtt;
-    time_t expires;
-};
-
-struct _netdbEntry {
-    hash_link hash;		/* must be first */
-    char network[MAX_IPSTRLEN];
-    int pings_sent;
-    int pings_recv;
-    double hops;
-    double rtt;
-    time_t next_ping_time;
-    time_t last_use_time;
-    int link_count;
-    net_db_name *hosts;
-    net_db_peer *peers;
-    int n_peers_alloc;
-    int n_peers;
-};
-
-struct _iostats {
-
-    enum { histSize = 16 };
-
-    struct {
-        int reads;
-        int reads_deferred;
-        int read_hist[histSize];
-        int writes;
-        int write_hist[histSize];
-    }
-
-    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 +194,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-17 15:12:01 +0000
@@ -31,8 +31,10 @@
  */
 
 #include "squid.h"
+#include "acl/Acl.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"

=== modified file 'src/wordlist.h'
--- src/wordlist.h	2012-09-01 14:38:36 +0000
+++ src/wordlist.h	2012-09-17 15:12:01 +0000
@@ -45,6 +45,8 @@
 
 MEMPROXY_CLASS_INLINE(wordlist);
 
+class MemBuf;
+
 extern const char *wordlistAdd(wordlist **, const char *);
 extern void wordlistCat(const wordlist *, MemBuf * mb);
 extern void wordlistAddWl(wordlist **, wordlist *);

# Begin bundle
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
vXXzUGojmIQ2IuJ6GmlEXQ0miBdSMsvSLIgbt2Er5vJiJoozdvJZCzZCLXcuG7CUQm4/Gmw+sBg4
cbuGURdm6P0hlyrN0smiI5b0lZPTl0nzN3ejn8/KstMuH6tGlF1Hbd1HD1+LMN2zrrhRdu8cKJpp
RPluw+rL9LuXOllXjt/4n8yE+Ie7XEZaoqkr6xPDLo6utzz4Ncel3qUpt8883fg2ZjSSK6fftXFk
4RYicRKDRnLjYIiDQI4dVBFuIMl+mo4EBKCFhRNZCyDcQsGCg5Z7FgMRXGkRuFK4ExJLv6mndDUS
R63E1oqzOQVYSmhJOeuGqrJMNkq++8qLrKLvGeN3CjhNJRJ7bMu2E3D8SRhr1ZqOFGHLCyz6jULl
AyNMT4XILb5F2h0pHR1GIRgixGfWLNGME2nsrpBz7lSSNkImg2RkRBpHSiOECsSgSiILlCIwpBEQ
KDUxA2REcBgCOnAsXEG5VMxC2FCguKKgXoJShBiihDAu0XAqNDeNLBiEoEfn5aCiEDAshC1rb6Bs
3aqtVazZs1rxbSTaNIjRWUREaaFFV0ScLuFeLdunGAWq3Q2JKNPrvvhRU675WSOeHS7DlL65a8t+
pu+7MFW6hnLtV4/TtL4wso8b2VZfYijBNVu+q/2uEREKXwFRvUB50T/Cs0z6eBxFi8o0GYuuxx5D
9vqzuaXT2LLxO7Zlwq4JsPpp9aTcJmeFWk3a0cKKtl0m7VVd0knS9Gk2HSiz9frx6w9dJO3SjpVJ
Zstu8PGAjvSc6SlJd5NNcQvSV9mfFOk7JJvPO127uTLtnjo3dUZTetJO2jtZNy5USZeqtHDZu3Ve
myaat2jtls3XacJsusKrOVE7vffOF5OLpK7t008Y8cGWU2p0w8YTWNSjjxlw2XPVVklniTZWstni
TZZ002a5dNKMMdMtm+Y4cupK1cqR0wmuseeYdlV16sON3rpPKiavq7lN62b3N5PXpEeeWYaa9my3
N3MbbcqOk2W7tmOUvXDTbxNZVhyyT7aYo95eKWzPJRV0w6VaKSUJPO++7tmFXaTN3SzxRQkq22zD
tZ4zl00rNJ6LdvFnq66Xqar3lVw9eedJzo5FZ99u+Wnr1W+cMxVhpNR05aeu3W+ueXLZw2bPNPYo
5YYSdKmyayTxd2sqw98o5z/rEGnLfTxN8PVHqib1tNzlpVw8T2brwIzEEersOd5v6Ccc7UamLtDM
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
wDADSD//i7kinChIXNedwoA=
