#endif
extacl_log = null_string;
extacl_message = null_string;
- pstate = psReadyToParseStartLine;
+ pstate = Http::Message::psReadyToParseStartLine;
#if FOLLOW_X_FORWARDED_FOR
indirect_client_addr.setEmpty();
#endif /* FOLLOW_X_FORWARDED_FOR */
// from store_client::readBody()
// parse headers if needed; they might span multiple slices!
HttpReply *rep = (HttpReply *)e.getReply();
- if (rep->pstate < psParsed) {
+ if (rep->pstate < Http::Message::psParsed) {
// XXX: have to copy because httpMsgParseStep() requires 0-termination
MemBuf mb;
mb.init(buf.length+1, buf.length+1);
mb.terminate();
const int result = rep->httpMsgParseStep(mb.buf, buf.length, eof);
if (result > 0) {
- assert(rep->pstate == psParsed);
+ assert(rep->pstate == Http::Message::psParsed);
EBIT_CLR(e.flags, ENTRY_FWD_HDR_WAIT);
} else if (result < 0) {
debugs(20, DBG_IMPORTANT, "Corrupted mem-cached headers: " << e);
}
}
-HttpMsgParseState &operator++ (HttpMsgParseState &aState)
-{
- int tmp = (int)aState;
- aState = (HttpMsgParseState)(++tmp);
- return aState;
-}
-
/* find first CRLF */
static int
httpMsgIsolateStart(const char **parse_start, const char **blk_start, const char **blk_end)
const char *blk_start, *blk_end;
const char **parse_end_ptr = &blk_end;
assert(parse_start);
- assert(pstate < psParsed);
+ assert(pstate < Http::Message::psParsed);
*parse_end_ptr = parse_start;
PROF_start(HttpMsg_httpMsgParseStep);
- if (pstate == psReadyToParseStartLine) {
+ if (pstate == Http::Message::psReadyToParseStartLine) {
if (!httpMsgIsolateStart(&parse_start, &blk_start, &blk_end)) {
PROF_stop(HttpMsg_httpMsgParseStep);
return 0;
hdr_sz = *parse_end_ptr - buf;
parse_len = parse_len - hdr_sz;
- ++pstate;
+ pstate = Http::Message::psReadyToParseHeaders;
}
/*
* this code might not actually be given parse_start at the right spot (just
* after headers.) Grr.
*/
- if (pstate == psReadyToParseHeaders) {
+ if (pstate == Http::Message::psReadyToParseHeaders) {
size_t hsize = 0;
const int parsed = header.parse(parse_start, parse_len, atEnd, hsize);
if (parsed <= 0) {
}
hdr_sz += hsize;
hdrCacheInit();
- ++pstate;
+ pstate = Http::Message::psParsed;
}
PROF_stop(HttpMsg_httpMsgParseStep);
// zero does not need parsing
// XXX: c_str() reallocates. performance regression.
if (hp.headerBlockSize() && !header.parse(hp.mimeHeader().c_str(), hp.headerBlockSize())) {
- pstate = psError;
+ pstate = Http::Message::psError;
return false;
}
// XXX: we are just parsing HTTP headers, not the whole message prefix here
hdr_sz = hp.messageHeaderSize();
- pstate = psParsed;
+ pstate = Http::Message::psParsed;
hdrCacheInit();
return true;
}
int64_t content_length = 0;
+ /// parse state of HttpReply or HttpRequest
+ enum ParseState {
+ psReadyToParseStartLine = 0,
+ psReadyToParseHeaders,
+ psParsed,
+ psError
+ };
+
/// the current parsing state
- HttpMsgParseState pstate = psReadyToParseStartLine;
+ ParseState pstate = Http::Message::psReadyToParseStartLine;
/// optional pipeline to receive message body
BodyPipe::Pointer body_pipe;