ConfigParser.cc \
HelperChildConfig.h \
HelperChildConfig.cc \
- ip/stubQosConfig.cc \
tests/stub_acl.cc tests/stub_cache_cf.cc \
tests/stub_helper.cc cbdata.cc String.cc \
tests/stub_store.cc HttpHeaderTools.cc HttpHeader.cc mem.cc ClientInfo.h \
proxy_auth_list.head = proxy_auth_list.tail = NULL;
proxy_match_cache.head = proxy_match_cache.tail = NULL;
ip_list.head = ip_list.tail = NULL;
-#if USER_REQUEST_LOOP_DEAD
- requests.head = requests.tail = NULL;
-#endif
debugs(29, 5, "AuthUser::AuthUser: Initialised auth_user '" << this << "'.");
}
*/
debugs(29, 5, "authenticateAuthUserMerge auth_user '" << from << "' into auth_user '" << this << "'.");
-#if USER_REQUEST_LOOP_DEAD
- dlink_node *link = from->requests.head;
-
- while (link) {
- AuthUserRequest::Pointer *auth_user_request = static_cast<AuthUserRequest::Pointer*>(link->data);
- /* add to our list. replace if already present. */
- addRequest(*auth_user_request);
- AuthUserRequest::Pointer aur = *(auth_user_request);
- aur->user(this);
- /* remove from other list */
- dlink_node *tmplink = link;
- link = link->next;
- dlinkDelete(tmplink, &from->requests);
- }
-#endif /* USER_REQUEST_LOOP_DEAD */
/* absorb the list of IP address sources (for max_user_ip controls) */
AuthUserIP *new_ipdata;
delete usernamehash;
}
-#if USER_REQUEST_LOOP_DEAD
- /* remove any outstanding requests */
- dlink_node *link = requests.head;
-
- while (link) {
- debugs(29, 5, "AuthUser::~AuthUser: removing request entry '" << link->data << "'");
- AuthUserRequest::Pointer *auth_user_request = static_cast<AuthUserRequest::Pointer*>(link->data);
- dlink_node *tmplink = link;
- link = link->next;
- dlinkDelete(tmplink, &requests);
- tmplink->data = NULL;
- dlinkNodeDelete(tmplink);
- *auth_user_request = NULL;
- }
-#endif /* USER_REQUEST_LOOP_DEAD */
-
/* free cached acl results */
aclCacheMatchFlush(&proxy_match_cache);
safe_free(username_);
}
}
-
-#if USER_REQUEST_LOOP_DEAD
-void
-AuthUser::addRequest(AuthUserRequest::Pointer request)
-{
- /* lock for the request link (AKA lock because the request links to us) */
- lock();
-
- dlink_node *node = dlinkNodeNew();
-
- dlinkAdd(&request, node, &requests);
-}
-
-void
-AuthUser::doneRequest(AuthUserRequest::Pointer request)
-{
- /* unlink from the auth_user struct */
- dlink_node *link = requests.head;
- AuthUserRequest::Pointer *auth_user_request = NULL;
-
- while (link) {
- auth_user_request = static_cast<AuthUserRequest::Pointer*>(link->data);
- if (*auth_user_request == request) {
- dlink_node *tmplink = link;
- link = link->next;
- dlinkDelete(tmplink, &requests);
- tmplink->data = NULL;
- dlinkNodeDelete(tmplink);
- *auth_user_request = NULL;
- }
- link = link->next;
- }
-}
-#endif /* USER_REQUEST_LOOP_DEAD */
#ifndef SQUID_AUTHUSER_H
#define SQUID_AUTHUSER_H
-#if USER_REQUEST_LOOP_DEAD
-#include "auth/UserRequest.h"
-#endif
-
#include "auth/AuthType.h"
#include "dlink.h"
#include "ip/IpAddress.h"
void removeIp(Ip::Address);
void addIp(Ip::Address);
-#if USER_REQUEST_LOOP_DEAD
-protected:
- /* manage list of active authentication requests for this username */
- /** the auth_user_request structures that link to this. Yes it could be a splaytree
- * but how many requests will a single username have in parallel? */
- dlink_list requests;
-
- /* AYJ: why? do we need this here? it forms the core of a circular refcount. */
-
-public:
- _SQUID_INLINE_ void addRequest(AuthUserRequest::Pointer);
- _SQUID_INLINE_ void doneRequest(AuthUserRequest::Pointer);
-#endif /* USER_REQUEST_LOOP_DEAD */
-
void addToNameCache();
static void UsernameCacheStats(StoreEntry * output);
debugs(29, 5, "AuthUserRequest::~AuthUserRequest: freeing request " << this);
if (user() != NULL) {
-#if USER_REQUEST_LOOP_DEAD
- /* AYJ: something strange: in order to be deleted this object must not be
- * referenced anywhere. Including the AuthUser list of requests.
- * I expect the following loop to NEVER find a pointer to this request object.
- */
- user()->doneRequest(this);
-#endif /* USER_REQUEST_LOOP_DEAD */
-
/* release our references to the user credentials */
user(NULL);
}
username(NULL);
/* set the auth_user type */
basic_auth->auth_type = AUTH_BROKEN;
-#if USER_REQUEST_LOOP_DEAD
- /* link the request to the user */
- basic_auth->addRequest(auth_user_request);
-#endif /* USER_REQUEST_LOOP_DEAD */
}
}
/* link the request to the in-cache user */
auth_user_request->user(auth_user);
-#if USER_REQUEST_LOOP_DEAD
- basic_auth->addRequest(auth_user_request);
-#endif /* USER_REQUEST_LOOP_DEAD */
return auth_user_request;
}
digest_user->auth_type = AUTH_BROKEN;
/* link the request to the user */
auth_user_request->user(digest_user);
-#if USER_REQUEST_LOOP_DEAD
- digest_user->addRequest(auth_user_request);
-#endif
return auth_user_request;
}
assert(digest_request != NULL);
digest_request->user(digest_user);
-#if USER_REQUEST_LOOP_DEAD
- digest_user->addRequest(digest_request);
-#endif
-
debugs(29, 9, "username = '" << digest_user->username() << "'\nrealm = '" <<
digest_request->realm << "'\nqop = '" << digest_request->qop <<
"'\nalgorithm = '" << digest_request->algorithm << "'\nuri = '" <<
} else {
const char *useragent = request->header.getStr(HDR_USER_AGENT);
- static IpAddress last_broken_addr;
+ static Ip::Address last_broken_addr;
static int seen_broken_client = 0;
if (!seen_broken_client) {
auth_user_request->user(newUser);
auth_user_request->user()->auth_type = AUTH_NEGOTIATE;
-#if USER_REQUEST_LOOP_DEAD
- auth_user_request->user()->addRequest(auth_user_request);
-#endif
/* all we have to do is identify that it's Negotiate - the helper does the rest */
debugs(29, 9, "AuthNegotiateConfig::decode: Negotiate authentication");
auth_user_request->user(newUser);
auth_user_request->user()->auth_type = AUTH_NTLM;
-#if USER_REQUEST_LOOP_DEAD
- auth_user_request->user()->addRequest(auth_user_request);
-#endif
/* all we have to do is identify that it's NTLM - the helper does the rest */
debugs(29, 9, "AuthNTLMConfig::decode: NTLM authentication");
#if USE_ZPH_QOS
-#include "QosConfig.h"
+#include "ip/QosConfig.h"
#include "Store.h"
-QosConfig::QosConfig() :
+Ip::QosConfig::QosConfig() :
tos_local_hit(0),
tos_sibling_hit(0),
tos_parent_hit(0),
}
void
-QosConfig::parseConfigLine()
+Ip::QosConfig::parseConfigLine()
{
// %i honors 0 and 0x prefixes, which are important for things like umask
/* parse options ... */
}
void
-QosConfig::dumpConfigLine(char *entry, const char *name) const
+Ip::QosConfig::dumpConfigLine(char *entry, const char *name) const
{
; /* Not needed in stub */
}
BasicUser *basic_auth=new BasicUser(AuthConfig::Find("basic"));
basic_auth->username("John");
temp->user(basic_auth);
-#if USER_REQUEST_LOOP_DEAD
- basic_auth->addRequest(temp);
-#endif
CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username()));
}
#endif /* HAVE_AUTH_MODULE_BASIC */
DigestUser *duser=new DigestUser(AuthConfig::Find("digest"));
duser->username("John");
temp->user(duser);
-#if USER_REQUEST_LOOP_DEAD
- duser->addRequest(temp);
-#endif
CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username()));
}
#endif /* HAVE_AUTH_MODULE_DIGEST */
NTLMUser *nuser=new NTLMUser(AuthConfig::Find("ntlm"));
nuser->username("John");
temp->user(nuser);
-#if USER_REQUEST_LOOP_DEAD
- nuser->addRequest(temp);
-#endif
CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username()));
}
#endif /* HAVE_AUTH_MODULE_NTLM */
NegotiateUser *nuser=new NegotiateUser(AuthConfig::Find("negotiate"));
nuser->username("John");
temp->user(nuser);
-#if USER_REQUEST_LOOP_DEAD
- nuser->addRequest(temp);
-#endif
CPPUNIT_ASSERT_EQUAL(0, strcmp("John", temp->username()));
}