]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
SourceLayout: move HttpMsgParseState into Http::Message class
authorAmos Jeffries <squid3@treenet.co.nz>
Mon, 20 Feb 2017 04:56:00 +0000 (17:56 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 20 Feb 2017 04:56:00 +0000 (17:56 +1300)
src/HttpReply.cc
src/HttpRequest.cc
src/MemStore.cc
src/enums.h
src/http/Message.cc
src/http/Message.h

index 16057b7e7231e774cc02dddc70cd6ef99d1e8047..a0a0abedaefcfcb5fb73b6bdfd9a0833ef71d920 100644 (file)
@@ -43,7 +43,7 @@ HttpReply::init()
 {
     hdrCacheInit();
     sline.init();
-    pstate = psReadyToParseStartLine;
+    pstate = Http::Message::psReadyToParseStartLine;
     do_clean = true;
 }
 
index bcd0b7fa65bd56279f4e91063f88730ca9a47896..9cca8cbe394fc4fc42161f516417335014a61538 100644 (file)
@@ -99,7 +99,7 @@ HttpRequest::init()
 #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 */
index c858a851af8163d79a0d2412d18922857e80c761..fed280c389c97da95ba48d67cf5d0067a74ac5e6 100644 (file)
@@ -568,7 +568,7 @@ MemStore::copyFromShmSlice(StoreEntry &e, const StoreIOBuffer &buf, bool eof)
     // 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);
@@ -576,7 +576,7 @@ MemStore::copyFromShmSlice(StoreEntry &e, const StoreIOBuffer &buf, bool eof)
         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);
index f417be31925d99f5f58084e54994810c1683f0ad..db8a2e1d6021ea3f8bec548fe6e7ac3e0a5e7afd 100644 (file)
@@ -123,14 +123,6 @@ enum {
     STORE_LOG_SWAPOUTFAIL
 };
 
-/* parse state of HttpReply or HttpRequest */
-typedef enum {
-    psReadyToParseStartLine = 0,
-    psReadyToParseHeaders,
-    psParsed,
-    psError
-} HttpMsgParseState;
-
 enum {
     PCTILE_HTTP,
     PCTILE_ICP_QUERY,
index 4ba0c98d66e9d375bf9674a0b1ef48005c5f9d75..b5e699b5115f9caa91780b6909f50c7ec321ff8b 100644 (file)
@@ -48,13 +48,6 @@ Http::Message::putCc(const HttpHdrCc *otherCc)
     }
 }
 
-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)
@@ -180,13 +173,13 @@ Http::Message::httpMsgParseStep(const char *buf, int len, int atEnd)
     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;
@@ -202,7 +195,7 @@ Http::Message::httpMsgParseStep(const char *buf, int len, int atEnd)
         hdr_sz = *parse_end_ptr - buf;
         parse_len = parse_len - hdr_sz;
 
-        ++pstate;
+        pstate = Http::Message::psReadyToParseHeaders;
     }
 
     /*
@@ -210,7 +203,7 @@ Http::Message::httpMsgParseStep(const char *buf, int len, int atEnd)
      * 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) {
@@ -219,7 +212,7 @@ Http::Message::httpMsgParseStep(const char *buf, int len, int atEnd)
         }
         hdr_sz += hsize;
         hdrCacheInit();
-        ++pstate;
+        pstate = Http::Message::psParsed;
     }
 
     PROF_stop(HttpMsg_httpMsgParseStep);
@@ -233,13 +226,13 @@ Http::Message::parseHeader(Http1::Parser &hp)
     // 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;
 }
index 6c4d1a2d0fa6afac0c7c6dc3a62a98f7f3ef0e99..9dcb79a52064bc02c3468f7f798a92ac5dc427e0 100644 (file)
@@ -82,8 +82,16 @@ public:
 
     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;