HttpReply.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2018 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #ifndef SQUID_HTTPREPLY_H
10 #define SQUID_HTTPREPLY_H
11 
12 #include "http/StatusLine.h"
13 #include "HttpBody.h"
14 #include "HttpRequest.h"
15 
16 void httpReplyInitModule(void);
17 
18 /* Sync changes here with HttpReply.cc */
19 
20 class HttpHdrContRange;
21 
22 class HttpHdrSc;
23 
24 class HttpReply: public Http::Message
25 {
27 
28 public:
30 
31  HttpReply();
32  ~HttpReply();
33 
34  virtual void reset();
35 
41  virtual bool sanityCheckStartLine(const char *buf, const size_t hdr_len, Http::StatusCode *error);
42 
44  time_t date;
45 
46  time_t last_modified;
47 
48  time_t expires;
49 
51 
53 
55  const HttpHdrContRange *contentRange() const;
56 
57  short int keep_alive;
58 
61 
66  bool do_clean;
67 
68 public:
69  virtual int httpMsgParseError();
70 
71  virtual bool expectingBody(const HttpRequestMethod&, int64_t&) const;
72 
73  virtual bool inheritProperties(const Http::Message *);
74 
75  bool updateOnNotModified(HttpReply const *other);
76 
78  void setHeaders(Http::StatusCode status,
79  const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires);
80 
82  MemBuf *pack() const;
83 
85  HttpReply *make304() const;
86 
87  void redirect(Http::StatusCode, const char *);
88 
89  int64_t bodySize(const HttpRequestMethod&) const;
90 
94  bool receivedBodyTooLarge(HttpRequest&, int64_t receivedBodySize);
95 
100 
101  int validatorsMatch (HttpReply const *other) const;
102 
108 
112  HttpReply *clone() const;
113 
115  void removeStaleWarnings();
116 
117  virtual void hdrCacheInit();
118 
121  bool olderThan(const HttpReply *them) const;
122 
125 
128  bool parseHeader(Http1::Parser &hp);
129 
130 private:
132  void init();
133 
134  void clean();
135 
136  void hdrCacheClean();
137 
138  void packInto(MemBuf &) const;
139 
140  /* ez-routines */
142  MemBuf *packed304Reply() const;
143 
144  /* header manipulation */
145  time_t hdrExpirationTime();
146 
150  void calcMaxBodySize(HttpRequest& request) const;
151 
152  String removeStaleWarningValues(const String &value);
153 
154  mutable int64_t bodySizeMax;
157 
158 protected:
159  virtual void packFirstLineInto(Packable * p, bool) const { sline.packInto(p); }
160 
161  virtual bool parseFirstLine(const char *start, const char *end);
162 };
163 
164 #endif /* SQUID_HTTPREPLY_H */
165 
short int keep_alive
Definition: HttpReply.h:57
void packInto(Packable *) const
pack fields into a Packable object
Definition: StatusLine.cc:46
void calcMaxBodySize(HttpRequest &request) const
Definition: HttpReply.cc:541
void httpReplyInitModule(void)
HttpReply * make304() const
Definition: HttpReply.cc:120
void packInto(MemBuf &) const
Definition: HttpReply.cc:103
#define MEMPROXY_CLASS(CLASS)
struct _request * request(char *urlin)
Definition: tcp-banger2.c:291
void error(char *format,...)
MemBuf * pack() const
Definition: HttpReply.cc:111
~HttpReply()
Definition: HttpReply.cc:43
bool expectedBodyTooLarge(HttpRequest &request)
Definition: HttpReply.cc:520
int64_t bodySize(const HttpRequestMethod &) const
Definition: HttpReply.cc:371
void removeStaleWarnings()
Remove Warnings with warn-date different from Date value.
Definition: HttpReply.cc:594
void hdrCacheClean()
Definition: HttpReply.cc:347
void redirect(Http::StatusCode, const char *)
Definition: HttpReply.cc:196
virtual void hdrCacheInit()
Definition: HttpReply.cc:315
char * p
Definition: membanger.c:43
String protoPrefix
Definition: HttpReply.h:64
int validatorsMatch(HttpReply const *other) const
Definition: HttpReply.cc:214
void clean()
Definition: HttpReply.cc:72
virtual int httpMsgParseError()
Definition: HttpReply.cc:471
MemBuf * packed304Reply() const
Definition: HttpReply.cc:149
virtual bool sanityCheckStartLine(const char *buf, const size_t hdr_len, Http::StatusCode *error)
Definition: HttpReply.cc:396
bool parseHeader(Http1::Parser &hp)
parses reply header using Parser
Definition: HttpReply.cc:463
const HttpHdrContRange * contentRange() const
Definition: HttpReply.cc:339
int64_t bodySizeMax
Definition: HttpReply.h:154
StatusCode
Definition: StatusCode.h:20
time_t hdrExpirationTime()
Definition: HttpReply.cc:277
virtual bool expectingBody(const HttpRequestMethod &, int64_t &) const
Definition: HttpReply.cc:484
void setHeaders(Http::StatusCode status, const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires)
Definition: HttpReply.cc:161
bool updateOnNotModified(HttpReply const *other)
Definition: HttpReply.cc:256
String content_type
Definition: HttpReply.h:50
bool do_clean
Definition: HttpReply.h:66
void packHeadersUsingFastPacker(Packable &p) const
Definition: HttpReply.cc:86
time_t last_modified
Definition: HttpReply.h:46
common parts of HttpRequest and HttpReply
Definition: Message.h:25
Http::StatusLine sline
Definition: HttpReply.h:60
virtual bool parseFirstLine(const char *start, const char *end)
Definition: HttpReply.cc:451
time_t date
Definition: HttpReply.h:44
HttpHdrSc * surrogate_control
Definition: HttpReply.h:52
void const char * buf
Definition: stub_helper.cc:16
RefCount< HttpReply > Pointer
Definition: HttpReply.h:26
bool olderThan(const HttpReply *them) const
Definition: HttpReply.cc:659
void packHeadersUsingSlowPacker(Packable &p) const
same as packHeadersUsingFastPacker() but assumes that p cannot quickly process small additions ...
Definition: HttpReply.cc:94
HttpBody body
Definition: HttpReply.h:62
Definition: MemBuf.h:23
virtual void packFirstLineInto(Packable *p, bool) const
Definition: HttpReply.h:159
void init()
Definition: HttpReply.cc:50
bool receivedBodyTooLarge(HttpRequest &, int64_t receivedBodySize)
Definition: HttpReply.cc:512
virtual void reset()
Definition: HttpReply.cc:58
time_t expires
Definition: HttpReply.h:48
void removeIrrelevantContentLength()
Some response status codes prohibit sending Content-Length (RFC 7230 section 3.3.2).
Definition: HttpReply.cc:667
virtual void configureContentLengthInterpreter(Http::ContentLengthInterpreter &)
configures the interpreter as needed
Definition: HttpReply.cc:457
HttpHdrContRange * content_range
parsed Content-Range; nil for non-206 responses!
Definition: HttpReply.h:156
String removeStaleWarningValues(const String &value)
Definition: HttpReply.cc:614
virtual bool inheritProperties(const Http::Message *)
Definition: HttpReply.cc:584
HttpReply * clone() const
Definition: HttpReply.cc:568

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors