/*
- * $Id: auth_ntlm.cc,v 1.3 2001/01/10 00:24:39 hno Exp $
+ * $Id: auth_ntlm.cc,v 1.4 2001/01/11 00:01:54 hno Exp $
*
* DEBUG: section 29 NTLM Authenticator
* AUTHOR: Robert Collins
authntlm_initialised = 0;
if (!shutting_down)
return;
- helperStatefulFree(ntlmauthenticators);
+ if (ntlmauthenticators)
+ helperStatefulFree(ntlmauthenticators);
ntlmauthenticators = NULL;
- memPoolDestroy(ntlm_helper_state_pool);
- memPoolDestroy(ntlm_request_pool);
- memPoolDestroy(ntlm_user_pool);
-
+ if (ntlm_helper_state_pool) {
+ assert(memPoolInUseCount(ntlm_helper_state_pool) == 0);
+ memPoolDestroy(ntlm_helper_state_pool);
+ ntlm_helper_state_pool = NULL;
+ }
+ if (ntlm_request_pool) {
+ assert(memPoolInUseCount(ntlm_request_pool) == 0);
+ memPoolDestroy(ntlm_request_pool);
+ ntlm_request_pool = NULL;
+ }
+ if (ntlm_user_pool) {
+ assert(memPoolInUseCount(ntlm_user_pool) == 0);
+ memPoolDestroy(ntlm_user_pool);
+ ntlm_user_pool = NULL;
+ }
+ debug(29, 2) ("authNTLMDone: NTLM authentication Shutdown.\n");
}
/* free any allocated configuration details */
authenticateNTLMActive()
{
if ((ntlmConfig != NULL) && (ntlmConfig->authenticate != NULL) &&
- (ntlmConfig->authenticateChildren != 0) && (ntlmConfig->challengeuses > -1)
- && (ntlmConfig->challengelifetime>-1))
- return 1;
+ (ntlmConfig->authenticateChildren != 0) && (ntlmConfig->challengeuses > -1)
+ && (ntlmConfig->challengelifetime > -1))
+ return 1;
return 0;
}
assert(r->auth_user_request);
/* standard callback stuff */
valid = cbdataValid(r->data);
- cbdataUnlock(r->data);
/* call authenticateNTLMStart to retry this request */
debug(29, 9) ("authenticateNTLMHandleplaceholder: calling authenticateNTLMStart\n");
authenticateNTLMStart(r->auth_user_request, r->handler, r->data);
+ cbdataUnlock(r->data);
authenticateStateFree(r);
return result;
}
ntlm_request_t *ntlm_request;
debug(29, 9) ("authenticateNTLMHandleReply: Helper: '%d' {%s}\n", lastserver, reply ? reply : "<NULL>");
valid = cbdataValid(r->data);
- cbdataUnlock(r->data);
if (valid) {
if (reply) {
/* seperate out the useful data */
debug(29, 1) ("AuthenticateNTLMHandleReply: invalid callback data. Releasing helper '%d'.\n", lastserver);
result = S_HELPER_RELEASE;
}
+ cbdataUnlock(r->data);
authenticateStateFree(r);
debug(29, 9) ("NTLM HandleReply, telling stateful helper : %d\n", result);
return result;
/*
- * $Id: authenticate.cc,v 1.17 2001/01/10 17:35:32 hno Exp $
+ * $Id: authenticate.cc,v 1.18 2001/01/11 00:01:52 hno Exp $
*
* DEBUG: section 29 Authenticator
* AUTHOR: Duane Wessels
{
assert(auth_user_request);
assert(handler);
- debug(29, 9) ("authenticateStart: auth_user_request '%d'\n", auth_user_request);
+ debug(29, 9) ("authenticateStart: auth_user_request '%p'\n", auth_user_request);
if (auth_user_request->auth_user->auth_module > 0)
authscheme_list[auth_user_request->auth_user->auth_module - 1].authStart(auth_user_request, handler, data);
else
int
authenticateValidateUser(auth_user_request_t * auth_user_request)
{
- debug(29, 9) ("authenticateValidateUser: Validating Auth_user request '%d'.\n", auth_user_request);
+ debug(29, 9) ("authenticateValidateUser: Validating Auth_user request '%p'.\n", auth_user_request);
if (auth_user_request == NULL) {
debug(29, 4) ("authenticateValidateUser: Auth_user_request was NULL!\n");
return 0;
return 0;
}
if (auth_user_request->auth_user->auth_type == AUTH_UNKNOWN) {
- debug(29, 4) ("authenticateValidateUser: Auth_user '%d' uses unknown scheme.\n", auth_user_request->auth_user);
+ debug(29, 4) ("authenticateValidateUser: Auth_user '%p' uses unknown scheme.\n", auth_user_request->auth_user);
return 0;
}
if (auth_user_request->auth_user->auth_type == AUTH_BROKEN) {
- debug(29, 4) ("authenticateValidateUser: Auth_user '%d' is broken for it's scheme.\n", auth_user_request->auth_user);
+ debug(29, 4) ("authenticateValidateUser: Auth_user '%p' is broken for it's scheme.\n", auth_user_request->auth_user);
return 0;
}
/* any other sanity checks that we need in the future */
/* Thus should a module call to something like authValidate */
/* finally return ok */
- debug(29, 4) ("authenticateValidateUser: Validated Auth_user request '%d'.\n", auth_user_request);
+ debug(29, 4) ("authenticateValidateUser: Validated Auth_user request '%p'.\n", auth_user_request);
return 1;
}
authenticateAuthUserRequestFree(auth_user_request_t * auth_user_request)
{
dlink_node *link;
- debug(29, 5) ("authenticateAuthUserRequestFree: freeing request %d\n", auth_user_request);
+ debug(29, 5) ("authenticateAuthUserRequestFree: freeing request %p\n", auth_user_request);
if (!auth_user_request)
return;
assert(auth_user_request->references == 0);
int i;
authScheme *scheme;
for (i = 0; i < config->n_configured; i++) {
- if (authscheme_list[i].init) {
- scheme = config->schemes + i;
- authscheme_list[i].init(scheme);
+ scheme = config->schemes + i;
+ if (authscheme_list[scheme->Id].init) {
+ authscheme_list[scheme->Id].init(scheme);
}
}
if (!proxy_auth_username_cache)
/* some other HTTP status */
break;
}
- debug(29, 9) ("authenticateFixHeader: headertype:%d authuser:%d\n", type, auth_user_request);
+ debug(29, 9) ("authenticateFixHeader: headertype:%d authuser:%p\n", type, auth_user_request);
if ((rep->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED)
|| (rep->sline.status == HTTP_UNAUTHORIZED))
/* this is a authenticate-needed response */
void
authenticateAuthUserLock(auth_user_t * auth_user)
{
- debug(29, 9) ("authenticateAuthUserLock auth_user '%d'.\n", auth_user);
+ debug(29, 9) ("authenticateAuthUserLock auth_user '%p'.\n", auth_user);
assert(auth_user != NULL);
auth_user->references++;
- debug(29, 9) ("authenticateAuthUserLock auth_user '%d' now at '%d'.\n", auth_user, auth_user->references);
+ debug(29, 9) ("authenticateAuthUserLock auth_user '%p' now at '%d'.\n", auth_user, auth_user->references);
}
void
authenticateAuthUserUnlock(auth_user_t * auth_user)
{
- debug(29, 9) ("authenticateAuthUserUnlock auth_user '%d'.\n", auth_user);
+ debug(29, 9) ("authenticateAuthUserUnlock auth_user '%p'.\n", auth_user);
assert(auth_user != NULL);
if (auth_user->references > 0) {
auth_user->references--;
} else {
- debug(29, 1) ("Attempt to lower Auth User %d refcount below 0!\n", auth_user);
+ debug(29, 1) ("Attempt to lower Auth User %p refcount below 0!\n", auth_user);
}
- debug(29, 9) ("authenticateAuthUserUnlock auth_user '%d' now at '%d'.\n", auth_user, auth_user->references);
+ debug(29, 9) ("authenticateAuthUserUnlock auth_user '%p' now at '%d'.\n", auth_user, auth_user->references);
if (auth_user->references == 0)
authenticateFreeProxyAuthUser(auth_user);
}
void
authenticateAuthUserRequestLock(auth_user_request_t * auth_user_request)
{
- debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%d'.\n", auth_user_request);
+ debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%p'.\n", auth_user_request);
assert(auth_user_request != NULL);
auth_user_request->references++;
- debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%d' now at '%d'.\n", auth_user_request, auth_user_request->references);
+ debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%p' now at '%d'.\n", auth_user_request, auth_user_request->references);
}
void
authenticateAuthUserRequestUnlock(auth_user_request_t * auth_user_request)
{
- debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user request '%d'.\n", auth_user_request);
+ debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user request '%p'.\n", auth_user_request);
assert(auth_user_request != NULL);
if (auth_user_request->references > 0) {
auth_user_request->references--;
} else {
- debug(29, 1) ("Attempt to lower Auth User request %d refcount below 0!\n", auth_user_request);
+ debug(29, 1) ("Attempt to lower Auth User request %p refcount below 0!\n", auth_user_request);
}
- debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user_request '%d' now at '%d'.\n", auth_user_request, auth_user_request->references);
+ debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user_request '%p' now at '%d'.\n", auth_user_request, auth_user_request->references);
if (auth_user_request->references == 0) {
/* not locked anymore */
authenticateAuthUserRequestFree(auth_user_request);
auth_user_request_t *auth_user_request;
/* XXX combine two authuser structs. Incomplete: it should merge in hash references
* too and ask the module to merge in scheme data */
- debug(29, 5) ("authenticateAuthUserMerge auth_user '%d' into auth_user '%d'.\n", from, to);
+ debug(29, 5) ("authenticateAuthUserMerge auth_user '%p' into auth_user '%p'.\n", from, to);
link = from->requests.head;
while (link) {
auth_user_request = link->data;
auth_user_request_t *auth_user_request;
dlink_node *link, *tmplink;
assert(data != NULL);
- debug(29, 5) ("authenticateFreeProxyAuthUser: Freeing auth_user '%d' with refcount '%d'.\n", u, u->references);
+ debug(29, 5) ("authenticateFreeProxyAuthUser: Freeing auth_user '%p' with refcount '%d'.\n", u, u->references);
assert(u->references == 0);
/* were they linked in by username ? */
if (u->usernamehash) {
assert(u->usernamehash->auth_user == u);
- debug(29, 5) ("authenticateFreeProxyAuthUser: removing usernamehash entry '%d'\n", u->usernamehash);
+ debug(29, 5) ("authenticateFreeProxyAuthUser: removing usernamehash entry '%p'\n", u->usernamehash);
hash_remove_link(proxy_auth_username_cache,
(hash_link *) u->usernamehash);
/* don't free the key as we use the same user string as the auth_user
/* remove any outstanding requests */
link = u->requests.head;
while (link) {
- debug(29, 5) ("authenticateFreeProxyAuthUser: removing request entry '%d'\n", link->data);
+ debug(29, 5) ("authenticateFreeProxyAuthUser: removing request entry '%p'\n", link->data);
auth_user_request = link->data;
tmplink = link;
link = link->next;