#include <ConnOpener.h>


Classes | |
struct | Calls |
handles to calls which we may need to cancel. More... | |
Public Types | |
typedef CbcPointer< ConnOpener > | Pointer |
Public Member Functions | |
void | noteAbort () |
virtual bool | doneAll () const |
whether positive goal has been reached More... | |
ConnOpener (const Comm::ConnectionPointer &, const AsyncCall::Pointer &handler, time_t connect_timeout) | |
~ConnOpener () | |
void | setHost (const char *) |
set the hostname note for this connection More... | |
const char * | getHost () const |
get the hostname noted for this connection 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... | |
virtual void | callException (const std::exception &e) |
called when the job throws during an async call More... | |
virtual void * | toCbdata ()=0 |
Static Public Member Functions | |
static Pointer | Start (AsyncJob *job) |
starts a freshly created job (i.e., makes the job asynchronous) More... | |
Protected Member Functions | |
virtual void | start () |
called by AsyncStart; do not call directly More... | |
virtual void | swanSong () |
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... | |
Protected Attributes | |
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... | |
const InstanceId< AsyncJob > | id |
job identifier More... | |
Private Member Functions | |
CBDATA_CLASS (ConnOpener) | |
ConnOpener (const ConnOpener &) | |
ConnOpener & | operator= (const ConnOpener &c) |
void | earlyAbort (const CommCloseCbParams &) |
void | timeout (const CommTimeoutCbParams &) |
void | sendAnswer (Comm::Flag errFlag, int xerrno, const char *why) |
void | doConnect () |
Make an FD connection attempt. More... | |
void | connected () |
void | lookupLocalAddress () |
void | retrySleep () |
Close and wait a little before trying to open and connect again. More... | |
void | restart () |
called at the end of Comm::ConnOpener::DelayedConnectRetry event More... | |
bool | createFd () |
void | closeFd () |
cleans I/O state and ends I/O for temporaryFd_ More... | |
void | keepFd () |
cleans I/O state and moves temporaryFd_ to the conn_ for long-term use More... | |
void | cleanFd () |
void | cancelSleep () |
cleans up this job sleep state More... | |
Static Private Member Functions | |
static void | InProgressConnectRetry (int fd, void *data) |
static void | DelayedConnectRetry (void *data) |
Private Attributes | |
char * | host_ |
domain name we are trying to connect to. More... | |
int | temporaryFd_ |
the FD being opened. Do NOT set conn_->fd until it is fully open. More... | |
Comm::ConnectionPointer | conn_ |
single connection currently to be opened. More... | |
AsyncCall::Pointer | callback_ |
handler to be called on connection completion. More... | |
int | totalTries_ |
total number of connection attempts over all destinations so far. More... | |
int | failRetries_ |
number of retries current destination has been tried. More... | |
time_t | deadline_ |
if we are not done by then, we will call back with Comm::TIMEOUT More... | |
struct Comm::ConnOpener::Calls | calls_ |
Detailed Description
Async-opener of a Comm connection.
Definition at line 25 of file ConnOpener.h.
Member Typedef Documentation
◆ Pointer
Definition at line 32 of file ConnOpener.h.
Constructor & Destructor Documentation
◆ ConnOpener() [1/2]
Comm::ConnOpener::ConnOpener | ( | const Comm::ConnectionPointer & | c, |
const AsyncCall::Pointer & | handler, | ||
time_t | connect_timeout | ||
) |
Definition at line 33 of file ConnOpener.cc.
References debugs.
◆ ~ConnOpener()
Comm::ConnOpener::~ConnOpener | ( | ) |
Definition at line 46 of file ConnOpener.cc.
References safe_free.
◆ ConnOpener() [2/2]
|
private |
Member Function Documentation
◆ callEnd()
|
virtualinherited |
called right after the called job method
Reimplemented in Adaptation::Icap::Xaction.
Definition at line 136 of file AsyncJob.cc.
References AsyncCall::debugLevel, debugs, AsyncCall::debugSection, AsyncJob::done(), HERE(), AsyncJob::inCall, NULL, AsyncJob::status(), AsyncJob::swanSong(), and AsyncJob::typeName.
Referenced by Adaptation::Icap::Xaction::callEnd(), and AsyncJob::deleteThis().
◆ callException()
|
virtualinherited |
Reimplemented in ClientHttpRequest, Ftp::Server, Ipc::Inquirer, Ipc::Forwarder, Adaptation::Icap::Xaction, Adaptation::Icap::ServiceRep, Adaptation::Icap::ModXact, and ConnStateData.
Definition at line 127 of file AsyncJob.cc.
References cbdataReferenceValid(), debugs, Must, AsyncJob::mustStop(), and CbdataParent::toCbdata().
Referenced by ConnStateData::callException(), Adaptation::Icap::Xaction::callException(), Ipc::Forwarder::callException(), Ipc::Inquirer::callException(), and Ftp::Server::callException().
◆ callStart()
|
inherited |
called just before the called method
Definition at line 114 of file AsyncJob.cc.
References cbdataReferenceValid(), AsyncCall::debugLevel, debugs, AsyncCall::debugSection, AsyncJob::inCall, Must, AsyncJob::status(), CbdataParent::toCbdata(), and AsyncJob::typeName.
◆ canBeCalled()
|
inherited |
Definition at line 101 of file AsyncJob.cc.
References AsyncCall::cancel(), debugs, HERE(), AsyncJob::inCall, and NULL.
◆ cancelSleep()
|
private |
Definition at line 388 of file ConnOpener.cc.
References debugs.
◆ CBDATA_CLASS()
|
private |
◆ cleanFd()
|
private |
cleans up this job I/O state without closing temporaryFd required before closing temporaryFd or keeping it in conn_ leaves FD bare so must only be called via closeFd() or keepFd()
Definition at line 153 of file ConnOpener.cc.
References comm_remove_close_handler(), COMM_SELECT_WRITE, debugs, fd_table, HERE(), Must, NULL, Comm::SetSelect(), fde::timeout, fde::timeoutHandler, fde::write_data, and fde::write_handler.
◆ closeFd()
|
private |
Definition at line 199 of file ConnOpener.cc.
References comm_close.
◆ connected()
|
private |
Definition at line 306 of file ConnOpener.cc.
◆ createFd()
|
private |
Create a socket for the future connection or return false. If false is returned, done() is guaranteed to return true and end the job.
Definition at line 258 of file ConnOpener.cc.
References assert, comm_add_close_handler(), comm_openex(), debugs, earlyAbort(), Comm::ERR_CONNECT, fd_table, CachePeer::flags, JobCallback, Must, NULL, CachePeer::params, Ip::Qos::setSockNfmark(), Ip::Qos::setSockTos(), squid_curtime, Squid_MaxFD, and timeout().
◆ DelayedConnectRetry()
|
staticprivate |
Definition at line 472 of file ConnOpener.cc.
References assert, data, JobCallback, restart(), ScheduleCallHere, and CbcPointer< Cbc >::valid().
Referenced by retrySleep().
◆ deleteThis()
|
protectedinherited |
Definition at line 49 of file AsyncJob.cc.
References asyncCall(), AsyncJob::callEnd(), debugs, AsyncJob::inCall, JobMemFun(), Must, NULL, AsyncJob::stopReason, and AsyncJob::typeName.
Referenced by ConnStateData::connStateClosed().
◆ doConnect()
|
private |
Definition at line 335 of file ConnOpener.cc.
References comm_connect_addr(), COMM_SELECT_WRITE, Config, SquidConfig::connect_retries, debugs, Comm::ERR_CONNECT, HERE(), Comm::INPROGRESS, InProgressConnectRetry(), Must, NULL, Comm::OK, Comm::SetSelect(), and xstrerr().
Referenced by InProgressConnectRetry().
◆ done()
|
protectedinherited |
Definition at line 90 of file AsyncJob.cc.
References AsyncJob::doneAll(), NULL, and AsyncJob::stopReason.
Referenced by AsyncJob::callEnd(), HappyConnOpener::checkForNewConnection(), and Downloader::downloadFinished().
◆ doneAll()
|
virtual |
Reimplemented from AsyncJob.
Definition at line 52 of file ConnOpener.cc.
References AsyncJob::doneAll(), Must, and NULL.
◆ earlyAbort()
|
private |
Abort connection attempt. Handles the case(s) when a partially setup connection gets closed early.
Definition at line 430 of file ConnOpener.cc.
References CommCommonCbParams::conn, debugs, Comm::ERR_CLOSING, HERE(), NULL, and CommCommonCbParams::xerrno.
Referenced by createFd().
◆ getHost()
const char * Comm::ConnOpener::getHost | ( | ) | const |
Definition at line 101 of file ConnOpener.cc.
◆ InProgressConnectRetry()
|
staticprivate |
Definition at line 454 of file ConnOpener.cc.
References assert, data, doConnect(), JobCallback, ScheduleCallHere, and CbcPointer< Cbc >::valid().
Referenced by doConnect().
◆ keepFd()
|
private |
Definition at line 218 of file ConnOpener.cc.
◆ lookupLocalAddress()
|
private |
Lookup local-end address and port of the TCP link just opened. This ensure the connection local details are set correctly
Definition at line 409 of file ConnOpener.cc.
References addrinfo::ai_addr, addrinfo::ai_addrlen, DBG_IMPORTANT, debugs, Ip::Address::FreeAddr(), HERE(), Ip::Address::InitAddr(), NULL, and xstrerr().
◆ mustStop()
|
protectedinherited |
Definition at line 69 of file AsyncJob.cc.
References debugs, AsyncJob::inCall, Must, NULL, AsyncJob::stopReason, and AsyncJob::typeName.
Referenced by HttpStateData::abortAll(), AsyncJob::callException(), HttpStateData::continueAfterParsingHeader(), HttpStateData::drop1xx(), HttpStateData::handleMoreRequestBodyAvailable(), HttpStateData::httpStateConnClosed(), HttpStateData::httpTimeout(), noteAbort(), HttpStateData::proceedAfter1xx(), ConnStateData::proxyProtocolError(), HttpStateData::readReply(), HttpStateData::start(), and HttpStateData::wroteLast().
◆ noteAbort()
|
inline |
Definition at line 30 of file ConnOpener.h.
References AsyncJob::mustStop().
◆ operator=()
|
private |
◆ restart()
|
private |
Definition at line 246 of file ConnOpener.cc.
References debugs.
Referenced by DelayedConnectRetry().
◆ retrySleep()
|
private |
Definition at line 376 of file ConnOpener.cc.
References DelayedConnectRetry(), eventAdd(), and Must.
◆ sendAnswer()
|
private |
Connection attempt are completed. One way or the other. Pass the results back to the external handler.
Definition at line 111 of file ConnOpener.cc.
References Config, debugs, ipcacheMarkBadAddr(), ipcacheMarkGoodAddr(), netdbDeleteAddrNetwork(), NULL, SquidConfig::onoff, CachePeer::params, ScheduleCallHere, and SquidConfig::test_reachability.
◆ setHost()
void Comm::ConnOpener::setHost | ( | const char * | new_host | ) |
Definition at line 89 of file ConnOpener.cc.
References NULL, safe_free, and xstrdup.
Referenced by Ftp::Client::connectDataChannel(), idnsInitVC(), HappyConnOpener::openFreshConnection(), and peerProbeConnect().
◆ start()
|
protectedvirtual |
Reimplemented from AsyncJob.
Definition at line 230 of file ConnOpener.cc.
References Ip::EnableIpv6, IPV6_SPECIAL_V4MAPPING, Must, and NULL.
◆ Start()
|
staticinherited |
Definition at line 23 of file AsyncJob.cc.
References CallJobHere, and AsyncJob::start().
Referenced by Ftp::Server::AcceptCtrlConnection(), Ftp::Server::checkDataConnPre(), clientListenerConnectionOpened(), Ftp::Client::connectDataChannel(), FwdState::connectStart(), Adaptation::Icap::Xaction::dnsLookupDone(), Log::TcpLogger::doConnect(), FwdState::establishTunnelThruProxy(), TunnelStateData::establishTunnelThruProxy(), Ipc::Coordinator::handleCacheMgrRequest(), PeerPoolMgr::handleOpenedConnection(), Ipc::Coordinator::handleSnmpRequest(), httpAccept(), httpsAccept(), httpStart(), idnsInitVC(), Ftp::Gateway::listenForDataChannel(), Ftp::Server::listenForDataConnection(), Adaptation::Icap::Xaction::noteCommConnected(), Log::TcpLogger::Open(), HappyConnOpener::openFreshConnection(), PeerPoolMgr::openNewConnection(), peerProbeConnect(), Mgr::FunAction::respond(), Mgr::InfoAction::respond(), FwdState::secureConnectionToPeer(), TunnelStateData::secureConnectionToPeer(), Ipc::SendMessage(), Mgr::Inquirer::sendResponse(), snmpConstructReponse(), SquidMain(), CacheManager::start(), Ident::Start(), Adaptation::AccessCheck::Start(), Rock::Rebuild::Start(), Security::PeerConnector::startCertDownloading(), TunnelStateData::startConnecting(), Ftp::StartGateway(), Ftp::StartRelay(), PeerPoolMgrsRr::syncConfig(), and Rock::SwapDir::updateHeaders().
◆ status()
|
protectedvirtualinherited |
for debugging, starts with space
Reimplemented in HappyConnOpener, Security::PeerConnector, Ipc::Inquirer, Comm::TcpAcceptor, Http::Tunneler, Adaptation::Initiate, Adaptation::Icap::Xaction, Adaptation::Icap::ServiceRep, and Adaptation::Ecap::XactionRep.
Definition at line 159 of file AsyncJob.cc.
References buf, NULL, and AsyncJob::stopReason.
Referenced by AsyncJob::callEnd(), AsyncJob::callStart(), Adaptation::Initiate::status(), and Comm::TcpAcceptor::status().
◆ swanSong()
|
protectedvirtual |
Reimplemented from AsyncJob.
Definition at line 70 of file ConnOpener.cc.
References Comm::ERR_CONNECT, NULL, and AsyncJob::swanSong().
◆ timeout()
|
private |
Handles the case(s) when a partially setup connection gets timed out. NP: When commSetConnTimeout accepts generic CommCommonCbParams this can die.
Definition at line 443 of file ConnOpener.cc.
References debugs, HERE(), NULL, and Comm::TIMEOUT.
Referenced by createFd().
◆ toCbdata()
|
pure virtualinherited |
Implemented in HttpStateData, ClientHttpRequest, and BodySink.
Referenced by AsyncJob::callException(), and AsyncJob::callStart().
Member Data Documentation
◆ callback_
|
private |
Definition at line 74 of file ConnOpener.h.
◆ calls_
|
private |
◆ conn_
|
private |
Definition at line 73 of file ConnOpener.h.
◆ deadline_
|
private |
Definition at line 80 of file ConnOpener.h.
◆ failRetries_
|
private |
Definition at line 77 of file ConnOpener.h.
◆ host_
|
private |
Definition at line 71 of file ConnOpener.h.
◆ id
|
protectedinherited |
Definition at line 72 of file AsyncJob.h.
◆ inCall
|
protectedinherited |
Definition at line 71 of file AsyncJob.h.
Referenced by AsyncJob::callEnd(), AsyncJob::callStart(), AsyncJob::canBeCalled(), AsyncJob::deleteThis(), and AsyncJob::mustStop().
◆ stopReason
|
protectedinherited |
Definition at line 69 of file AsyncJob.h.
Referenced by AsyncJob::deleteThis(), AsyncJob::done(), AsyncJob::mustStop(), AsyncJob::status(), and HappyConnOpener::status().
◆ temporaryFd_
|
private |
Definition at line 72 of file ConnOpener.h.
◆ totalTries_
|
private |
Definition at line 76 of file ConnOpener.h.
◆ typeName
|
protectedinherited |
Definition at line 70 of file AsyncJob.h.
Referenced by AsyncJob::AsyncJob(), Adaptation::Icap::Xaction::Xaction(), AsyncJob::~AsyncJob(), AsyncJob::callEnd(), AsyncJob::callStart(), AsyncJob::deleteThis(), and AsyncJob::mustStop().
The documentation for this class was generated from the following files:
- src/comm/ConnOpener.h
- src/comm/ConnOpener.cc