/*
- * $Id: ACLChecklist.cc,v 1.44 2008/02/07 18:16:24 rousskov Exp $
+ * $Id: ACLChecklist.cc,v 1.45 2008/02/11 22:25:53 rousskov Exp $
*
* DEBUG: section 28 Access Control
* AUTHOR: Duane Wessels
auth_user_request (NULL),
#if SQUID_SNMP
snmp_community(NULL),
+#endif
+#if USE_SSL
+ ssl_error(0),
#endif
callback (NULL),
callback_data (NULL),
extacl_entry (NULL),
conn_(NULL),
+ fd_(-1),
async_(false),
finished_(false),
allow_(ACCESS_DENIED),
conn_ = aConn;
}
+int
+ACLChecklist::fd() const
+{
+ return conn_ != NULL ? conn_->fd : fd_;
+}
+
+void
+ACLChecklist::fd(int aDescriptor)
+{
+ assert(!conn() || conn()->fd == aDescriptor);
+ fd_ = aDescriptor;
+}
+
void
ACLChecklist::AsyncState::changeState (ACLChecklist *checklist, AsyncState *newState) const
{
* returns, ACLChecklist::checkCallback() will free the ACLChecklist using
* aclChecklistFree().
*/
-
ACLChecklist *
aclChecklistCreate(const acl_access * A, HttpRequest * request, const char *ident)
{
+ // TODO: make this a constructor? On-stack creation uses the same code.
ACLChecklist *checklist = new ACLChecklist;
if (A)
/*
- * $Id: ACLChecklist.h,v 1.29 2007/12/14 23:11:45 amosjeffries Exp $
+ * $Id: ACLChecklist.h,v 1.30 2008/02/11 22:25:53 rousskov Exp $
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
void checkCallback(allow_t answer);
void preCheck();
_SQUID_INLINE_ bool matchAclListFast(const ACLList * list);
+
ConnStateData::Pointer conn();
+ int fd() const; // uses conn() if available
+
+ // set either conn or FD
void conn(ConnStateData::Pointer);
+ void fd(int aDescriptor);
+
int authenticated();
bool asyncInProgress() const;
char *snmp_community;
#endif
+#if USE_SSL
+ int ssl_error;
+#endif
+
PF *callback;
void *callback_data;
ExternalACLEntry *extacl_entry;
void matchAclListSlow(const ACLList * list);
CBDATA_CLASS(ACLChecklist);
ConnStateData::Pointer conn_; /* hack for ident and NTLM */
+ int fd_; // may be available when conn_ is not
bool async_;
bool finished_;
allow_t allow_;