Xaction.cc
Go to the documentation of this file.
69 Adaptation::Icap::Xaction::Xaction(const char *aTypeName, Adaptation::Icap::ServiceRep::Pointer &aService):
155 const auto &addr = ia ? std::optional<Ip::Address>(ia->current()) : std::optional<Ip::Address>();
156 CallJobHere1(93, 5, CbcPointer<Adaptation::Icap::Xaction>(xa), Adaptation::Icap::Xaction, dnsLookupDone, addr);
178 debugs(93,3, typeName << " opens connection to " << s.cfg().host.termedBuf() << ":" << s.cfg().port);
212 AsyncCall::Pointer callback = JobCallback(93, 3, ConnectDialer, this, Adaptation::Icap::Xaction::noteCommConnected);
213 const auto cs = new Comm::ConnOpener(conn, callback, TheConfig.connect_timeout(service().cfg().bypass));
279 const auto sslConnector = new Ssl::IcapPeerConnector(theService, conn, callback, masterLogEntry(), TheConfig.connect_timeout(service().cfg().bypass));
404 AsyncCall::Pointer call = JobCallback(93, 5, TimeoutDialer, this, Adaptation::Icap::Xaction::noteCommTimedout);
void Read(const Comm::ConnectionPointer &conn, AsyncCall::Pointer &callback)
Definition: Read.cc:40
Definition: Initiate.h:30
Definition: AsyncJob.h:31
AsyncCall::Pointer comm_add_close_handler(int fd, CLCB *handler, void *data)
Definition: comm.cc:952
bool tunneled
whether we spliced the connections instead of negotiating encryption
Definition: EncryptorAnswer.h:33
Definition: FilledChecklist.h:33
void commUnsetConnTimeout(const Comm::ConnectionPointer &conn)
Definition: comm.cc:616
std::ostream & operator<<(std::ostream &os, const XactAbortInfo &xai)
Definition: Launcher.h:105
Definition: ipcache.h:50
void appendf(const char *fmt,...) PRINTF_FORMAT_ARG2
Append operation with printf-style arguments.
Definition: Packable.h:61
void noteCommConnected(const CommConnectCbParams &io)
called when the connection attempt to an ICAP service completes (successfully or not)
Definition: Xaction.cc:253
A simple PeerConnector for Secure ICAP services. No SslBump capabilities.
Definition: Xaction.cc:42
virtual bool initialize(Security::SessionPointer &)
Definition: PeerConnector.cc:139
CBDATA_CHILD(IcapPeerConnector)
void MaybeGetSessionResumeData(const Security::SessionPointer &, Security::SessionStatePointer &data)
Definition: Session.cc:226
virtual void fillDoneStatus(MemBuf &buf) const
Definition: Xaction.cc:667
PeerConnector(const Comm::ConnectionPointer &aServerConn, const AsyncCallback< EncryptorAnswer > &, const AccessLogEntryPointer &alp, const time_t timeout=0)
Definition: PeerConnector.cc:40
Definition: EncryptorAnswer.h:21
Xaction(const char *aTypeName, ServiceRep::Pointer &aService)
Definition: Xaction.cc:69
void error(char *format,...)
virtual void fillPendingStatus(MemBuf &buf) const
Definition: Xaction.cc:649
void noteInitiatorAborted() override
Definition: Xaction.cc:546
Definition: ConnOpener.h:24
void setOutcome(const XactOutcome &xo)
Definition: Xaction.cc:560
Definition: AsyncJob.h:17
void useTransportConnection(const Comm::ConnectionPointer &)
Definition: Xaction.cc:268
void dnsLookupDone(std::optional< Ip::Address >)
Definition: Xaction.cc:187
static void icapLookupDnsResults(const ipcache_addrs *ia, const Dns::LookupDetails &, void *data)
Definition: Xaction.cc:152
void disableRepeats(const char *reason)
Definition: Xaction.cc:123
A combination of PeerOptions and the corresponding Context.
Definition: PeerOptions.h:154
Definition: AccessLogEntry.h:40
RefCount< AsyncCallT< Dialer > > asyncCall(int aDebugSection, int aDebugLevel, const char *aName, const Dialer &aDialer)
Definition: AsyncCall.h:156
void noteCommClosed(const CommCloseCbParams &io)
Definition: Xaction.cc:359
void noteCommWrote(const CommIoCbParams &io)
Definition: Xaction.cc:329
time_t connect_timeout(bool bypassable) const
Definition: Config.cc:41
#define TexcHere(msg)
legacy convenience macro; it is not difficult to type Here() now
Definition: TextException.h:63
void getOutgoingAddress(HttpRequest *request, const Comm::ConnectionPointer &conn)
Definition: FwdState.cc:1481
void noteCommRead(const CommIoCbParams &io)
Definition: Xaction.cc:426
Definition: PeerConnector.h:48
void ReadCancel(int fd, AsyncCall::Pointer &callback)
Cancel the read pending on FD. No action if none pending.
Definition: Read.cc:219
Definition: HttpRequest.h:48
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:18
Comm::ConnectionPointer getIdleConnection(bool isRetriable)
Definition: ServiceRep.cc:118
void dieOnConnectionFailure()
Definition: Xaction.cc:306
Adaptation::Icap::ServiceRep::Pointer icapService
Definition: Xaction.cc:63
void noteNegotiationDone(ErrorState *error) override
Definition: Xaction.cc:707
Definition: MemBuf.h:23
Definition: CommCalls.h:113
void ipcache_nbgethostbyname(const char *name, IPH *handler, void *handlerData)
Definition: ipcache.cc:609
const char * status() const override
internal cleanup; do not call directly
Definition: Xaction.cc:635
Definition: Xaction.cc:39
Security::FuturePeerContext * peerContext() const override
Definition: Xaction.cc:57
void useIcapConnection(const Comm::ConnectionPointer &)
react to the availability of a fully-ready ICAP connection
Definition: Xaction.cc:290
virtual bool fillVirginHttpHeader(MemBuf &) const
Definition: Xaction.cc:676
#define CallJobHere(debugSection, debugLevel, job, Class, method)
Definition: AsyncJobCalls.h:59
void fillChecklist(ACLFilledChecklist &) const override
configure the given checklist (to reflect the current transaction state)
Definition: Xaction.cc:699
IcapPeerConnector(Adaptation::Icap::ServiceRep::Pointer &service, const Comm::ConnectionPointer &aServerConn, const AsyncCallback< Security::EncryptorAnswer > &aCallback, AccessLogEntry::Pointer const &alp, const time_t timeout=0)
Definition: Xaction.cc:45
Definition: CommCalls.h:165
#define JobCallback(dbgSection, dbgLevel, Dialer, job, method)
Convenience macro to create a Dialer-based job callback.
Definition: AsyncJobCalls.h:70
bool initialize(Security::SessionPointer &) override
Definition: Xaction.cc:682
void Write(const Comm::ConnectionPointer &conn, const char *buf, int size, AsyncCall::Pointer &callback, FREE *free_func)
Definition: Write.cc:33
#define asyncCallback(dbgSection, dbgLevel, method, object)
Definition: AsyncCallbacks.h:195
CBDATA_NAMESPACED_CLASS_INIT(Ssl, IcapPeerConnector)
time_t io_timeout(bool bypassable) const
Definition: Config.cc:49
virtual void reset()=0
Definition: Xaction.cc:137
int ssl_ex_index_server
Definition: Xaction.h:43
Definition: CommCalls.h:104
void callException(const std::exception &e) override
called when the job throws during an async call
Definition: Xaction.cc:372
void commSetConnTimeout(const Comm::ConnectionPointer &conn, time_t timeout, AsyncCall::Pointer &callback)
Definition: comm.cc:592
void handleSecuredPeer(Security::EncryptorAnswer &answer)
Definition: Xaction.cc:717
Definition: Launcher.h:82
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 noteCommTimedout(const CommTimeoutCbParams &io)
Definition: Xaction.cc:347
Definition: errorpage.h:88
virtual void callException(const std::exception &e)
called when the job throws during an async call
Definition: AsyncJob.cc:143
virtual AccessLogEntry::Pointer masterLogEntry()
Definition: Xaction.cc:103
Definition: Launcher.h:47
void comm_remove_close_handler(int fd, CLCB *handler, void *data)
Definition: comm.cc:981
void tvSub(struct timeval &res, struct timeval const &t1, struct timeval const &t2)
Definition: gadgets.cc:58
bool parseHttpMsg(Http::Message *msg)
Definition: Xaction.cc:497
ErrorDetail::Pointer MakeNamedErrorDetail(const char *name)
Definition: Detail.cc:54
void SetSessionResumeData(const Security::SessionPointer &, const Security::SessionStatePointer &)
Definition: Session.cc:247
#define CallJobHere1(debugSection, debugLevel, job, Class, method, arg1)
Definition: AsyncJobCalls.h:64
Definition: ServiceRep.h:59
Definition: AccessCheck.h:24
bool parse(const char *buf, const size_t sz, bool eol, Http::StatusCode *error)
Definition: Message.cc:68
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