2 * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_SRC_CLIENTREQUESTCONTEXT_H
10 #define SQUID_SRC_CLIENTREQUESTCONTEXT_H
12 #include "acl/forward.h"
13 #include "base/RefCount.h"
16 #include "dns/forward.h"
17 #include "helper/forward.h"
21 #include "adaptation/forward.h"
25 class ClientHttpRequest
;
28 class ClientRequestContext
: public RefCountable
30 CBDATA_CLASS(ClientRequestContext
);
33 ClientRequestContext(ClientHttpRequest
*);
34 ~ClientRequestContext() override
;
36 bool httpStateIsValid();
37 void hostHeaderVerify();
38 void hostHeaderIpVerify(const ipcache_addrs
*, const Dns::LookupDetails
&);
39 void hostHeaderVerifyFailed(const char *A
, const char *B
);
40 void clientAccessCheck();
41 void clientAccessCheck2();
42 void clientAccessCheckDone(const Acl::Answer
&);
43 void clientRedirectStart();
44 void clientRedirectDone(const Helper::Reply
&);
45 void clientStoreIdStart();
46 void clientStoreIdDone(const Helper::Reply
&);
48 void checkNoCacheDone(const Acl::Answer
&);
50 void adaptationAccessCheck();
54 * Initiates and start the acl checklist to check if the CONNECT
55 * request must be bumped.
56 * \retval true if the acl check scheduled
57 * \retval false if no ssl-bump required
59 bool sslBumpAccessCheck();
60 /// The callback function for ssl-bump access check list
61 void sslBumpAccessCheckDone(const Acl::Answer
&answer
);
64 ClientHttpRequest
*http
;
65 int redirect_state
= REDIRECT_NONE
;
66 int store_id_state
= REDIRECT_NONE
;
68 bool host_header_verify_done
= false;
69 bool http_access_done
= false;
70 bool adapted_http_access_done
= false;
72 bool adaptation_acl_check_done
= false;
74 bool redirect_done
= false;
75 bool store_id_done
= false;
76 bool no_cache_done
= false;
77 bool interpreted_req_hdrs
= false;
78 bool toClientMarkingDone
= false;
80 bool sslBumpCheckDone
= false;
83 bool readNextRequest
= false; ///< whether Squid should read after error handling
84 ErrorState
*error
= nullptr; ///< saved error page for centralized/delayed processing
86 #if FOLLOW_X_FORWARDED_FOR
87 size_t currentXffHopNumber
= 0; ///< number of X-Forwarded-For header values processed so far
91 #endif /* SQUID_SRC_CLIENTREQUESTCONTEXT_H */