Manages a connection from an HTTP/1 or HTTP/0.9 client. More...

#include <Http1Server.h>

Inheritance diagram for Http::One::Server:
Collaboration diagram for Http::One::Server:

Public Types

typedef CbcPointer< AsyncJobPointer
 
typedef CbcPointer< BodyProducerPointer
 

Public Member Functions

 Server (const MasterXaction::Pointer &xact, const bool beHttpsServer)
 
 ~Server () override
 
void readSomeHttpData ()
 
bool reading () const
 whether Comm::Read() is scheduled More...
 
void receivedFirstByte () override
 Update flags and timeout after the first byte received. More...
 
bool handleReadData () override
 
void afterClientRead () override
 processing to be done after a Comm::Read() More...
 
void afterClientWrite (size_t) override
 processing to sync state after a Comm::Write() More...
 
void sendControlMsg (HttpControlMsg) override
 called to send the 1xx message and notify the Source More...
 
void doneWithControlMsg () override
 
void readNextRequest ()
 Traffic parsing. More...
 
void kick ()
 try to make progress on a transaction or read more I/O More...
 
bool isOpen () const
 
int64_t mayNeedToReadMoreBody () const
 
const Auth::UserRequest::PointergetAuth () const
 
void setAuth (const Auth::UserRequest::Pointer &aur, const char *cause)
 
bool transparent () const
 
const char * stoppedReceiving () const
 true if we stopped receiving the request More...
 
const char * stoppedSending () const
 true if we stopped sending the response More...
 
void stopReceiving (const char *error)
 note request receiving error and close as soon as we write the response More...
 
void stopSending (const char *error)
 note response sending error and close as soon as we read the request More...
 
void resetReadTimeout (time_t timeout)
 (re)sets timeout for receiving more bytes from the client More...
 
void extendLifetime ()
 (re)sets client_lifetime timeout More...
 
void expectNoForwarding ()
 cleans up virgin request [body] forwarding state More...
 
BodyPipe::Pointer expectRequestBody (int64_t size)
 
bool handleRequestBodyData ()
 
void notePinnedConnectionBecameIdle (PinnedIdleContext pic)
 Called when a pinned connection becomes available for forwarding the next request. More...
 
void pinBusyConnection (const Comm::ConnectionPointer &pinServerConn, const HttpRequest::Pointer &request)
 
void unpinConnection (const bool andClose)
 Undo pinConnection() and, optionally, close the pinned connection. More...
 
CachePeerpinnedPeer () const
 
bool pinnedAuth () const
 
virtual void notePeerConnection (Comm::ConnectionPointer)
 called just before a FwdState-dispatched job starts using connection More...
 
virtual void clientPinnedConnectionClosed (const CommCloseCbParams &io)
 Our close handler called by Comm when the pinned connection is closed. More...
 
void clientReadFtpData (const CommIoCbParams &io)
 
void connStateClosed (const CommCloseCbParams &io)
 
void requestTimeout (const CommTimeoutCbParams &params)
 
void lifetimeTimeout (const CommTimeoutCbParams &params)
 
bool doneAll () const override
 whether positive goal has been reached More...
 
void swanSong () override
 
void callException (const std::exception &) override
 called when the job throws during an async call More...
 
void quitAfterError (HttpRequest *request)
 
void stopPinnedConnectionMonitoring ()
 The caller assumes responsibility for connection closure detection. More...
 
Security::IoResult acceptTls ()
 
void postHttpsAccept ()
 the second part of old httpsAccept, waiting for future HttpsServer home More...
 
void startPeekAndSplice ()
 Initializes and starts a peek-and-splice negotiation with the SSL client. More...
 
void doPeekAndSpliceStep ()
 
void httpsPeeked (PinnedIdleContext pic)
 called by FwdState when it is done bumping the server More...
 
bool splice ()
 Splice a bumped client connection on peek-and-splice mode. More...
 
void getSslContextStart ()
 Start to create dynamic Security::ContextPointer for host or uses static port SSL context. More...
 
void getSslContextDone (Security::ContextPointer &)
 finish configuring the newly created SSL context" More...
 
void sslCrtdHandleReply (const Helper::Reply &reply)
 Process response from ssl_crtd. More...
 
void switchToHttps (ClientHttpRequest *, Ssl::BumpMode bumpServerMode)
 
void parseTlsHandshake ()
 
bool switchedToHttps () const
 
Ssl::ServerBumpserverBump ()
 
void setServerBump (Ssl::ServerBump *srvBump)
 
const SBufsslCommonName () const
 
void resetSslCommonName (const char *name)
 
const SBuftlsClientSni () const
 
void buildSslCertGenerationParams (Ssl::CertificateProperties &certProperties)
 
bool serveDelayedError (Http::Stream *)
 
char * prepareTlsSwitchingURL (const Http1::RequestParserPointer &hp)
 
void add (const Http::StreamPointer &context)
 registers a newly created stream More...
 
void consumeInput (const size_t byteCount)
 remove no longer needed leading bytes from the input buffer More...
 
Http::StreamabortRequestParsing (const char *const errUri)
 stop parsing the request and create context for relaying error info More...
 
bool fakeAConnectRequest (const char *reason, const SBuf &payload)
 
bool initiateTunneledRequest (HttpRequest::Pointer const &cause, const char *reason, const SBuf &payload)
 generates and sends to tunnel.cc a fake request with a given payload More...
 
bool shouldPreserveClientData () const
 
ClientHttpRequestbuildFakeRequest (SBuf &useHost, AnyP::KnownPort usePort, const SBuf &payload)
 build a fake http request More...
 
void startShutdown () override
 
void endingShutdown () override
 
NotePairs::Pointer notes ()
 
bool hasNotes () const
 
const ProxyProtocol::HeaderPointerproxyProtocolHeader () const
 
void updateError (const Error &)
 if necessary, stores new error information (if any) More...
 
void updateError (const err_type c, const ErrorDetailPointer &d)
 emplacement/convenience wrapper for updateError(const Error &) More...
 
void fillChecklist (ACLFilledChecklist &) const override
 configure the given checklist (to reflect the current transaction state) More...
 
void fillConnectionLevelDetails (ACLFilledChecklist &) const
 
void readSomeData ()
 maybe grow the inBuf and schedule Comm::Read() More...
 
void stopReading ()
 cancels Comm::Read() if it is scheduled More...
 
virtual void writeSomeData ()
 maybe find some data to send and schedule a Comm::Write() More...
 
void write (MemBuf *mb)
 schedule some data for a Comm::Write() More...
 
void write (char *buf, int len)
 schedule some data for a Comm::Write() More...
 
bool writing () const
 whether Comm::Write() is scheduled More...
 
void maybeMakeSpaceAvailable ()
 grows the available read buffer space (if possible) More...
 
bool canBeCalled (AsyncCall &call) const
 whether we can be called More...
 
void callStart (AsyncCall &call)
 
virtual void callEnd ()
 called right after the called job method More...
 
void handleStopRequest ()
 process external request to terminate now (i.e. during this async call) More...
 
virtual void * toCbdata ()=0
 
void wroteControlMsg (const CommIoCbParams &)
 callback to handle Comm::Write completion More...
 

Static Public Member Functions

static Comm::ConnectionPointer BorrowPinnedConnection (HttpRequest *, const AccessLogEntryPointer &)
 
static void sslCrtdHandleReplyWrapper (void *data, const Helper::Reply &reply)
 Callback function. It is called when squid receive message from ssl_crtd. More...
 
static void Start (const Pointer &job)
 
static void RegisterWithCacheManager ()
 

Public Attributes

Http1::TeChunkedParserbodyParser = nullptr
 parses HTTP/1.1 chunked request body More...
 
Ip::Address log_addr
 
struct {
   bool   readMore = true
 needs comm_read (for this request or new requests) More...
 
   bool   swanSang = false
 
flags
 
struct {
   Comm::ConnectionPointer   serverConnection
 
   char *   host = nullptr
 host name of pinned connection More...
 
   AnyP::Port   port
 destination port of the request that caused serverConnection More...
 
   bool   pinned = false
 this connection was pinned More...
 
   bool   auth = false
 pinned for www authentication More...
 
   bool   reading = false
 we are monitoring for peer connection closure More...
 
   bool   zeroReply = false
 server closed w/o response (ERR_ZERO_SIZE_OBJECT) More...
 
   bool   peerAccessDenied = false
 cache_peer_access denied pinned connection reuse More...
 
   CachePeer *   peer = nullptr
 CachePeer the connection goes via. More...
 
   AsyncCall::Pointer   readHandler
 detects serverConnection closure More...
 
   AsyncCall::Pointer   closeHandler
 The close handler for pinned server side connection. More...
 
pinning
 
Ssl::BumpMode sslBumpMode = Ssl::bumpEnd
 ssl_bump decision (Ssl::bumpEnd if n/a). More...
 
Security::HandshakeParser tlsParser
 
SBuf preservedClientData
 
Error bareError
 a problem that occurred without a request (e.g., while parsing headers) More...
 
Security::KeyLogger keyLogger
 managers logging of the being-accepted TLS connection secrets More...
 
Comm::ConnectionPointer clientConnection
 
AnyP::ProtocolVersion transferProtocol
 
SBuf inBuf
 read I/O buffer for the client connection More...
 
bool receivedFirstByte_
 true if at least one byte received on this connection More...
 
Pipeline pipeline
 set of requests waiting to be serviced More...
 
const InstanceId< AsyncJobid
 job identifier More...
 
AsyncCall::Pointer cbControlMsgSent
 Call to schedule when the control msg has been sent. More...
 

Protected Member Functions

Http::StreamparseOneRequest () override
 
void processParsedRequest (Http::StreamPointer &context) override
 start processing a freshly parsed request More...
 
void handleReply (HttpReply *rep, StoreIOBuffer receivedData) override
 
bool writeControlMsgAndCall (HttpReply *rep, AsyncCall::Pointer &call) override
 handle a control message received by context from a peer and call back More...
 
int pipelinePrefetchMax () const override
 returning N allows a pipeline of 1+N requests (see pipeline_prefetch) More...
 
time_t idleTimeout () const override
 timeout to use when waiting for the next request More...
 
void noteTakeServerConnectionControl (ServerConnectionContext) override
 
void noteMoreBodySpaceAvailable (BodyPipe::Pointer) override
 
void noteBodyConsumerAborted (BodyPipe::Pointer) override
 
void start () override
 called by AsyncStart; do not call directly More...
 
void proceedAfterBodyContinuation (Http::StreamPointer context)
 
void startDechunkingRequest ()
 initialize dechunking state More...
 
void finishDechunkingRequest (bool withSuccess)
 put parsed content into input buffer and clean up More...
 
void abortChunkedRequestBody (const err_type error)
 quit on errors related to chunked request body handling More...
 
err_type handleChunkedRequestBody ()
 parses available chunked encoded body bytes, checks size, returns errors More...
 
Comm::ConnectionPointer borrowPinnedConnection (HttpRequest *, const AccessLogEntryPointer &)
 ConnStateData-specific part of BorrowPinnedConnection() More...
 
void startPinnedConnectionMonitoring ()
 
void clientPinnedConnectionRead (const CommIoCbParams &io)
 
bool handleIdleClientPinnedTlsRead ()
 
Http::StreamparseHttpRequest (const Http1::RequestParserPointer &)
 
void whenClientIpKnown ()
 
bool tunnelOnError (const err_type)
 initiate tunneling if possible or return false otherwise More...
 
void doClientRead (const CommIoCbParams &io)
 
void clientWriteDone (const CommIoCbParams &io)
 
void deleteThis (const char *aReason)
 
void mustStop (const char *aReason)
 
bool done () const
 the job is destroyed in callEnd() when done() More...
 
virtual const char * status () const
 internal cleanup; do not call directly More...
 
void stopProducingFor (RefCount< BodyPipe > &, bool atEof)
 

Static Protected Member Functions

static void ReportAllJobs (StoreEntry *)
 writes a cache manager report about all jobs existing in this worker More...
 

Protected Attributes

BodyPipe::Pointer bodyPipe
 set when we are reading request body More...
 
bool preservingClientData_ = false
 whether preservedClientData is valid and should be kept up to date More...
 
AsyncCall::Pointer reader
 set when we are reading More...
 
AsyncCall::Pointer writer
 set when we are writing More...
 
const char * stopReason
 reason for forcing done() to be true More...
 
const char * typeName
 kid (leaf) class name, for debugging More...
 
AsyncCall::Pointer inCall
 the asynchronous call being handled, if any More...
 
bool started_ = false
 Start() has finished successfully. More...
 
bool swanSang_ = false
 swanSong() was called More...
 

Private Types

typedef void(RegisteredRunner::* Method) ()
 a pointer to one of the above notification methods More...
 

Private Member Functions

 CBDATA_CHILD (Server)
 
void processHttpRequest (Http::Stream *const context)
 
void handleHttpRequestData ()
 
bool buildHttpRequest (Http::StreamPointer &context)
 
void setReplyError (Http::StreamPointer &context, HttpRequest::Pointer &request, err_type requestError, Http::StatusCode errStatusCode, const char *requestErrorBytes)
 
void terminateAll (const Error &, const LogTagsErrors &) override
 abort any pending transactions and prevent new ones (by closing) More...
 
bool shouldCloseOnEof () const override
 whether to stop serving our client after reading EOF on its connection More...
 
void checkLogging ()
 log the last (attempt at) transaction if nobody else did More...
 
void parseRequests ()
 
void clientAfterReadingRequests ()
 
bool concurrentRequestQueueFilled () const
 
void pinConnection (const Comm::ConnectionPointer &pinServerConn, const HttpRequest &request)
 Forward future client requests using the given server connection. More...
 
bool proxyProtocolValidateClient ()
 
bool parseProxyProtocolHeader ()
 
bool proxyProtocolError (const char *reason)
 
Security::ContextPointer getTlsContextFromCache (const SBuf &cacheKey, const Ssl::CertificateProperties &certProperties)
 
void storeTlsContextToCache (const SBuf &cacheKey, Security::ContextPointer &ctx)
 
void handleSslBumpHandshakeError (const Security::IoResult &)
 process a problematic Security::Accept() result on the SslBump code path More...
 
virtual void finalizedInCbdataChild ()=0
 hack: ensure CBDATA_CHILD() after a toCbdata()-defining CBDATA_INTERMEDIATE() More...
 
void registerRunner ()
 
void unregisterRunner ()
 unregisters self; safe to call multiple times More...
 
virtual void bootstrapConfig ()
 
virtual void finalizeConfig ()
 
virtual void claimMemoryNeeds ()
 
virtual void useConfig ()
 
virtual void startReconfigure ()
 
virtual void syncConfig ()
 
virtual void finishShutdown ()
 Meant for cleanup of services needed by the already destroyed objects. More...
 

Private Attributes

Http1::RequestParserPointer parser_
 
HttpRequestMethod method_
 parsed HTTP method More...
 
const bool isHttpsServer
 temporary hack to avoid creating a true HttpsServer class More...
 
bool needProxyProtocolHeader_ = false
 whether PROXY protocol header is still expected More...
 
ProxyProtocol::HeaderPointer proxyProtocolHeader_
 the parsed PROXY protocol header More...
 
Auth::UserRequest::Pointer auth_
 some user details that can be used to perform authentication on this connection More...
 
bool switchedToHttps_ = false
 
bool parsingTlsHandshake = false
 
uint64_t parsedBumpedRequestCount = 0
 The number of parsed HTTP requests headers on a bumped client connection. More...
 
SBuf tlsConnectHostOrIp
 The TLS server host name appears in CONNECT request or the server ip address for the intercepted requests. More...
 
AnyP::Port tlsConnectPort
 The TLS server port number as passed in the CONNECT request. More...
 
SBuf sslCommonName_
 CN name for SSL certificate generation. More...
 
SBuf tlsClientSni_
 TLS client delivered SNI value. Empty string if none has been received. More...
 
SBuf sslBumpCertKey
 Key to use to store/retrieve generated certificate. More...
 
Ssl::ServerBumpsslServerBump = nullptr
 HTTPS server cert. fetching state for bump-ssl-server-first. More...
 
Ssl::CertSignAlgorithm signAlgorithm = Ssl::algSignTrusted
 The signing algorithm to use. More...
 
const char * stoppedSending_ = nullptr
 the reason why we no longer write the response or nil More...
 
const char * stoppedReceiving_ = nullptr
 the reason why we no longer read the request or nil More...
 
NotePairs::Pointer theNotes
 

Detailed Description

Definition at line 23 of file Http1Server.h.

Member Typedef Documentation

◆ Method

typedef void(RegisteredRunner::* RegisteredRunner::Method) ()
inherited

Definition at line 94 of file RunnersRegistry.h.

◆ Pointer [1/2]

Definition at line 34 of file AsyncJob.h.

◆ Pointer [2/2]

Definition at line 25 of file BodyPipe.h.

Constructor & Destructor Documentation

◆ Server()

Server::Server ( const MasterXaction::Pointer xact,
const bool  beHttpsServer 
)

Definition at line 27 of file Http1Server.cc.

◆ ~Server()

Http::One::Server::~Server ( )
inlineoverride

Definition at line 29 of file Http1Server.h.

Member Function Documentation

◆ abortChunkedRequestBody()

◆ abortRequestParsing()

◆ acceptTls()

Security::IoResult ConnStateData::acceptTls ( )
inherited

Starts or resumes accepting a TLS connection. TODO: Make this helper method protected after converting clientNegotiateSSL() into a method.

Definition at line 2249 of file client_side.cc.

References Security::Accept(), assert, Security::KeyLogger::checkpoint(), Server::clientConnection, Comm::Connection::fd, fd_table, and ConnStateData::keyLogger.

Referenced by ConnStateData::startPeekAndSplice().

◆ add()

void ConnStateData::add ( const Http::StreamPointer context)
inherited

◆ afterClientRead()

◆ afterClientWrite()

void ConnStateData::afterClientWrite ( size_t  )
overridevirtualinherited

◆ bootstrapConfig()

virtual void RegisteredRunner::bootstrapConfig ( )
inlinevirtualinherited

Called right before parsing squid.conf. Meant for initializing/preparing configuration parsing facilities.

Reimplemented in NtlmAuthRr.

Definition at line 46 of file RunnersRegistry.h.

Referenced by SquidMain().

◆ BorrowPinnedConnection()

Comm::ConnectionPointer ConnStateData::BorrowPinnedConnection ( HttpRequest request,
const AccessLogEntryPointer ale 
)
staticinherited
Returns
validated pinned to-server connection, stopping its monitoring
Exceptions
anewly allocated ErrorState if validation fails

Definition at line 3905 of file client_side.cc.

References ERR_CANNOT_FORWARD, ErrorState::NewForwarding(), and HttpRequest::pinnedConnection().

Referenced by FwdState::usePinned(), and TunnelStateData::usePinned().

◆ borrowPinnedConnection()

◆ buildFakeRequest()

◆ buildHttpRequest()

◆ buildSslCertGenerationParams()

void ConnStateData::buildSslCertGenerationParams ( Ssl::CertificateProperties certProperties)
inherited

◆ callEnd()

void AsyncJob::callEnd ( )
virtualinherited

◆ callException()

void ConnStateData::callException ( const std::exception &  e)
overridevirtualinherited

Reimplemented from AsyncJob.

Reimplemented in Ftp::Server.

Definition at line 639 of file client_side.cc.

References AsyncJob::callException(), ERR_GATEWAY_FAILURE, Here, and ConnStateData::updateError().

◆ callStart()

void AsyncJob::callStart ( AsyncCall call)
inherited

◆ canBeCalled()

bool AsyncJob::canBeCalled ( AsyncCall call) const
inherited

Definition at line 117 of file AsyncJob.cc.

References AsyncCall::cancel(), debugs, and AsyncJob::inCall.

◆ CBDATA_CHILD()

Http::One::Server::CBDATA_CHILD ( Server  )
private

◆ checkLogging()

◆ claimMemoryNeeds()

virtual void RegisteredRunner::claimMemoryNeeds ( )
inlinevirtualinherited

Called after finalizeConfig(). Meant for announcing memory reservations before memory is allocated.

Reimplemented in IpcIoRr, and MemStoreRr.

Definition at line 55 of file RunnersRegistry.h.

Referenced by RunConfigUsers().

◆ clientAfterReadingRequests()

◆ clientPinnedConnectionClosed()

void ConnStateData::clientPinnedConnectionClosed ( const CommCloseCbParams io)
virtualinherited

◆ clientPinnedConnectionRead()

void ConnStateData::clientPinnedConnectionRead ( const CommIoCbParams io)
protectedinherited

Our read handler called by Comm when the server either closes an idle pinned connection or perhaps unexpectedly sends something on that idle (from Squid p.o.v.) connection.

Definition at line 3845 of file client_side.cc.

References Server::clientConnection, Comm::Connection::close(), CommCommonCbParams::conn, debugs, Pipeline::empty(), Comm::ERR_CLOSING, CommCommonCbParams::flag, ConnStateData::handleIdleClientPinnedTlsRead(), Must, ConnStateData::pinning, Server::pipeline, and CommIoCbParams::size.

Referenced by ConnStateData::startPinnedConnectionMonitoring().

◆ clientReadFtpData()

void ConnStateData::clientReadFtpData ( const CommIoCbParams io)
inherited

◆ clientWriteDone()

void Server::clientWriteDone ( const CommIoCbParams io)
protectedinherited

callback handling the Comm::Write completion

Will call afterClientWrite(size_t) to sync the I/O state. Then writeSomeData() to initiate any followup writes that could be immediately done.

Definition at line 193 of file Server.cc.

References Server::afterClientWrite(), Server::clientConnection, CommCommonCbParams::conn, debugs, Comm::ERR_CLOSING, Comm::Connection::fd, CommCommonCbParams::flag, Pipeline::front(), Comm::IsConnOpen(), Must, Server::pipeline, CommIoCbParams::size, Server::writer, and Server::writeSomeData().

Referenced by Server::write().

◆ concurrentRequestQueueFilled()

bool ConnStateData::concurrentRequestQueueFilled ( ) const
privateinherited

Limit the number of concurrent requests.

Returns
true when there are available position(s) in the pipeline queue for another request.
false when the pipeline queue is full or disabled.

Definition at line 1750 of file client_side.cc.

References Ssl::bumpSplice, Server::clientConnection, Pipeline::count(), debugs, Server::pipeline, ConnStateData::pipelinePrefetchMax(), ConnStateData::sslBumpMode, and ConnStateData::transparent().

Referenced by ConnStateData::parseRequests().

◆ connStateClosed()

void ConnStateData::connStateClosed ( const CommCloseCbParams io)
inherited

◆ consumeInput()

void ConnStateData::consumeInput ( const size_t  byteCount)
inherited

◆ deleteThis()

void AsyncJob::deleteThis ( const char *  aReason)
protectedinherited

◆ doClientRead()

◆ done()

bool AsyncJob::done ( ) const
protectedinherited

◆ doneAll()

bool ConnStateData::doneAll ( ) const
inlineoverridevirtualinherited

Reimplemented from AsyncJob.

Definition at line 239 of file client_side.h.

References AsyncJob::doneAll().

◆ doneWithControlMsg()

void ConnStateData::doneWithControlMsg ( )
overridevirtualinherited

◆ doPeekAndSpliceStep()

void ConnStateData::doPeekAndSpliceStep ( )
inherited

Called when a peek-and-splice step finished. For example after server SSL certificates received and fake server SSL certificates generated

Definition at line 3085 of file client_side.cc.

References assert, BIO_get_data(), Server::clientConnection, clientNegotiateSSL(), COMM_SELECT_WRITE, debugs, Comm::Connection::fd, fd_table, Ssl::ClientBio::hold(), Comm::SetSelect(), and ConnStateData::switchedToHttps_.

Referenced by ConnStateData::getSslContextStart(), and ConnStateData::sslCrtdHandleReply().

◆ endingShutdown()

void ConnStateData::endingShutdown ( )
overridevirtualinherited

Called after shutdown_lifetime grace period ends and before stopping the main loop. At least one main loop iteration is guaranteed after this call. Meant for cleanup and state saving that may require other modules.

Reimplemented from RegisteredRunner.

Definition at line 1049 of file client_side.cc.

References Server::clientConnection, Comm::Connection::close(), and Comm::IsConnOpen().

Referenced by ConnStateData::startShutdown().

◆ expectNoForwarding()

void ConnStateData::expectNoForwarding ( )
inherited

◆ expectRequestBody()

BodyPipe::Pointer ConnStateData::expectRequestBody ( int64_t  size)
inherited

◆ extendLifetime()

◆ fakeAConnectRequest()

bool ConnStateData::fakeAConnectRequest ( const char *  reason,
const SBuf payload 
)
inherited

◆ fillChecklist()

◆ fillConnectionLevelDetails()

void ConnStateData::fillConnectionLevelDetails ( ACLFilledChecklist checklist) const
inherited

fillChecklist() obligations not fulfilled by the front request TODO: This is a temporary ACLFilledChecklist::setConn() callback to allow filling checklist using our non-public information sources. It should be removed as unnecessary by making ACLs extract the information they need from the ACLFilledChecklist::conn() without filling/copying.

Definition at line 3532 of file client_side.cc.

References assert, Server::clientConnection, ACLFilledChecklist::conn(), Comm::Connection::local, ACLFilledChecklist::my_addr, Comm::Connection::remote, ACLFilledChecklist::request, ACLFilledChecklist::rfc931, Comm::Connection::rfc931, ACLFilledChecklist::setIdent(), ACLFilledChecklist::src_addr, ACLFilledChecklist::sslErrors, Ssl::ServerBump::sslErrors(), and ConnStateData::sslServerBump.

Referenced by ACLFilledChecklist::setConn().

◆ finalizeConfig()

virtual void RegisteredRunner::finalizeConfig ( )
inlinevirtualinherited

Called after parsing squid.conf. Meant for setting configuration options that depend on other configuration options and were not explicitly configured.

Reimplemented in sslBumpCfgRr, and MemStoreRr.

Definition at line 51 of file RunnersRegistry.h.

Referenced by SquidMain().

◆ finalizedInCbdataChild()

virtual void CbdataParent::finalizedInCbdataChild ( )
privatepure virtualinherited

◆ finishDechunkingRequest()

◆ finishShutdown()

virtual void RegisteredRunner::finishShutdown ( )
inlinevirtualinherited

Definition at line 91 of file RunnersRegistry.h.

Referenced by RunRegistered(), SquidShutdown(), TestRock::tearDown(), and watch_child().

◆ getAuth()

const Auth::UserRequest::Pointer & ConnStateData::getAuth ( ) const
inlineinherited

Fetch the user details for connection based authentication NOTE: this is ONLY connection based because NTLM and Negotiate is against HTTP spec.

Definition at line 123 of file client_side.h.

References ConnStateData::auth_.

Referenced by AuthenticateAcl(), ConnStateData::buildFakeRequest(), ClientHttpRequest::calloutsError(), ClientRequestContext::clientAccessCheckDone(), constructHelperQuery(), and ClientRequestContext::hostHeaderVerifyFailed().

◆ getSslContextDone()

◆ getSslContextStart()

◆ getTlsContextFromCache()

Security::ContextPointer ConnStateData::getTlsContextFromCache ( const SBuf cacheKey,
const Ssl::CertificateProperties certProperties 
)
privateinherited

◆ handleChunkedRequestBody()

◆ handleHttpRequestData()

void Http::One::Server::handleHttpRequestData ( )
private

◆ handleIdleClientPinnedTlsRead()

bool ConnStateData::handleIdleClientPinnedTlsRead ( )
protectedinherited

Handles a ready-for-reading TLS squid-to-server connection that we thought was idle.

Returns
false if and only if the connection should be closed.

Definition at line 3803 of file client_side.cc.

References DBG_IMPORTANT, debugs, error(), fd_table, Must, ConnStateData::pinning, and ConnStateData::startPinnedConnectionMonitoring().

Referenced by ConnStateData::clientPinnedConnectionRead().

◆ handleReadData()

bool ConnStateData::handleReadData ( )
overridevirtualinherited

called when new request data has been read from the socket

Return values
falsecalled comm_close or setReplyToError (the caller should bail)
truewe did not call comm_close or setReplyToError

Implements Server.

Definition at line 1958 of file client_side.cc.

References ConnStateData::bodyPipe, and ConnStateData::handleRequestBodyData().

◆ handleReply()

void Server::handleReply ( HttpReply header,
StoreIOBuffer  receivedData 
)
overrideprotectedvirtual

◆ handleRequestBodyData()

bool ConnStateData::handleRequestBodyData ( )
inherited

called when new request body data has been buffered in inBuf may close the connection if we were closing and piped everything out

Return values
falsecalled comm_close or setReplyToError (the caller should bail)
truewe did not call comm_close or setReplyToError

Definition at line 1974 of file client_side.cc.

References ConnStateData::abortChunkedRequestBody(), assert, ConnStateData::bodyParser, ConnStateData::bodyPipe, SBuf::c_str(), Server::clientConnection, Comm::Connection::close(), ConnStateData::consumeInput(), debugs, error(), ConnStateData::handleChunkedRequestBody(), Server::inBuf, SBuf::length(), BodyPipe::mayNeedMoreData(), BodyPipe::putMoreData(), and ConnStateData::stoppedSending().

Referenced by ConnStateData::handleReadData().

◆ handleSslBumpHandshakeError()

◆ handleStopRequest()

void AsyncJob::handleStopRequest ( )
inlineinherited

Definition at line 73 of file AsyncJob.h.

References AsyncJob::mustStop().

◆ hasNotes()

bool ConnStateData::hasNotes ( ) const
inlineinherited

Definition at line 358 of file client_side.h.

References NotePairs::empty(), and ConnStateData::theNotes.

◆ httpsPeeked()

◆ idleTimeout()

time_t Server::idleTimeout ( ) const
overrideprotectedvirtual

Implements ConnStateData.

Definition at line 35 of file Http1Server.cc.

References SquidConfig::clientIdlePconn, Config, and SquidConfig::Timeout.

◆ initiateTunneledRequest()

◆ isOpen()

◆ kick()

void ConnStateData::kick ( )
inherited
We are done with the response, and we are either still receiving request body (early response!) or have already stopped receiving anything.

If we are still receiving, then parseRequests() below will fail. (XXX: but then we will call readNextRequest() which may succeed and execute a smuggled request as we are not done with the current request).

If we stopped because we got everything, then try the next request.

If we stopped receiving because of an error, then close now to avoid getting stuck and to prevent accidental request smuggling.

Attempt to parse a request from the request buffer. If we've been fed a pipelined request it may already be in our read buffer.
At this point we either have a parsed request (which we've kicked off the processing for) or not. If we have a deferred request (parsed but deferred for pipeling processing reasons) then look at processing it. If not, simply kickstart another read.

Definition at line 918 of file client_side.cc.

References Server::clientConnection, ClientSocketContextPushDeferredIfNeeded(), Comm::Connection::close(), DBG_IMPORTANT, debugs, ConnStateData::flags, Pipeline::front(), Comm::IsConnOpen(), ConnStateData::isOpen(), MYNAME, ConnStateData::parseRequests(), ConnStateData::pinning, Server::pipeline, ConnStateData::readNextRequest(), and ConnStateData::stoppedReceiving().

Referenced by ConnStateData::notePinnedConnectionBecameIdle(), and Http::Stream::writeComplete().

◆ lifetimeTimeout()

void ConnStateData::lifetimeTimeout ( const CommTimeoutCbParams params)
inherited

◆ maybeMakeSpaceAvailable()

void Server::maybeMakeSpaceAvailable ( )
inherited

Prepare inBuf for I/O. This method balances several conflicting desires:

  1. Do not read too few bytes at a time.
  2. Do not waste too much buffer space.
  3. Do not [re]allocate or memmove the buffer too much.
  4. Obey Config.maxRequestBufferSize limit.

Definition at line 74 of file Server.cc.

References SBufReservationRequirements::allowShared, CLIENT_REQ_BUF_SZ, Config, debugs, SBufReservationRequirements::idealSpace, Server::inBuf, SBufReservationRequirements::maxCapacity, SquidConfig::maxRequestBufferSize, SBufReservationRequirements::minSpace, SBuf::reserve(), and SBuf::spaceSize().

Referenced by Server::doClientRead().

◆ mayNeedToReadMoreBody()

int64_t ConnStateData::mayNeedToReadMoreBody ( ) const
inherited

number of body bytes we need to comm_read for the "current" request

Return values
0We do not need to read any [more] body bytes
negativeMay need more but do not know how many; could be zero!
positiveNeed to read exactly that many more body bytes

Definition at line 3570 of file client_side.cc.

References ConnStateData::bodyPipe, BodyPipe::bodySizeKnown(), Server::inBuf, SBuf::length(), and BodyPipe::unproducedSize().

Referenced by ConnStateData::clientAfterReadingRequests(), and ConnStateData::stopSending().

◆ mustStop()

◆ noteBodyConsumerAborted()

void Server::noteBodyConsumerAborted ( BodyPipe::Pointer  ptr)
overrideprotectedvirtual

Implements ConnStateData.

Definition at line 288 of file Http1Server.cc.

References ConnStateData::noteBodyConsumerAborted().

◆ noteMoreBodySpaceAvailable()

void Server::noteMoreBodySpaceAvailable ( BodyPipe::Pointer  )
overrideprotectedvirtual

Implements ConnStateData.

Definition at line 60 of file Http1Server.cc.

References isOpen().

◆ notePeerConnection()

virtual void ConnStateData::notePeerConnection ( Comm::ConnectionPointer  )
inlinevirtualinherited

Reimplemented in Ftp::Server.

Definition at line 207 of file client_side.h.

Referenced by FwdState::successfullyConnectedToPeer().

◆ notePinnedConnectionBecameIdle()

◆ notes()

NotePairs::Pointer ConnStateData::notes ( )
inherited
Returns
existing non-empty connection annotations, creates and returns empty annotations otherwise

Definition at line 4042 of file client_side.cc.

References ConnStateData::theNotes.

Referenced by UpdateRequestNotes().

◆ noteTakeServerConnectionControl()

void Server::noteTakeServerConnectionControl ( ServerConnectionContext  )
overrideprotectedvirtual

Gives us the control of the Squid-to-server connection. Used, for example, to initiate a TCP tunnel after protocol switching.

Reimplemented from ConnStateData.

Definition at line 375 of file Http1Server.cc.

References assert, Must, server, and switchToTunnel().

◆ parseHttpRequest()

Http::Stream * ConnStateData::parseHttpRequest ( const Http1::RequestParserPointer hp)
protectedinherited

Parse an HTTP request

Note
Sets result->flags.parsed_ok to 0 if failed to parse the request, to 1 if the request was correctly parsed
Parameters
[in]hpan Http1::RequestParser
Returns
NULL on incomplete requests, a Http::Stream on success or failure. TODO: Move to HttpServer. Warning: Move requires large code nonchanges!

Definition at line 1279 of file client_side.cc.

References ConnStateData::abortRequestParsing(), ClientHttpRequest::Flags::accel, SquidConfig::appendDomainLen, ClientHttpRequest::client_stream, Server::clientConnection, clientGetMoreData, clientReplyDetach, clientReplyStatus, clientSocketDetach(), clientSocketRecipient(), clientStreamInit(), Config, ConnStateData::consumeInput(), StoreIOBuffer::data, DBG_IMPORTANT, debugs, ClientHttpRequest::flags, Http::Stream::flags, HTTP_REQBUF_SZ, Server::inBuf, internalCheck(), internalLocalUri(), SBuf::isEmpty(), SBuf::length(), StoreIOBuffer::length, Http::METHOD_CONNECT, Http::METHOD_NONE, Http::METHOD_PRI, Must, Http::Stream::parsed_ok, ConnStateData::port, prepareAcceleratedURL(), ConnStateData::prepareTlsSwitchingURL(), prepareTransparentURL(), ConnStateData::preservedClientData, ConnStateData::preservingClientData_, Http::ProtocolVersion(), ClientHttpRequest::req_sz, Http::Stream::reqbuf, SBufToCstring(), Http::scMethodNotAllowed, Http::scRequestHeaderFieldsTooLarge, Http::scUriTooLong, ConnStateData::switchedToHttps(), Server::transferProtocol, ConnStateData::transparent(), ClientHttpRequest::uri, xcalloc(), and xstrdup.

◆ parseOneRequest()

Http::Stream * Server::parseOneRequest ( )
overrideprotectedvirtual

parse input buffer prefix into a single transfer protocol request return NULL to request more header bytes (after checking any limits) use abortRequestParsing() to handle parsing errors w/o creating request

Implements ConnStateData.

Definition at line 73 of file Http1Server.cc.

◆ parseProxyProtocolHeader()

bool ConnStateData::parseProxyProtocolHeader ( )
privateinherited

Attempts to extract a PROXY protocol header from the input buffer and, upon success, stores the parsed header in proxyProtocolHeader_.

Returns
true if the header was successfully parsed
false if more data is needed to parse the header or on error

Definition at line 1819 of file client_side.cc.

References assert, Server::clientConnection, COMM_TRANSPARENT, SBuf::consume(), debugs, Comm::Connection::flags, Server::inBuf, SBuf::length(), Comm::Connection::local, ConnStateData::needProxyProtocolHeader_, ProxyProtocol::Parse(), ConnStateData::proxyProtocolError(), ConnStateData::proxyProtocolHeader_, and Comm::Connection::remote.

Referenced by ConnStateData::parseRequests().

◆ parseRequests()

◆ parseTlsHandshake()

◆ pinBusyConnection()

void ConnStateData::pinBusyConnection ( const Comm::ConnectionPointer pinServerConn,
const HttpRequest::Pointer request 
)
inherited

Forward future client requests using the given to-server connection. The connection is still being used by the current client request.

Definition at line 3715 of file client_side.cc.

References ConnStateData::pinConnection().

◆ pinConnection()

◆ pinnedAuth()

bool ConnStateData::pinnedAuth ( ) const
inlineinherited

Definition at line 204 of file client_side.h.

References ConnStateData::pinning.

◆ pinnedPeer()

CachePeer * ConnStateData::pinnedPeer ( ) const
inlineinherited
Returns
the pinned CachePeer if one exists, nil otherwise

Definition at line 203 of file client_side.h.

References ConnStateData::pinning.

Referenced by PeerSelector::selectPinned().

◆ pipelinePrefetchMax()

int Server::pipelinePrefetchMax ( ) const
overrideprotectedvirtual

Reimplemented from ConnStateData.

Definition at line 229 of file Http1Server.cc.

References ConnStateData::pipelinePrefetchMax(), and Http::UPGRADE.

◆ postHttpsAccept()

◆ prepareTlsSwitchingURL()

◆ proceedAfterBodyContinuation()

void Server::proceedAfterBodyContinuation ( Http::StreamPointer  context)
protected

Definition at line 222 of file Http1Server.cc.

References clientProcessRequest(), debugs, and RefCount< C >::getRaw().

Referenced by processParsedRequest().

◆ processHttpRequest()

void Http::One::Server::processHttpRequest ( Http::Stream *const  context)
private

◆ processParsedRequest()

◆ proxyProtocolError()

bool ConnStateData::proxyProtocolError ( const char *  msg)
privateinherited

Perform cleanup on PROXY protocol errors. If header parsing hits a fatal error terminate the connection, otherwise wait for more data.

Definition at line 1798 of file client_side.cc.

References Server::clientConnection, DBG_IMPORTANT, debugs, and AsyncJob::mustStop().

Referenced by ConnStateData::parseProxyProtocolHeader(), and ConnStateData::proxyProtocolValidateClient().

◆ proxyProtocolHeader()

const ProxyProtocol::HeaderPointer & ConnStateData::proxyProtocolHeader ( ) const
inlineinherited

Definition at line 360 of file client_side.h.

References ConnStateData::proxyProtocolHeader_.

Referenced by ClientHttpRequest::ClientHttpRequest().

◆ proxyProtocolValidateClient()

bool ConnStateData::proxyProtocolValidateClient ( )
privateinherited

Perform proxy_protocol_access ACL tests on the client which connected to PROXY protocol port to see if we trust the sender enough to accept their PROXY header claim.

Definition at line 1779 of file client_side.cc.

References SquidConfig::accessList, Acl::Answer::allowed(), Config, ACLChecklist::fastCheck(), ConnStateData::fillChecklist(), SquidConfig::proxyProtocol, and ConnStateData::proxyProtocolError().

Referenced by ConnStateData::start().

◆ quitAfterError()

void ConnStateData::quitAfterError ( HttpRequest request)
inherited

Changes state so that we close the connection and quit after serving the client-side-detected error response instead of getting stuck.

Definition at line 1455 of file client_side.cc.

References Server::clientConnection, debugs, ConnStateData::flags, HttpRequest::flags, and RequestFlags::proxyKeepalive.

Referenced by ConnStateData::serveDelayedError().

◆ reading()

bool Server::reading ( ) const
inlineinherited

Definition at line 60 of file Server.h.

References Server::reader.

Referenced by Server::doClientRead(), Server::readSomeData(), and Server::stopReading().

◆ readNextRequest()

void ConnStateData::readNextRequest ( )
inherited

Set the timeout BEFORE calling readSomeData().

Please don't do anything with the FD past here!

Definition at line 881 of file client_side.cc.

References Server::clientConnection, debugs, Comm::Connection::fd, fd_note(), ConnStateData::idleTimeout(), Server::readSomeData(), ConnStateData::resetReadTimeout(), and Comm::Connection::timeLeft().

Referenced by ConnStateData::kick().

◆ readSomeData()

◆ readSomeHttpData()

void Http::One::Server::readSomeHttpData ( )

◆ receivedFirstByte()

void ConnStateData::receivedFirstByte ( )
overridevirtualinherited

◆ registerRunner()

void IndependentRunner::registerRunner ( )
protectedinherited

◆ RegisterWithCacheManager()

void AsyncJob::RegisterWithCacheManager ( )
staticinherited

Definition at line 215 of file AsyncJob.cc.

References Mgr::RegisterAction(), and AsyncJob::ReportAllJobs().

Referenced by mainInitialize().

◆ ReportAllJobs()

void AsyncJob::ReportAllJobs ( StoreEntry e)
staticprotectedinherited

Definition at line 198 of file AsyncJob.cc.

References AllJobs().

Referenced by AsyncJob::RegisterWithCacheManager().

◆ requestTimeout()

◆ resetReadTimeout()

◆ resetSslCommonName()

void ConnStateData::resetSslCommonName ( const char *  name)
inlineinherited

◆ sendControlMsg()

◆ serveDelayedError()

◆ serverBump()

◆ setAuth()

void ConnStateData::setAuth ( const Auth::UserRequest::Pointer aur,
const char *  cause 
)
inherited

Set the user details for connection-based authentication to use from now until connection closure.

Any change to existing credentials shows that something invalid has happened. Such as:

  • NTLM/Negotiate auth was violated by the per-request headers missing a revalidation token
  • NTLM/Negotiate auth was violated by the per-request headers being for another user
  • SSL-Bump CONNECT tunnel with persistent credentials has ended

Definition at line 518 of file client_side.cc.

References ConnStateData::auth_, Server::clientConnection, comm_reset_close(), debugs, Auth::UserRequest::releaseAuthServer(), and ConnStateData::stopReceiving().

Referenced by ProxyAuthLookup::LookupDone(), ClientHttpRequest::sslBumpEstablish(), and ConnStateData::swanSong().

◆ setReplyError()

void Server::setReplyError ( Http::StreamPointer context,
HttpRequest::Pointer request,
err_type  requestError,
Http::StatusCode  errStatusCode,
const char *  requestErrorBytes 
)
private

◆ setServerBump()

void ConnStateData::setServerBump ( Ssl::ServerBump srvBump)
inlineinherited

Definition at line 286 of file client_side.h.

References assert, and ConnStateData::sslServerBump.

Referenced by ClientHttpRequest::doCallouts().

◆ shouldCloseOnEof()

bool ConnStateData::shouldCloseOnEof ( ) const
overrideprivatevirtualinherited

◆ shouldPreserveClientData()

bool ConnStateData::shouldPreserveClientData ( ) const
inherited

◆ splice()

◆ sslCommonName()

const SBuf & ConnStateData::sslCommonName ( ) const
inlineinherited

Definition at line 292 of file client_side.h.

References ConnStateData::sslCommonName_.

◆ sslCrtdHandleReply()

◆ sslCrtdHandleReplyWrapper()

void ConnStateData::sslCrtdHandleReplyWrapper ( void *  data,
const Helper::Reply reply 
)
staticinherited

Definition at line 2550 of file client_side.cc.

References ConnStateData::sslCrtdHandleReply().

Referenced by ConnStateData::getSslContextStart().

◆ start()

void Server::start ( )
overrideprotectedvirtual

◆ Start()

◆ startDechunkingRequest()

void ConnStateData::startDechunkingRequest ( )
protectedinherited

◆ startPeekAndSplice()

◆ startPinnedConnectionMonitoring()

void ConnStateData::startPinnedConnectionMonitoring ( )
protectedinherited

[re]start monitoring pinned connection for peer closures so that we can propagate them to an idle client pinned to that peer

Definition at line 3781 of file client_side.cc.

References ConnStateData::clientPinnedConnectionRead(), JobCallback, ConnStateData::pinning, and Comm::Read().

Referenced by ConnStateData::handleIdleClientPinnedTlsRead(), and ConnStateData::notePinnedConnectionBecameIdle().

◆ startReconfigure()

virtual void RegisteredRunner::startReconfigure ( )
inlinevirtualinherited

Called after receiving a reconfigure request and before parsing squid.conf. Meant for modules that need to prepare for their configuration being changed [outside their control]. The changes end with the syncConfig() event.

Reimplemented in Dns::ConfigRr.

Definition at line 67 of file RunnersRegistry.h.

Referenced by mainReconfigureStart().

◆ startShutdown()

void ConnStateData::startShutdown ( )
overridevirtualinherited

Called after receiving a shutdown request and before stopping the main loop. At least one main loop iteration is guaranteed after this call. Meant for cleanup and state saving that may require other modules.

Reimplemented from RegisteredRunner.

Definition at line 1038 of file client_side.cc.

References Pipeline::empty(), ConnStateData::endingShutdown(), and Server::pipeline.

◆ status()

◆ stoppedReceiving()

const char * ConnStateData::stoppedReceiving ( ) const
inlineinherited

◆ stoppedSending()

const char * ConnStateData::stoppedSending ( ) const
inlineinherited

◆ stopPinnedConnectionMonitoring()

void ConnStateData::stopPinnedConnectionMonitoring ( )
inherited

◆ stopProducingFor()

void BodyProducer::stopProducingFor ( RefCount< BodyPipe > &  p,
bool  atEof 
)
protectedinherited

◆ stopReading()

void Server::stopReading ( )
inherited

◆ stopReceiving()

◆ stopSending()

◆ storeTlsContextToCache()

void ConnStateData::storeTlsContextToCache ( const SBuf cacheKey,
Security::ContextPointer ctx 
)
privateinherited

◆ swanSong()

◆ switchedToHttps()

◆ switchToHttps()

◆ syncConfig()

virtual void RegisteredRunner::syncConfig ( )
inlinevirtualinherited

Called after parsing squid.conf during reconfiguration. Meant for adjusting the module state based on configuration changes.

Reimplemented in Auth::CredentialCacheRr, and PeerPoolMgrsRr.

Definition at line 71 of file RunnersRegistry.h.

Referenced by mainReconfigureFinish().

◆ terminateAll()

◆ tlsClientSni()

const SBuf & ConnStateData::tlsClientSni ( ) const
inlineinherited

Definition at line 294 of file client_side.h.

References ConnStateData::tlsClientSni_.

Referenced by ConnStateData::prepareTlsSwitchingURL().

◆ toCbdata()

virtual void * CbdataParent::toCbdata ( )
pure virtualinherited

◆ transparent()

◆ tunnelOnError()

◆ unpinConnection()

◆ unregisterRunner()

void IndependentRunner::unregisterRunner ( )
protectedinherited

Definition at line 96 of file RunnersRegistry.cc.

References FindRunners().

Referenced by IndependentRunner::~IndependentRunner().

◆ updateError() [1/2]

void ConnStateData::updateError ( const err_type  c,
const ErrorDetailPointer d 
)
inlineinherited

Definition at line 366 of file client_side.h.

References Helper::Error, and ConnStateData::updateError().

Referenced by ConnStateData::updateError().

◆ updateError() [2/2]

◆ useConfig()

virtual void RegisteredRunner::useConfig ( )
inlinevirtualinherited

Called after claimMemoryNeeds(). Meant for activating modules and features using a finalized configuration with known memory requirements.

Reimplemented in ClientDbRr, SharedMemPagesRr, Ipc::Mem::RegisteredRunner, MemStoreRr, PeerPoolMgrsRr, SharedSessionCacheRr, and TransientsRr.

Definition at line 60 of file RunnersRegistry.h.

Referenced by RunConfigUsers().

◆ whenClientIpKnown()

◆ write() [1/2]

void Server::write ( char *  buf,
int  len 
)
inlineinherited

◆ write() [2/2]

void Server::write ( MemBuf mb)
inlineinherited

◆ writeControlMsgAndCall()

◆ writeSomeData()

virtual void Server::writeSomeData ( )
inlinevirtualinherited

Definition at line 69 of file Server.h.

Referenced by Server::clientWriteDone().

◆ writing()

bool Server::writing ( ) const
inlineinherited

Definition at line 89 of file Server.h.

References Server::writer.

◆ wroteControlMsg()

void HttpControlMsgSink::wroteControlMsg ( const CommIoCbParams params)
inherited

Member Data Documentation

◆ auth

bool ConnStateData::auth = false
inherited

Definition at line 147 of file client_side.h.

Referenced by clientCheckPinning().

◆ auth_

Auth::UserRequest::Pointer ConnStateData::auth_
privateinherited

Definition at line 474 of file client_side.h.

Referenced by ConnStateData::getAuth(), and ConnStateData::setAuth().

◆ bareError

◆ bodyParser

◆ bodyPipe

◆ cbControlMsgSent

AsyncCall::Pointer HttpControlMsgSink::cbControlMsgSent
inherited

◆ clientConnection

Comm::ConnectionPointer Server::clientConnection
inherited

Definition at line 100 of file Server.h.

Referenced by ClientHttpRequest::ClientHttpRequest(), Server::Server(), TunnelStateData::TunnelStateData(), ConnStateData::~ConnStateData(), ConnStateData::abortChunkedRequestBody(), ConnStateData::abortRequestParsing(), ConnStateData::acceptTls(), ConnStateData::afterClientRead(), Format::Format::assemble(), ConnStateData::buildFakeRequest(), IdentLookup::checkForAsync(), ConnStateData::clientAfterReadingRequests(), ConnStateData::clientPinnedConnectionClosed(), ConnStateData::clientPinnedConnectionRead(), ClientRequestContext::clientRedirectDone(), clientSocketRecipient(), Server::clientWriteDone(), ConnStateData::concurrentRequestQueueFilled(), ConnStateData::connStateClosed(), Server::doClientRead(), Server::doneAll(), ConnStateData::doneWithControlMsg(), ConnStateData::doPeekAndSpliceStep(), ConnStateData::endingShutdown(), ConnStateData::extendLifetime(), ConnStateData::fakeAConnectRequest(), ConnStateData::fillConnectionLevelDetails(), ConnStateData::getSslContextDone(), ConnStateData::getSslContextStart(), ConnStateData::handleChunkedRequestBody(), ConnStateData::handleRequestBodyData(), ConnStateData::handleSslBumpHandshakeError(), ClientRequestContext::hostHeaderIpVerify(), ClientRequestContext::hostHeaderVerify(), ClientRequestContext::hostHeaderVerifyFailed(), httpsCreate(), httpsEstablish(), httpsSslBumpAccessCheckDone(), httpsSslBumpStep2AccessCheckDone(), ConnStateData::initiateTunneledRequest(), ConnStateData::isOpen(), ConnStateData::kick(), IdentLookup::LookupDone(), HttpRequest::manager(), ACLIdent::match(), ClientHttpRequest::noteAdaptationAclCheckDone(), ClientHttpRequest::noteBodyProducerAborted(), ConnStateData::parseHttpRequest(), ConnStateData::parseProxyProtocolHeader(), ConnStateData::parseRequests(), ConnStateData::parseTlsHandshake(), ConnStateData::pinConnection(), ConnStateData::postHttpsAccept(), clientReplyContext::processExpired(), clientReplyContext::processMiss(), ConnStateData::proxyProtocolError(), ConnStateData::quitAfterError(), ConnStateData::readNextRequest(), Server::readSomeData(), ConnStateData::resetReadTimeout(), PeerSelector::resolveSelected(), ConnStateData::sendControlMsg(), ConnStateData::serveDelayedError(), ConnStateData::setAuth(), ConnStateData::splice(), ClientRequestContext::sslBumpAccessCheckDone(), ClientHttpRequest::sslBumpEstablish(), ClientHttpRequest::sslBumpStart(), ConnStateData::sslCrtdHandleReply(), ConnStateData::start(), ConnStateData::startPeekAndSplice(), Server::stopReading(), ConnStateData::stopReceiving(), ConnStateData::stopSending(), ConnStateData::storeTlsContextToCache(), ConnStateData::swanSong(), Server::swanSong(), ConnStateData::switchToHttps(), ConnStateData::terminateAll(), ConnStateData::transparent(), ConnStateData::tunnelOnError(), tunnelStart(), ConnStateData::whenClientIpKnown(), and Server::write().

◆ closeHandler

AsyncCall::Pointer ConnStateData::closeHandler
inherited

Definition at line 153 of file client_side.h.

◆ 

◆ host

char* ConnStateData::host = nullptr
inherited

Definition at line 144 of file client_side.h.

◆ id

const InstanceId<AsyncJob> AsyncJob::id
inherited

Definition at line 75 of file AsyncJob.h.

◆ inBuf

◆ inCall

AsyncCall::Pointer AsyncJob::inCall
protectedinherited

◆ isHttpsServer

const bool Http::One::Server::isHttpsServer
private

Definition at line 68 of file Http1Server.h.

◆ keyLogger

Security::KeyLogger ConnStateData::keyLogger
inherited

Definition at line 384 of file client_side.h.

Referenced by ConnStateData::acceptTls().

◆ log_addr

Ip::Address ConnStateData::log_addr
inherited

◆ method_

HttpRequestMethod Http::One::Server::method_
private

Definition at line 65 of file Http1Server.h.

◆ needProxyProtocolHeader_

bool ConnStateData::needProxyProtocolHeader_ = false
privateinherited

◆ parsedBumpedRequestCount

uint64_t ConnStateData::parsedBumpedRequestCount = 0
privateinherited

◆ parser_

Http1::RequestParserPointer Http::One::Server::parser_
private

Definition at line 64 of file Http1Server.h.

◆ parsingTlsHandshake

bool ConnStateData::parsingTlsHandshake = false
privateinherited

◆ peer

CachePeer* ConnStateData::peer = nullptr
inherited

Definition at line 151 of file client_side.h.

◆ peerAccessDenied

bool ConnStateData::peerAccessDenied = false
inherited

Definition at line 150 of file client_side.h.

Referenced by PeerSelector::selectPinned().

◆ pinned

bool ConnStateData::pinned = false
inherited

Definition at line 146 of file client_side.h.

Referenced by HttpRequest::pinnedConnection().

◆ 

◆ pipeline

◆ port

◆ preservedClientData

SBuf ConnStateData::preservedClientData
inherited

From-client handshake bytes (including bytes at the beginning of a CONNECT tunnel) which we may need to forward as-is if their syntax does not match the expected TLS or HTTP protocol (on_unsupported_protocol).

Definition at line 349 of file client_side.h.

Referenced by Format::Format::assemble(), ConnStateData::parseHttpRequest(), ConnStateData::parseTlsHandshake(), ConnStateData::splice(), and ConnStateData::tunnelOnError().

◆ preservingClientData_

bool ConnStateData::preservingClientData_ = false
protectedinherited

◆ proxyProtocolHeader_

ProxyProtocol::HeaderPointer ConnStateData::proxyProtocolHeader_
privateinherited

◆ reader

AsyncCall::Pointer Server::reader
protectedinherited

◆ readHandler

AsyncCall::Pointer ConnStateData::readHandler
inherited

Definition at line 152 of file client_side.h.

◆ reading

bool ConnStateData::reading = false
inherited

Definition at line 148 of file client_side.h.

◆ readMore

bool ConnStateData::readMore = true
inherited

Definition at line 139 of file client_side.h.

Referenced by ClientHttpRequest::doCallouts().

◆ receivedFirstByte_

bool Server::receivedFirstByte_
inherited

◆ serverConnection

Comm::ConnectionPointer ConnStateData::serverConnection
inherited

Definition at line 143 of file client_side.h.

Referenced by clientCheckPinning().

◆ signAlgorithm

◆ sslBumpCertKey

SBuf ConnStateData::sslBumpCertKey
privateinherited

◆ sslBumpMode

◆ sslCommonName_

SBuf ConnStateData::sslCommonName_
privateinherited

◆ sslServerBump

◆ started_

bool AsyncJob::started_ = false
protectedinherited

Definition at line 88 of file AsyncJob.h.

Referenced by AsyncJob::~AsyncJob(), AsyncJob::callEnd(), and AsyncJob::Start().

◆ stoppedReceiving_

const char* ConnStateData::stoppedReceiving_ = nullptr
privateinherited

◆ stoppedSending_

const char* ConnStateData::stoppedSending_ = nullptr
privateinherited

◆ stopReason

const char* AsyncJob::stopReason
protectedinherited

◆ swanSang

bool ConnStateData::swanSang = false
inherited

Definition at line 140 of file client_side.h.

◆ swanSang_

bool AsyncJob::swanSang_ = false
protectedinherited

Definition at line 89 of file AsyncJob.h.

Referenced by AsyncJob::~AsyncJob(), and AsyncJob::callEnd().

◆ switchedToHttps_

◆ theNotes

NotePairs::Pointer ConnStateData::theNotes
privateinherited

Connection annotations, clt_conn_tag and other tags are stored here. If set, are propagated to the current and all future master transactions on the connection.

Definition at line 505 of file client_side.h.

Referenced by ConnStateData::hasNotes(), and ConnStateData::notes().

◆ tlsClientSni_

SBuf ConnStateData::tlsClientSni_
privateinherited

◆ tlsConnectHostOrIp

◆ tlsConnectPort

AnyP::Port ConnStateData::tlsConnectPort
privateinherited

◆ tlsParser

Security::HandshakeParser ConnStateData::tlsParser
inherited

Tls parser to use for client HELLO messages parsing on bumped connections.

Definition at line 308 of file client_side.h.

Referenced by ConnStateData::parseTlsHandshake().

◆ transferProtocol

AnyP::ProtocolVersion Server::transferProtocol
inherited

The transfer protocol currently being spoken on this connection. HTTP/1.x CONNECT, HTTP/1.1 Upgrade and HTTP/2 SETTINGS offer the ability to change protocols on the fly.

Definition at line 107 of file Server.h.

Referenced by ConnStateData::parseHttpRequest(), ConnStateData::prepareTlsSwitchingURL(), ConnStateData::splice(), and ConnStateData::switchToHttps().

◆ typeName

◆ writer

AsyncCall::Pointer Server::writer
protectedinherited

Definition at line 128 of file Server.h.

Referenced by Server::clientWriteDone(), Server::write(), and Server::writing().

◆ zeroReply

bool ConnStateData::zeroReply = false
inherited

Definition at line 149 of file client_side.h.


The documentation for this class was generated from the following files:

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors