void
clientStoreURLRewriteStart(clientHttpRequest * http)
{
    debug(85, 5) ("clientStoreURLRewriteStart: '%s'\n", http->uri);
    if (Config.Program.store_rewrite.command == NULL) {
	clientStoreURLRewriteDone(http, NULL);
	return;
    }
    if (Config.accessList.storeurl_rewrite) {
	http->acl_checklist = clientAclChecklistCreate(Config.accessList.storeurl_rewrite, http);
	aclNBCheck(http->acl_checklist, clientStoreURLRewriteAccessCheckDone, http);
    } else {
	storeurlStart(http, clientStoreURLRewriteDone, http);
    }
}
예제 #2
0
파일: peer_select.c 프로젝트: selecli/squid
static void
peerSelectFoo(ps_state * ps)
{
	StoreEntry *entry = ps->entry;
	request_t *request = ps->request;
	debug(44, 3) ("peerSelectFoo: '%s %s'\n",
				  RequestMethods[request->method].str,
				  request->host);
	if (ps->direct == DIRECT_UNKNOWN)
	{
#ifdef CC_FRAMEWORK
		acl_access * acl = cc_get_acl_access_by_token_and_host("always_direct",request->host);
		if(ps->always_direct == 0 && acl)
#else
		if (ps->always_direct == 0 && Config.accessList.AlwaysDirect)
#endif
		{
#ifdef CC_FRAMEWORK
			ps->acl_checklist = aclChecklistCreate(
									acl,
									request,
									NULL);		/* ident */
#else
			ps->acl_checklist = aclChecklistCreate(
									Config.accessList.AlwaysDirect,
									request,
									NULL);		/* ident */
#endif
			aclNBCheck(ps->acl_checklist,
					   peerCheckAlwaysDirectDone,
					   ps);
			return;
		}
		else if (ps->always_direct > 0)
		{
			ps->direct = DIRECT_YES;
		}
#ifdef CC_FRAMEWORK
		else if(ps->never_direct == 0 && (acl = cc_get_acl_access_by_token_and_host("never_direct",request->host)))
#else
		else if (ps->never_direct == 0 && Config.accessList.NeverDirect)
#endif
		{
#ifdef CC_FRAMEWORK
			ps->acl_checklist = aclChecklistCreate(
									acl,
									request,
									NULL);		/* ident */
#else
			ps->acl_checklist = aclChecklistCreate(
									Config.accessList.NeverDirect,
									request,
									NULL);		/* ident */
#endif
			aclNBCheck(ps->acl_checklist,
					   peerCheckNeverDirectDone,
					   ps);
			return;
		}
		else if (ps->never_direct > 0)
		{
			ps->direct = DIRECT_NO;
		}
		else if (request->flags.no_direct)
		{
			ps->direct = DIRECT_NO;
		}
		else if (request->flags.loopdetect)
		{
			ps->direct = DIRECT_YES;
		}
		else if (peerCheckNetdbDirect(ps))
		{
			ps->direct = DIRECT_YES;
		}
		else
		{
			ps->direct = DIRECT_MAYBE;
		}
		debug(44, 3) ("peerSelectFoo: direct = %s\n",
					  DirectStr[ps->direct]);
	}