ModXact.cc
Go to the documentation of this file.
47 const SBuf Adaptation::Icap::ChunkExtensionValueParser::UseOriginalBodyName("use-original-body");
55 HttpRequest *virginCause, AccessLogEntry::Pointer &alp, Adaptation::Icap::ServiceRep::Pointer &aService):
395 bool Adaptation::Icap::ModXact::virginBodyEndReached(const Adaptation::Icap::VirginBodyAct &act) const
404 size_t Adaptation::Icap::ModXact::virginContentSize(const Adaptation::Icap::VirginBodyAct &act) const
416 const char *Adaptation::Icap::ModXact::virginContentData(const Adaptation::Icap::VirginBodyAct &act) const
588 const size_t size = adapted.body_pipe->putMoreData(virginContentData(virginBodySending), sizeMax);
1094 debugs(93, 5, "have " << readBuf.length() << ' ' << description << " bytes to parse; state: " << state.parsing);
1100 debugs(93, (!parsed && error) ? 2 : 5, description << " parsing result: " << parsed << " detail: " << error);
1131 const bool promisesToSendTrailer = icapReply->header.getByIdIfPresent(Http::HdrType::TRAILER, &trailers);
1132 const bool supportsTrailers = icapReply->header.hasListMember(Http::HdrType::ALLOW, "trailers", ',');
1135 Must((promisesToSendTrailer == supportsTrailers) || (!promisesToSendTrailer && supportsTrailers));
1137 debugs(93, DBG_IMPORTANT, "ERROR: ICAP Trailer response header field must not be empty (salvaged)");
1409 size_t resultLen = base64_encode_update(&ctx, base64buf, request->extacl_user.size(), reinterpret_cast<const uint8_t*>(request->extacl_user.rawBuf()));
1410 resultLen += base64_encode_update(&ctx, base64buf+resultLen, 1, reinterpret_cast<const uint8_t*>(":"));
1411 resultLen += base64_encode_update(&ctx, base64buf+resultLen, request->extacl_passwd.size(), reinterpret_cast<const uint8_t*>(request->extacl_passwd.rawBuf()));
1422 buf.appendf(SQUIDSTRINGPH ": " SQUIDSTRINGPH "\r\n", SQUIDSTRINGPRINT(name), SQUIDSTRINGPRINT(value));
1568 size_t resultLen = base64_encode_update(&ctx, base64buf, strlen(value), reinterpret_cast<const uint8_t*>(value));
1581 Adaptation::Icap::ModXact::encapsulateHead(MemBuf &icapBuf, const char *section, MemBuf &httpBuf, const Http::Message *head)
2018 adapted.header->sources |= (service().cfg().connectionEncryption ? Http::Message::srcIcaps : Http::Message::srcIcap);
2023 Adaptation::Icap::ModXactLauncher::ModXactLauncher(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp, Adaptation::ServicePointer aService):
2065 bool Adaptation::Icap::TrailerParser::parse(const char *buf, int len, int atEnd, Http::StatusCode *error) {
void disableBypass(const char *reason, bool includeGroupBypass)
Definition: ModXact.cc:717
void callException(const std::exception &e) override
called when the job throws during an async call
Definition: ModXact.cc:665
Definition: AsyncJob.h:31
Definition: TeChunkedParser.h:51
void prepPartialBodyEchoing(uint64_t pos)
Definition: ModXact.cc:1022
ModXactLauncher(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp, Adaptation::ServicePointer s)
Definition: ModXact.cc:2023
ModXact(Http::Message *virginHeader, HttpRequest *virginCause, AccessLogEntry::Pointer &alp, ServiceRep::Pointer &s)
Definition: ModXact.cc:54
void appendf(const char *fmt,...) PRINTF_FORMAT_ARG2
Append operation with printf-style arguments.
Definition: Packable.h:61
void openChunk(MemBuf &buf, size_t chunkSize, bool ieof)
Definition: ModXact.cc:376
void applyTrailerRules()
prohibits Content-Length in GET/HEAD requests
Definition: ContentLengthInterpreter.h:42
size_t virginContentSize(const VirginBodyAct &act) const
Definition: ModXact.cc:404
virtual bool expectingBody(const HttpRequestMethod &, int64_t &) const =0
void makeRequestHeaders(MemBuf &buf)
Definition: ModXact.cc:1379
virtual void fillDoneStatus(MemBuf &buf) const
Definition: Xaction.cc:667
void packHead(MemBuf &httpBuf, const Http::Message *head)
Definition: ModXact.cc:1628
bool virginBodyEndReached(const VirginBodyAct &act) const
Definition: ModXact.cc:395
void noteMoreBodyDataAvailable(BodyPipe::Pointer) override
Definition: ModXact.cc:1233
Parses and stores ICAP trailer header block.
Definition: ModXact.h:110
char * client_username_header
Definition: Config.h:36
void updateXxRecord(const char *name, const String &value)
sets or resets a cross-transactional database record
Definition: History.cc:105
size_t base64_encode_final(struct base64_encode_ctx *ctx, char *dst)
Definition: base64.c:308
void updateNextServices(const String &services)
sets or resets next services for the Adaptation::Iterator to notice
Definition: History.cc:121
CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, ModXact)
void error(char *format,...)
virtual void fillPendingStatus(MemBuf &buf) const
Definition: Xaction.cc:649
void stopParsing(const bool checkUnparsedData=true)
Definition: ModXact.cc:1213
Auth::UserRequest::Pointer auth_user_request
Definition: HttpRequest.h:127
void handleCommWrote(size_t size) override
Definition: ModXact.cc:208
void makeAllowHeader(MemBuf &buf)
Definition: ModXact.cc:1519
bool getXxRecord(String &name, String &value) const
returns true and fills the record fields iff there is a db record
Definition: History.cc:111
bool parsePart(Part *part, const char *description)
Definition: ModXact.cc:1091
void detailError(const err_type c, const ErrorDetail::Pointer &d)
sets error detail if no earlier detail was available
Definition: HttpRequest.h:101
Definition: base64.h:68
void maybeAllocateHttpMsg()
Definition: ModXact.cc:730
void fillDoneStatus(MemBuf &buf) const override
Definition: ModXact.cc:1785
void addLastRequestChunk(MemBuf &buf)
Definition: ModXact.cc:369
char * toStr(char *buf, const unsigned int blen, int force=AF_UNSPEC) const
Definition: Address.cc:812
void encapsulateHead(MemBuf &icapBuf, const char *section, MemBuf &httpBuf, const Http::Message *head)
Definition: ModXact.cc:1581
#define TexcHere(msg)
legacy convenience macro; it is not difficult to type Here() now
Definition: TextException.h:63
virtual bool inheritProperties(const Http::Message *)=0
Definition: BodyPipe.h:90
@ zero
#define MAX_IPSTRLEN
Length of buffer that needs to be allocated to old a null-terminated IP-string.
Definition: forward.h:25
Definition: HttpHeader.h:50
void recordXactFinish(int hid)
record the end of a xact identified by its history ID
Definition: History.cc:61
Definition: HttpRequest.h:48
void handleCommRead(size_t size) override
Definition: ModXact.cc:567
void makeAdaptedBodyPipe(const char *what)
Definition: ModXact.cc:1859
void detailError(const ErrorDetail::Pointer &errDetail) override
record error detail in the virgin request if possible
Definition: ModXact.cc:1992
bool httpHeaderHasConnDir(const HttpHeader *hdr, const SBuf &directive)
Definition: HttpHeaderTools.cc:91
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
Definition: gadgets.cc:18
void noteServiceAvailable()
Definition: ModXact.cc:168
void parseExtensionValuesWith(ChunkExtensionValueParser *parser)
Definition: TeChunkedParser.h:62
Http::StatusCode status() const
retrieve the status code for this status line
Definition: StatusLine.h:45
void parse(Tokenizer &tok, const SBuf &extName) override
Definition: ModXact.cc:2077
Definition: Client.h:16
void finalizeLogInfo() override
Definition: ModXact.cc:1315
bool expectHttpHeader() const
whether ICAP response header indicates HTTP header presence
Definition: ModXact.cc:1118
Definition: MemBuf.h:23
bool expectHttpBody() const
whether ICAP response header indicates HTTP body presence
Definition: ModXact.cc:1123
const char * status() const override
internal cleanup; do not call directly
Definition: Xaction.cc:635
Definition: RequestMethod.h:26
void clearError() override
clear stored error details, if any; used for retries/repeats
Definition: ModXact.cc:2004
void fillPendingStatus(MemBuf &buf) const override
Definition: ModXact.cc:1745
Adaptation::Icap::History::Pointer icapHistory() const
Returns possibly nil history, creating it if icap logging is enabled.
Definition: HttpRequest.cc:389
Definition: ModXact.h:60
static const SBuf UseOriginalBodyName
Definition: ModXact.h:135
Definition: SquidString.h:25
void writeSomeBody(const char *label, size_t size)
Definition: ModXact.cc:319
bool fillVirginHttpHeader(MemBuf &) const override
Definition: ModXact.cc:1982
void handleCommWroteHeaders()
Definition: ModXact.cc:218
void noteBodyProducerAborted(BodyPipe::Pointer) override
Definition: ModXact.cc:1255
#define JobCallback(dbgSection, dbgLevel, Dialer, job, method)
Convenience macro to create a Dialer-based job callback.
Definition: AsyncJobCalls.h:70
void prepareLogWithRequestDetails(HttpRequest *, const AccessLogEntryPointer &)
Definition: client_side.cc:322
const char * virginContentData(const VirginBodyAct &act) const
Definition: ModXact.cc:416
Adaptation::History::Pointer adaptHistory(bool createIfNone=false) const
Returns possibly nil history, creating it if requested.
Definition: HttpRequest.cc:404
Adaptation::History::Pointer adaptLogHistory() const
Returns possibly nil history, creating it if adapt. logging is enabled.
Definition: HttpRequest.cc:415
Definition: Xaction.h:43
void callException(const std::exception &e) override
called when the job throws during an async call
Definition: Xaction.cc:372
bool canBackupEverything() const
Definition: ModXact.cc:1694
bool expectIcapTrailers() const
whether ICAP response header indicates ICAP trailers presence
Definition: ModXact.cc:1128
Definition: HttpReply.h:24
const HttpRequest & virginRequest() const
locates the request, either as a cause or as a virgin message itself
Definition: ModXact.cc:386
Xaction * createXaction() override
Definition: ModXact.cc:2033
void start(const char *context)
record the start of an ICAP processing interval
Definition: History.cc:23
Definition: Notes.h:179
void decideWritingAfterPreview(const char *previewKind)
determine state.writing after we wrote the entire preview
Definition: ModXact.cc:292
Definition: parse.c:160
void noteMoreBodySpaceAvailable(BodyPipe::Pointer) override
Definition: ModXact.cc:1268
void noteBodyConsumerAborted(BodyPipe::Pointer) override
Definition: ModXact.cc:1279
::Parser::Tokenizer Tokenizer
Definition: TeChunkedParser.h:32
void handle206PartialContent()
Definition: ModXact.cc:929
size_t base64_encode_update(struct base64_encode_ctx *ctx, char *dst, size_t length, const uint8_t *src)
Definition: base64.c:265
bool gotEncapsulated(const char *section) const
Definition: ModXact.cc:1810
Definition: ServiceConfig.h:22
void finishNullOrEmptyBodyPreview(MemBuf &buf)
Definition: ModXact.cc:1731
void recordMeta(const HttpHeader *lm)
store the last meta header fields received from the adaptation service
Definition: History.cc:140
int recordXactStart(const String &serviceId, const timeval &when, bool retrying)
record the start of a xact, return xact history ID
Definition: History.cc:51
bool parse(const char *buf, int len, int atEnd, Http::StatusCode *error)
Definition: ModXact.cc:2065
void noteBodyProductionEnded(BodyPipe::Pointer) override
Definition: ModXact.cc:1242
Definition: BodyPipe.h:61
Definition: Address.h:42
void makeUsernameHeader(const HttpRequest *request, MemBuf &buf)
Definition: ModXact.cc:1552
Definition: Launcher.h:47
void updateHistory(bool start)
starts or stops transaction accounting in ICAP history
Definition: ModXact.cc:2048
Definition: ExceptionErrorDetail.h:22
ErrorDetail::Pointer MakeNamedErrorDetail(const char *name)
Definition: Detail.cc:54
Definition: ServiceRep.h:59
Definition: AccessCheck.h:24
Definition: ModXact.h:141
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