]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/http.h
Cleanup: zap CVS Id tags
[thirdparty/squid.git] / src / http.h
index 34115fa3542d20db778bbcf126c65dccddb2491e..ab6e3d76d03bdb319b51359424532cb143942e6c 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: http.h,v 1.31 2007/07/23 19:58:46 rousskov Exp $
+ * $Id$
  *
  *
  * SQUID Web Proxy Cache          http://www.squid-cache.org/
  *  it under the terms of the GNU General Public License as published by
  *  the Free Software Foundation; either version 2 of the License, or
  *  (at your option) any later version.
- *  
+ *
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
- *  
+ *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
@@ -38,6 +38,7 @@
 #include "comm.h"
 #include "forward.h"
 #include "Server.h"
+#include "ChunkedCodingParser.h"
 
 class HttpStateData : public ServerStateData
 {
@@ -46,8 +47,6 @@ public:
     HttpStateData(FwdState *);
     ~HttpStateData();
 
-    static IOCB SendComplete;
-    static IOCB ReadReplyWrapper;
     static void httpBuildRequestHeader(HttpRequest * request,
                                        HttpRequest * orig_request,
                                        StoreEntry * entry,
@@ -59,12 +58,13 @@ public:
     bool sendRequest();
     void processReplyHeader();
     void processReplyBody();
-    void readReply(size_t len, comm_err_t flag, int xerrno);
+    void readReply(const CommIoCbParams &io);
     virtual void maybeReadVirginBody(); // read response data from the network
     int cacheableReply();
 
     peer *_peer;               /* peer request made to */
     int eof;                   /* reached end-of-object? */
+    int lastChunk;             /* reached last chunk of a chunk-encoded reply */
     HttpRequest *orig_request;
     int fd;
     http_state_flags flags;
@@ -77,16 +77,11 @@ public:
 
     void processSurrogateControl(HttpReply *);
 
-    /*
-     * getReply() public only because it is called from a static function
-     * as httpState->getReply()
-     */
-    const HttpReply * getReply() const { assert(reply); return reply; }
-
 protected:
     virtual HttpRequest *originalRequest();
 
 private:
+    AsyncCall::Pointer closeHandler;
     enum ConnectionStatus {
         INCOMPLETE_MSG,
         COMPLETE_PERSISTENT_MSG,
@@ -109,16 +104,23 @@ private:
     virtual void handleRequestBodyProducerAborted();
 
     void writeReplyBody();
+    bool decodeAndWriteReplyBody();
     void doneSendingRequestBody();
     void requestBodyHandler(MemBuf &);
-    virtual void sentRequestBody(int fd, size_t size, comm_err_t errflag);
+    virtual void sentRequestBody(const CommIoCbParams &io);
+    void sendComplete(const CommIoCbParams &io);
+    void httpStateConnClosed(const CommCloseCbParams &params);
+    void httpTimeout(const CommTimeoutCbParams &params);
+
     mb_size_t buildRequestPrefix(HttpRequest * request,
                                  HttpRequest * orig_request,
                                  StoreEntry * entry,
                                  MemBuf * mb,
                                  http_state_flags flags);
     static bool decideIfWeDoRanges (HttpRequest * orig_request);
+    bool peerSupportsConnectionPinning() const;
 
+    ChunkedCodingParser *httpChunkDecoder;
 private:
     CBDATA_CLASS2(HttpStateData);
 };