PeerConnector.h
Go to the documentation of this file.
Definition: AsyncJob.h:31
Definition: CbDataList.h:15
Definition: FilledChecklist.h:33
virtual bool initialize(Security::SessionPointer &)
Definition: PeerConnector.cc:139
PeerConnector(const Comm::ConnectionPointer &aServerConn, const AsyncCallback< EncryptorAnswer > &, const AccessLogEntryPointer &alp, const time_t timeout=0)
Definition: PeerConnector.cc:40
EncryptorAnswer & answer()
convenience method to get to the answer fields
Definition: PeerConnector.cc:497
static void NegotiateSsl(int fd, void *data)
A wrapper for Comm::SetSelect() notifications.
Definition: PeerConnector.cc:439
static const unsigned int MaxNestedDownloads
The maximum number of inter-dependent Downloader jobs a worker may initiate.
Definition: PeerConnector.h:195
void callBack()
a bail(), sendSuccess() helper: sends results to the initiator
Definition: PeerConnector.cc:555
void sslCrtvdHandleReply(Ssl::CertValidationResponsePointer &)
Process response from cert validator helper.
Definition: PeerConnector.cc:334
Definition: EncryptorAnswer.h:21
Security::IoResultPointer suspendedError_
outcome of the last (failed and) suspended negotiation attempt (or nil)
Definition: PeerConnector.h:214
unsigned int certsDownloads
the number of downloaded missing certificates
Definition: PeerConnector.h:206
void commTimeoutHandler(const CommTimeoutCbParams &)
The connection read timeout callback handler.
Definition: PeerConnector.cc:129
void error(char *format,...)
std::unique_ptr< STACK_OF(X509), sk_X509_free_wrapper > X509_STACK_Pointer
Definition: gadgets.h:53
a smart AsyncCall pointer for delivery of future results
Definition: AsyncCallbacks.h:31
unsigned int certDownloadNestingLevel() const
the number of concurrent PeerConnector jobs waiting for us
Definition: PeerConnector.cc:601
~PeerConnector() override
Definition: AsyncJob.h:17
JobWait< Downloader > certDownloadWait
waits for the missing certificate to be downloaded
Definition: PeerConnector.h:216
PeerConnector & operator=(const PeerConnector &)
A combination of PeerOptions and the corresponding Context.
Definition: PeerOptions.h:154
bool isSuspended() const
Whether TLS negotiation has been paused and not yet resumed.
Definition: PeerConnector.h:101
virtual FuturePeerContext * peerContext() const =0
void bypassCertValidator()
If called the certificates validator will not used.
Definition: PeerConnector.h:156
Definition: AccessLogEntry.h:40
AsyncCall::Pointer closeHandler
we call this when the connection closed
Definition: PeerConnector.h:200
void recordNegotiationDetails()
Definition: PeerConnector.cc:193
virtual void noteNegotiationDone(ErrorState *)
Definition: PeerConnector.h:131
const char * status() const override
internal cleanup; do not call directly
Definition: PeerConnector.cc:578
void disconnect()
a bail(), sendSuccess() helper: stops monitoring the connection
Definition: PeerConnector.cc:538
Definition: PeerConnector.h:48
void handleMissingCertificates(const Security::IoResult &lastError)
Either initiates fetching of missing certificates or bails with an error.
Definition: PeerConnector.cc:680
void certDownloadingDone(DownloaderAnswer &)
Called by Downloader after a certificate object downloaded.
Definition: PeerConnector.cc:624
Ssl::X509_STACK_Pointer downloadedCerts
successfully downloaded intermediate certificates (omitted by the peer)
Definition: PeerConnector.h:210
void suspendNegotiation(const Security::IoResult &lastError)
Definition: PeerConnector.cc:730
virtual void noteNegotiationError(const Security::ErrorDetailPointer &)
Called when the SSL_connect function aborts with an SSL negotiation error.
Definition: PeerConnector.cc:485
static const unsigned int MaxCertsDownloads
The maximum number of missing certificates a single PeerConnector may download.
Definition: PeerConnector.h:192
manages collecting and logging secrets of a TLS connection to tls_key_log
Definition: KeyLogger.h:23
void countFailingConnection()
updates connection usage history before the connection is closed
Definition: PeerConnector.cc:528
Security::CertErrors * sslCrtvdCheckForErrors(Ssl::CertValidationResponse const &, ErrorDetailPointer &)
Check SSL errors returned from cert validator against sslproxy_cert_error access list.
Definition: PeerConnector.cc:385
void negotiateSsl()
Comm::SetSelect() callback. Direct calls tickle/resume negotiations.
Definition: PeerConnector.cc:449
Definition: Downloader.h:45
CBDATA_INTERMEDIATE()
std::queue< SBuf > urlsOfMissingCerts
The list of URLs where missing certificates should be downloaded.
Definition: PeerConnector.h:205
Security::KeyLogger keyLogger
managers logging of the being-established TLS connection secrets
Definition: PeerConnector.h:198
void start() override
Preps connection and SSL state. Calls negotiate().
Definition: PeerConnector.cc:70
void handleNegotiationResult(const Security::IoResult &)
Called after each negotiation step to handle the result.
Definition: PeerConnector.cc:259
void resumeNegotiation()
Resumes TLS negotiation paused by suspendNegotiation()
Definition: PeerConnector.cc:740
void fillChecklist(ACLFilledChecklist &) const override
configure the given checklist (to reflect the current transaction state)
Definition: PeerConnector.cc:91
Definition: CommCalls.h:133
Definition: CommCalls.h:127
void commCloseHandler(const CommCloseCbParams ¶ms)
The comm_close callback handler.
Definition: PeerConnector.cc:109
Definition: errorpage.h:88
bool computeMissingCertificateUrls(const Connection &)
finds URLs of (some) missing intermediate certificates or returns false
Definition: PeerConnector.cc:706
bool noteFwdPconnUse
hack: whether the connection requires fwdPconnPool->noteUses()
Definition: PeerConnector.h:62
an interface for those capable of configuring an ACLFilledChecklist object
Definition: ChecklistFiller.h:18
const Comm::ConnectionPointer & serverConnection() const
mimics FwdState to minimize changes to FwdState::initiate/negotiateSsl
Definition: PeerConnector.h:138
void startCertDownloading(SBuf &url)
Start downloading procedure for the given URL.
Definition: PeerConnector.cc:614
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