Xaction.cc
Go to the documentation of this file.
36 class MyIcapAnswerDialer: public UnaryMemFunT<Adaptation::Icap::Xaction, Security::EncryptorAnswer, Security::EncryptorAnswer&>,
41 UnaryMemFunT<Adaptation::Icap::Xaction, Security::EncryptorAnswer, Security::EncryptorAnswer&>(aJob, aMethod, Security::EncryptorAnswer()) {}
79 Adaptation::Icap::Xaction::Xaction(const char *aTypeName, Adaptation::Icap::ServiceRep::Pointer &aService):
173 debugs(93,3, typeName << " opens connection to " << s.cfg().host.termedBuf() << ":" << s.cfg().port);
207 AsyncCall::Pointer callback = JobCallback(93, 3, ConnectDialer, this, Adaptation::Icap::Xaction::noteCommConnected);
208 const auto cs = new Comm::ConnOpener(conn, callback, TheConfig.connect_timeout(service().cfg().bypass));
277 const auto sslConnector = new Ssl::IcapPeerConnector(theService, conn, callback, masterLogEntry(), TheConfig.connect_timeout(service().cfg().bypass));
402 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
Security::EncryptorAnswer arg1
Definition: AsyncJobCalls.h:119
PeerConnector(const Comm::ConnectionPointer &aServerConn, AsyncCall::Pointer &aCallback, const AccessLogEntryPointer &alp, const time_t timeout=0)
Definition: PeerConnector.cc:37
Definition: Initiate.h:31
Definition: AsyncJob.h:32
AsyncCall::Pointer comm_add_close_handler(int fd, CLCB *handler, void *data)
Definition: comm.cc:921
bool tunneled
whether we spliced the connections instead of negotiating encryption
Definition: EncryptorAnswer.h:33
Definition: FilledChecklist.h:33
Definition: ipcache.h:51
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:248
A simple PeerConnector for Secure ICAP services. No SslBump capabilities.
Definition: Xaction.cc:50
virtual bool initialize(Security::SessionPointer &)
Definition: PeerConnector.cc:137
void MaybeGetSessionResumeData(const Security::SessionPointer &, Security::SessionStatePointer &data)
Definition: Session.cc:225
virtual void fillDoneStatus(MemBuf &buf) const
Definition: Xaction.cc:664
void dnsLookupDone(const ipcache_addrs *ia)
Definition: Xaction.cc:182
Definition: EncryptorAnswer.h:22
Xaction(const char *aTypeName, ServiceRep::Pointer &aService)
Definition: Xaction.cc:79
void error(char *format,...)
virtual void fillPendingStatus(MemBuf &buf) const
Definition: Xaction.cc:646
int commSetConnTimeout(const Comm::ConnectionPointer &conn, int timeout, AsyncCall::Pointer &callback)
Definition: comm.cc:563
Definition: ConnOpener.h:25
void setOutcome(const XactOutcome &xo)
Definition: Xaction.cc:557
virtual void fillChecklist(ACLFilledChecklist &) const
configure the given checklist (to reflect the current transaction state)
Definition: PeerConnector.cc:91
void useTransportConnection(const Comm::ConnectionPointer &)
Definition: Xaction.cc:263
static void icapLookupDnsResults(const ipcache_addrs *ia, const Dns::LookupDetails &, void *data)
Definition: Xaction.cc:146
void disableRepeats(const char *reason)
Definition: Xaction.cc:133
void(Job::* Method)(Security::EncryptorAnswer &)
Definition: AsyncJobCalls.h:110
Definition: AccessLogEntry.h:41
void noteCommClosed(const CommCloseCbParams &io)
Definition: Xaction.cc:357
void noteCommWrote(const CommIoCbParams &io)
Definition: Xaction.cc:327
Definition: AsyncJobCalls.h:108
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:59
void getOutgoingAddress(HttpRequest *request, const Comm::ConnectionPointer &conn)
Definition: FwdState.cc:1524
void noteCommRead(const CommIoCbParams &io)
Definition: Xaction.cc:424
Definition: PeerConnector.h:49
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:49
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:17
Comm::ConnectionPointer getIdleConnection(bool isRetriable)
Definition: ServiceRep.cc:117
CBDATA_CLASS(IcapPeerConnector)
void dieOnConnectionFailure()
Definition: Xaction.cc:304
Adaptation::Icap::ServiceRep::Pointer icapService
Definition: Xaction.cc:73
Definition: MemBuf.h:24
Definition: CommCalls.h:119
void ipcache_nbgethostbyname(const char *name, IPH *handler, void *handlerData)
Definition: ipcache.cc:599
Definition: Xaction.cc:48
void useIcapConnection(const Comm::ConnectionPointer &)
react to the availability of a fully-ready ICAP connection
Definition: Xaction.cc:288
Callback dialer API to allow PeerConnector to set the answer.
Definition: PeerConnector.h:57
virtual bool fillVirginHttpHeader(MemBuf &) const
Definition: Xaction.cc:673
#define CallJobHere(debugSection, debugLevel, job, Class, method)
Definition: AsyncJobCalls.h:58
virtual Security::EncryptorAnswer & answer()
gives PeerConnector access to the in-dialer answer
Definition: Xaction.cc:44
MyIcapAnswerDialer(const JobPointer &aJob, Method aMethod)
Definition: Xaction.cc:40
Definition: CommCalls.h:181
#define JobCallback(dbgSection, dbgLevel, Dialer, job, method)
Convenience macro to create a Dialer-based job callback.
Definition: AsyncJobCalls.h:69
void Write(const Comm::ConnectionPointer &conn, const char *buf, int size, AsyncCall::Pointer &callback, FREE *free_func)
Definition: Write.cc:33
int commUnsetConnTimeout(const Comm::ConnectionPointer &conn)
Definition: comm.cc:589
CBDATA_NAMESPACED_CLASS_INIT(Ssl, IcapPeerConnector)
virtual void callException(const std::exception &e)
called when the job throws during an async call
Definition: Xaction.cc:370
time_t io_timeout(bool bypassable) const
Definition: Config.cc:49
virtual void reset()=0
int ssl_ex_index_server
Definition: Xaction.h:44
Definition: CommCalls.h:110
virtual void noteInitiatorAborted()
Definition: Xaction.cc:543
void handleSecuredPeer(Security::EncryptorAnswer &answer)
Definition: Xaction.cc:714
Definition: Launcher.h:83
virtual void noteNegotiationDone(ErrorState *error)
Definition: Xaction.cc:704
AsyncCall * asyncCall(int aDebugSection, int aDebugLevel, const char *aName, const Dialer &aDialer)
Definition: AsyncCall.h:154
void Controller::create() STUB void Controller Controller nil
Definition: stub_libstore.cc:19
Definition: CommCalls.h:139
Definition: CommCalls.h:133
void noteCommTimedout(const CommTimeoutCbParams &io)
Definition: Xaction.cc:345
Definition: errorpage.h:87
virtual void callException(const std::exception &e)
called when the job throws during an async call
Definition: AsyncJob.cc:128
Gives Security::PeerConnector access to Answer in the PeerPoolMgr callback dialer.
Definition: Xaction.cc:38
virtual void fillChecklist(ACLFilledChecklist &) const
configure the given checklist (to reflect the current transaction state)
Definition: Xaction.cc:696
IcapPeerConnector(Adaptation::Icap::ServiceRep::Pointer &service, const Comm::ConnectionPointer &aServerConn, AsyncCall::Pointer &aCallback, AccessLogEntry::Pointer const &alp, const time_t timeout=0)
Definition: Xaction.cc:53
virtual Security::ContextPointer getTlsContext()
Definition: Xaction.cc:65
virtual bool initialize(Security::SessionPointer &)
Definition: Xaction.cc:679
virtual AccessLogEntry::Pointer masterLogEntry()
Definition: Xaction.cc:113
Definition: Launcher.h:48
void comm_remove_close_handler(int fd, CLCB *handler, void *data)
Definition: comm.cc:950
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:494
ErrorDetail::Pointer MakeNamedErrorDetail(const char *name)
Definition: Detail.cc:54
void SetSessionResumeData(const Security::SessionPointer &, const Security::SessionStatePointer &)
Definition: Session.cc:246
#define CallJobHere1(debugSection, debugLevel, job, Class, method, arg1)
Definition: AsyncJobCalls.h:63
Definition: ServiceRep.h:61
Definition: AccessCheck.h:25
bool parse(const char *buf, const size_t sz, bool eol, Http::StatusCode *error)
Definition: Message.cc:79