Example #1
0
void
authenticateAuthUserRequestUnlock(auth_user_request_t * 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 %p refcount below 0!\n", auth_user_request);
    }
    debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user_request '%p' now at '%ld'.\n", auth_user_request, (long int) auth_user_request->references);
    if (auth_user_request->references == 0) {
	/* not locked anymore */
	authenticateAuthUserRequestFree(auth_user_request);
    }
}
Example #2
0
void
authenticateFreeProxyAuthUser(void *data)
{
	auth_user_t *u = data;
	auth_user_request_t *auth_user_request;
	dlink_node *link, *tmplink;
	assert(data != NULL);
	debug(29, 5) ("authenticateFreeProxyAuthUser: Freeing auth_user '%p' with refcount '%ld'.\n", u, (long int) 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 '%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
		 * structure */
		memFree(u->usernamehash, MEM_AUTH_USER_HASH);
	}
	/* remove any outstanding requests */
	link = u->requests.head;
	while (link)
	{
		debug(29, 5) ("authenticateFreeProxyAuthUser: removing request entry '%p'\n", link->data);
		auth_user_request = link->data;
		tmplink = link;
		link = link->next;
		dlinkDelete(tmplink, &u->requests);
		dlinkNodeDelete(tmplink);
		authenticateAuthUserRequestFree(auth_user_request);
	}
	/* free cached acl results */
	aclCacheMatchFlush(&u->proxy_match_cache);
	/* free seen ip address's */
	authenticateAuthUserClearIp(u);
	if (u->scheme_data && u->auth_module > 0)
		authscheme_list[u->auth_module - 1].FreeUser(u);
	/* prevent accidental reuse */
	u->auth_type = AUTH_UNKNOWN;
	memFree(u, MEM_AUTH_USER_T);
}