#include <ClientRequestContext.h>
![Inheritance graph](classClientRequestContext__inherit__graph.png)
![Collaboration graph](classClientRequestContext__coll__graph.png)
Public Member Functions | |
void * | operator new (size_t size) |
void | operator delete (void *address) |
void * | toCbdata () noexcept |
ClientRequestContext (ClientHttpRequest *) | |
~ClientRequestContext () override | |
bool | httpStateIsValid () |
void | hostHeaderVerify () |
void | hostHeaderIpVerify (const ipcache_addrs *, const Dns::LookupDetails &) |
void | hostHeaderVerifyFailed (const char *A, const char *B) |
void | clientAccessCheck () |
void | clientAccessCheck2 () |
void | clientAccessCheckDone (const Acl::Answer &) |
void | clientRedirectStart () |
void | clientRedirectDone (const Helper::Reply &) |
void | clientStoreIdStart () |
void | clientStoreIdDone (const Helper::Reply &) |
void | checkNoCache () |
applies "cache allow/deny" rules, asynchronously if needed More... | |
void | checkNoCacheDone (const Acl::Answer &) |
void | adaptationAccessCheck () |
bool | sslBumpAccessCheck () |
void | sslBumpAccessCheckDone (const Acl::Answer &answer) |
The callback function for ssl-bump access check list. More... | |
Public Attributes | |
ClientHttpRequest * | http |
int | redirect_state = REDIRECT_NONE |
int | store_id_state = REDIRECT_NONE |
bool | host_header_verify_done = false |
bool | http_access_done = false |
bool | adapted_http_access_done = false |
bool | adaptation_acl_check_done = false |
bool | redirect_done = false |
bool | store_id_done = false |
bool | no_cache_done = false |
bool | interpreted_req_hdrs = false |
bool | toClientMarkingDone = false |
bool | sslBumpCheckDone = false |
bool | readNextRequest = false |
whether Squid should read after error handling More... | |
ErrorState * | error = nullptr |
saved error page for centralized/delayed processing More... | |
size_t | currentXffHopNumber = 0 |
number of X-Forwarded-For header values processed so far More... | |
Static Private Attributes | |
static cbdata_type | CBDATA_ClientRequestContext = CBDATA_UNKNOWN |
Detailed Description
Definition at line 28 of file ClientRequestContext.h.
Constructor & Destructor Documentation
◆ ClientRequestContext()
ClientRequestContext::ClientRequestContext | ( | ClientHttpRequest * | anHttp | ) |
Definition at line 120 of file client_side_request.cc.
References debugs.
◆ ~ClientRequestContext()
|
override |
Definition at line 107 of file client_side_request.cc.
References cbdataReferenceDone, debugs, error, and http.
Member Function Documentation
◆ adaptationAccessCheck()
void ClientRequestContext::adaptationAccessCheck | ( | ) |
◆ checkNoCache()
void ClientRequestContext::checkNoCache | ( | ) |
Definition at line 1213 of file client_side_request.cc.
References ACCESS_ALLOWED, SquidConfig::accessList, checkNoCacheDone(), checkNoCacheDoneWrapper(), clientAclChecklistCreate(), Config, http, SquidConfig::noCache, and ACLFilledChecklist::NonBlockingCheck().
Referenced by ClientHttpRequest::doCallouts().
◆ checkNoCacheDone()
void ClientRequestContext::checkNoCacheDone | ( | const Acl::Answer & | answer | ) |
Definition at line 1236 of file client_side_request.cc.
References Acl::Answer::denied(), RequestFlags::disableCacheUse(), ClientHttpRequest::doCallouts(), HttpRequest::flags, http, and ClientHttpRequest::request.
Referenced by checkNoCache(), and checkNoCacheDoneWrapper().
◆ clientAccessCheck()
void ClientRequestContext::clientAccessCheck | ( | ) |
Definition at line 559 of file client_side_request.cc.
References ACCESS_DENIED, SquidConfig::accessList, HttpRequest::client_addr, clientAccessCheckDone(), clientAccessCheckDoneWrapper(), clientAclChecklistCreate(), clientFollowXForwardedForCheck(), Config, DBG_CRITICAL, debugs, RequestFlags::doneFollowXff(), HttpRequest::flags, SquidConfig::followXFF, HttpHeader::getList(), HttpHeader::has(), Http::Message::header, http, SquidConfig::http, HttpRequest::indirect_client_addr, ACLFilledChecklist::NonBlockingCheck(), Ip::Address::port(), ClientHttpRequest::request, Http::X_FORWARDED_FOR, and HttpRequest::x_forwarded_for_iterator.
Referenced by clientFollowXForwardedForCheck(), and ClientHttpRequest::doCallouts().
◆ clientAccessCheck2()
void ClientRequestContext::clientAccessCheck2 | ( | ) |
Identical in operation to clientAccessCheck() but performed later using different configured ACL list. The default here is to allow all. Since the earlier http_access should do a default deny all. This check is just for a last-minute denial based on adapted request headers.
Definition at line 595 of file client_side_request.cc.
References ACCESS_ALLOWED, SquidConfig::accessList, SquidConfig::adapted_http, clientAccessCheckDone(), clientAccessCheckDoneWrapper(), clientAclChecklistCreate(), Config, debugs, http, and ACLFilledChecklist::NonBlockingCheck().
Referenced by ClientHttpRequest::doCallouts().
◆ clientAccessCheckDone()
void ClientRequestContext::clientAccessCheckDone | ( | const Acl::Answer & | answer | ) |
Definition at line 618 of file client_side_request.cc.
References ClientHttpRequest::Flags::accel, ACCESS_AUTH_REQUIRED, aclIsProxyAuth(), ClientHttpRequest::al, Acl::Answer::allowed(), HttpRequest::auth_user_request, ErrorState::auth_user_request, clientBuildError(), debugs, Auth::UserRequest::denyMessage(), ClientHttpRequest::doCallouts(), HttpRequest::effectiveRequestUri(), ERR_ACCESS_DENIED, ERR_CACHE_ACCESS_DENIED, ERR_NONE, error, FindDenyInfoPage(), HttpRequest::flags, ClientHttpRequest::flags, ConnStateData::getAuth(), ClientHttpRequest::getConn(), http, Acl::Answer::lastCheckDescription(), Acl::Answer::lastCheckedName, LOG_TCP_DENIED, HttpRequest::method, readNextRequest, ClientHttpRequest::request, SBufToCstring(), Http::scForbidden, Http::scProxyAuthenticationRequired, Http::scUnauthorized, RequestFlags::sslBumped, ClientHttpRequest::updateLoggingTags(), ClientHttpRequest::uri, and xfree.
Referenced by clientAccessCheck(), clientAccessCheck2(), clientAccessCheckDoneWrapper(), and ClientHttpRequest::handleAdaptationBlock().
◆ clientRedirectDone()
void ClientRequestContext::clientRedirectDone | ( | const Helper::Reply & | reply | ) |
Definition at line 1046 of file client_side_request.cc.
References SquidConfig::UrlHelperTimeout::action, ClientHttpRequest::al, assert, Http::Message::body_pipe, Helper::BrokenHelper, ClientHttpRequest::calloutsError(), Server::clientConnection, HttpRequest::clone(), Config, DBG_CRITICAL, DBG_IMPORTANT, debugs, ClientHttpRequest::doCallouts(), HttpRequest::effectiveRequestUri(), ERR_GATEWAY_FAILURE, Helper::Error, Comm::Connection::fd, fd_note(), NotePairs::findFirst(), ClientHttpRequest::getConn(), http, Http::Message::http_ver, Comm::IsConnOpen(), ClientHttpRequest::Redirect::location, MakeNamedErrorDetail(), HttpRequest::method, Helper::Reply::notes, Helper::Okay, SquidConfig::onUrlRewriteTimeout, AnyP::Uri::parse(), ClientHttpRequest::redirect, REDIRECT_DONE, REDIRECT_PENDING, redirect_state, ClientHttpRequest::request, ClientHttpRequest::resetRequestXXX(), Helper::Reply::result, Http::scFound, Http::scMovedPermanently, Http::scPermanentRedirect, Http::scSeeOther, Http::scTemporaryRedirect, ClientHttpRequest::Redirect::status, Helper::TimedOut, toutActBypass, Helper::TT, Helper::Unknown, UpdateRequestNotes(), ClientHttpRequest::uri, HttpRequest::url, and xstrdup.
Referenced by clientRedirectAccessCheckDone(), and clientRedirectDoneWrapper().
◆ clientRedirectStart()
void ClientRequestContext::clientRedirectStart | ( | ) |
Definition at line 738 of file client_side_request.cc.
References SquidConfig::accessList, ClientHttpRequest::al, clientAclChecklistCreate(), clientRedirectAccessCheckDone(), clientRedirectDoneWrapper, Config, debugs, http, ACLFilledChecklist::NonBlockingCheck(), SquidConfig::redirector, redirectStart(), ClientHttpRequest::request, and ClientHttpRequest::uri.
Referenced by ClientHttpRequest::doCallouts().
◆ clientStoreIdDone()
void ClientRequestContext::clientStoreIdDone | ( | const Helper::Reply & | reply | ) |
This method handles the different replies from StoreID helper.
Definition at line 1162 of file client_side_request.cc.
References ClientHttpRequest::al, assert, Helper::BrokenHelper, DBG_IMPORTANT, debugs, ClientHttpRequest::doCallouts(), Helper::Error, NotePairs::findFirst(), ClientHttpRequest::getConn(), http, Helper::Reply::notes, Helper::Okay, REDIRECT_DONE, REDIRECT_PENDING, ClientHttpRequest::request, Helper::Reply::result, HttpRequest::store_id, ClientHttpRequest::store_id, store_id_state, Helper::TimedOut, Helper::TT, Helper::Unknown, UpdateRequestNotes(), and ClientHttpRequest::uri.
Referenced by clientStoreIdAccessCheckDone(), and clientStoreIdDoneWrapper().
◆ clientStoreIdStart()
void ClientRequestContext::clientStoreIdStart | ( | ) |
Start locating an alternative storage ID string (if any) from admin configured helper program. This is an asynchronous operation terminating in ClientRequestContext::clientStoreIdDone() when completed.
Definition at line 774 of file client_side_request.cc.
References SquidConfig::accessList, clientAclChecklistCreate(), clientStoreIdAccessCheckDone(), clientStoreIdDoneWrapper, Config, debugs, http, ACLFilledChecklist::NonBlockingCheck(), SquidConfig::store_id, storeIdStart(), and ClientHttpRequest::uri.
Referenced by ClientHttpRequest::doCallouts().
◆ hostHeaderIpVerify()
void ClientRequestContext::hostHeaderIpVerify | ( | const ipcache_addrs * | ia, |
const Dns::LookupDetails & | dns | ||
) |
Definition at line 394 of file client_side_request.cc.
References Server::clientConnection, debugs, ClientHttpRequest::doCallouts(), HttpRequest::flags, ClientHttpRequest::getConn(), Dns::CachedIps::have(), hostHeaderVerifyFailed(), RequestFlags::hostVerified, http, Comm::Connection::local, HttpRequest::recordLookup(), and ClientHttpRequest::request.
Referenced by hostHeaderIpVerifyWrapper().
◆ hostHeaderVerify()
void ClientRequestContext::hostHeaderVerify | ( | ) |
Definition at line 460 of file client_side_request.cc.
References Server::clientConnection, Config, debugs, AnyP::UriScheme::defaultPort(), ClientHttpRequest::doCallouts(), HttpRequest::flags, ClientHttpRequest::getConn(), AnyP::Uri::getScheme(), HttpHeader::getStr(), Http::Message::header, Http::HOST, AnyP::Uri::host(), hostHeaderIpVerifyWrapper(), hostHeaderVerifyFailed(), SquidConfig::hostStrictVerify, RequestFlags::hostVerified, http, RequestFlags::intercepted, RequestFlags::interceptTproxy, RequestFlags::internal, ipcache_nbgethostbyname(), Comm::Connection::local, matchDomainName(), HttpRequest::method, Http::METHOD_CONNECT, SquidConfig::onoff, port, AnyP::Uri::port(), Ip::Address::port(), ClientHttpRequest::request, safe_free, strtoll(), HttpRequest::url, and xstrdup.
Referenced by ClientHttpRequest::doCallouts().
◆ hostHeaderVerifyFailed()
void ClientRequestContext::hostHeaderVerifyFailed | ( | const char * | A, |
const char * | B | ||
) |
Definition at line 413 of file client_side_request.cc.
References A, assert, HttpRequest::auth_user_request, B, RequestFlags::cachable, ClientHttpRequest::client_stream, Server::clientConnection, clientStreamRead(), Config, dlink_node::data, DBG_IMPORTANT, debugs, ClientHttpRequest::doCallouts(), HttpRequest::effectiveRequestUri(), ERR_CONFLICT_HOST, HttpRequest::flags, ConnStateData::getAuth(), ClientHttpRequest::getConn(), HttpHeader::getStr(), Http::Message::header, RequestFlags::hierarchical, SquidConfig::hostStrictVerify, http, HttpRequest::method, Http::METHOD_CONNECT, SquidConfig::onoff, dlink_node::prev, ClientHttpRequest::request, Http::scConflict, dlink_list::tail, Http::USER_AGENT, and SupportOrVeto::veto().
Referenced by hostHeaderIpVerify(), and hostHeaderVerify().
◆ httpStateIsValid()
bool ClientRequestContext::httpStateIsValid | ( | ) |
Definition at line 272 of file client_side_request.cc.
References cbdataReferenceDone, cbdataReferenceValid(), and http.
Referenced by checkNoCacheDoneWrapper(), clientAccessCheckDoneWrapper(), clientFollowXForwardedForCheck(), clientRedirectDoneWrapper(), clientStoreIdDoneWrapper(), sslBumpAccessCheckDone(), and sslBumpAccessCheckDoneWrapper().
◆ operator delete()
|
inline |
Definition at line 30 of file ClientRequestContext.h.
◆ operator new()
|
inline |
Definition at line 30 of file ClientRequestContext.h.
◆ sslBumpAccessCheck()
bool ClientRequestContext::sslBumpAccessCheck | ( | ) |
Initiates and start the acl checklist to check if the CONNECT request must be bumped.
- Return values
-
true if the acl check scheduled false if no ssl-bump required
Definition at line 1246 of file client_side_request.cc.
References SquidConfig::accessList, ClientHttpRequest::al, Ssl::bumpBump, Ssl::bumpEnd, Ssl::bumpMode(), clientAclChecklistCreate(), Config, debugs, error, errorTypeName(), HttpRequest::flags, RequestFlags::forceTunnel, ClientHttpRequest::getConn(), http, ErrorState::httpStatus, HttpRequest::method, Http::METHOD_CONNECT, ACLFilledChecklist::NonBlockingCheck(), ConnStateData::port, ClientHttpRequest::redirect, ClientHttpRequest::request, Http::scProxyAuthenticationRequired, ConnStateData::serverBump(), SquidConfig::ssl_bump, sslBumpAccessCheckDoneWrapper(), ConnStateData::sslBumpMode, ClientHttpRequest::sslBumpNeed(), ClientHttpRequest::Redirect::status, ConnStateData::switchedToHttps(), and ErrorState::type.
Referenced by ClientHttpRequest::doCallouts().
◆ sslBumpAccessCheckDone()
void ClientRequestContext::sslBumpAccessCheckDone | ( | const Acl::Answer & | answer | ) |
Definition at line 1331 of file client_side_request.cc.
References ClientHttpRequest::al, Acl::Answer::allowed(), Ssl::bumpMode(), Ssl::bumpSplice, Ssl::bumpTerminate, Server::clientConnection, Comm::Connection::close(), debugs, ClientHttpRequest::doCallouts(), ClientHttpRequest::getConn(), http, httpStateIsValid(), Comm::IsConnOpen(), Acl::Answer::kind, and ClientHttpRequest::sslBumpNeed().
Referenced by sslBumpAccessCheckDoneWrapper().
◆ toCbdata()
|
inlinenoexcept |
Definition at line 30 of file ClientRequestContext.h.
Member Data Documentation
◆ adaptation_acl_check_done
bool ClientRequestContext::adaptation_acl_check_done = false |
Definition at line 72 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ adapted_http_access_done
bool ClientRequestContext::adapted_http_access_done = false |
Definition at line 70 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ CBDATA_ClientRequestContext
|
staticprivate |
Definition at line 30 of file ClientRequestContext.h.
◆ currentXffHopNumber
size_t ClientRequestContext::currentXffHopNumber = 0 |
Definition at line 87 of file ClientRequestContext.h.
Referenced by clientFollowXForwardedForCheck().
◆ error
ErrorState* ClientRequestContext::error = nullptr |
Definition at line 84 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::calloutsError(), clientAccessCheckDone(), ClientHttpRequest::doCallouts(), sslBumpAccessCheck(), and ~ClientRequestContext().
◆ host_header_verify_done
bool ClientRequestContext::host_header_verify_done = false |
Definition at line 68 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ http
ClientHttpRequest* ClientRequestContext::http |
Definition at line 64 of file ClientRequestContext.h.
Referenced by checkNoCache(), checkNoCacheDone(), clientAccessCheck(), clientAccessCheck2(), clientAccessCheckDone(), clientFollowXForwardedForCheck(), clientRedirectAccessCheckDone(), clientRedirectDone(), clientRedirectStart(), clientStoreIdAccessCheckDone(), clientStoreIdDone(), clientStoreIdStart(), ClientHttpRequest::doCallouts(), hostHeaderIpVerify(), hostHeaderVerify(), hostHeaderVerifyFailed(), httpStateIsValid(), sslBumpAccessCheck(), sslBumpAccessCheckDone(), and ~ClientRequestContext().
◆ http_access_done
bool ClientRequestContext::http_access_done = false |
Definition at line 69 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ interpreted_req_hdrs
bool ClientRequestContext::interpreted_req_hdrs = false |
Definition at line 77 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ no_cache_done
bool ClientRequestContext::no_cache_done = false |
Definition at line 76 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ readNextRequest
bool ClientRequestContext::readNextRequest = false |
Definition at line 83 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::calloutsError(), clientAccessCheckDone(), and ClientHttpRequest::doCallouts().
◆ redirect_done
bool ClientRequestContext::redirect_done = false |
Definition at line 74 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ redirect_state
int ClientRequestContext::redirect_state = REDIRECT_NONE |
Definition at line 65 of file ClientRequestContext.h.
Referenced by clientRedirectDone(), and ClientHttpRequest::doCallouts().
◆ sslBumpCheckDone
bool ClientRequestContext::sslBumpCheckDone = false |
Definition at line 80 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ store_id_done
bool ClientRequestContext::store_id_done = false |
Definition at line 75 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
◆ store_id_state
int ClientRequestContext::store_id_state = REDIRECT_NONE |
Definition at line 66 of file ClientRequestContext.h.
Referenced by clientStoreIdDone(), and ClientHttpRequest::doCallouts().
◆ toClientMarkingDone
bool ClientRequestContext::toClientMarkingDone = false |
Definition at line 78 of file ClientRequestContext.h.
Referenced by ClientHttpRequest::doCallouts().
The documentation for this class was generated from the following files:
Introduction
- About Squid
- Why Squid?
- Squid Developers
- How to Donate
- How to Help Out
- Getting Squid
- Squid Source Packages
- Squid Deployment Case-Studies
- Squid Software Foundation
Documentation
- Quick Setup
- Configuration:
- FAQ and Wiki
- Guide Books:
- Non-English
- More...
Support
- Security Advisories
- Bugzilla Database
- Mailing lists
- Contacting us
- Commercial services
- Project Sponsors
- Squid-based products