HttpReply.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2022 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
17
18/* Sync changes here with HttpReply.cc */
19
21
22class HttpHdrSc;
23
25{
27
28public:
30
31 HttpReply();
32 ~HttpReply();
33
34 virtual void reset();
35
36 /* Http::Message API */
37 virtual bool sanityCheckStartLine(const char *buf, const size_t hdr_len, Http::StatusCode *error);
38
40 time_t date;
41
43
44 time_t expires;
45
47
49
51 const HttpHdrContRange *contentRange() const;
52
53 short int keep_alive;
54
57
63
64public:
65 virtual int httpMsgParseError();
66
67 virtual bool expectingBody(const HttpRequestMethod&, int64_t&) const;
68
69 virtual bool inheritProperties(const Http::Message *);
70
73 Pointer recreateOnNotModified(const HttpReply &reply304) const;
74
76 void setHeaders(Http::StatusCode status,
77 const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires);
78
80 MemBuf *pack() const;
81
84
87
88 void redirect(Http::StatusCode, const char *);
89
90 int64_t bodySize(const HttpRequestMethod&) const;
91
95 bool receivedBodyTooLarge(HttpRequest&, int64_t receivedBodySize);
96
101
102 int validatorsMatch (HttpReply const *other) const;
103
109
113 HttpReply *clone() const;
114
115 virtual void hdrCacheInit();
116
119 bool olderThan(const HttpReply *them) const;
120
123
126 bool parseHeader(Http1::Parser &hp);
127
128private:
130 void init();
131
132 void clean();
133
134 void hdrCacheClean();
135
136 void packInto(MemBuf &) const;
137
138 /* ez-routines */
140 MemBuf *packed304Reply() const;
141
142 /* header manipulation */
143 time_t hdrExpirationTime();
144
149
150 mutable int64_t bodySizeMax;
153
154protected:
155 virtual void packFirstLineInto(Packable * p, bool) const { sline.packInto(p); }
156
157 virtual bool parseFirstLine(const char *start, const char *end);
158};
159
160#endif /* SQUID_HTTPREPLY_H */
161
void httpReplyInitModule(void)
void error(char *format,...)
Http::StatusLine sline
Definition: HttpReply.h:56
String content_type
Definition: HttpReply.h:46
HttpReply * clone() const
Definition: HttpReply.cc:572
void hdrCacheClean()
Definition: HttpReply.cc:350
virtual int httpMsgParseError()
Definition: HttpReply.cc:474
MemBuf * pack() const
Definition: HttpReply.cc:110
virtual bool expectingBody(const HttpRequestMethod &, int64_t &) const
Definition: HttpReply.cc:487
time_t hdrExpirationTime()
Definition: HttpReply.cc:280
time_t last_modified
Definition: HttpReply.h:42
HttpHdrContRange * content_range
parsed Content-Range; nil for non-206 responses!
Definition: HttpReply.h:152
~HttpReply()
Definition: HttpReply.cc:42
const HttpHdrContRange * contentRange() const
Definition: HttpReply.cc:342
HttpReplyPointer make304() const
Definition: HttpReply.cc:127
bool olderThan(const HttpReply *them) const
Definition: HttpReply.cc:599
virtual bool inheritProperties(const Http::Message *)
Definition: HttpReply.cc:588
bool parseHeader(Http1::Parser &hp)
parses reply header using Parser
Definition: HttpReply.cc:466
HttpHdrSc * surrogate_control
Definition: HttpReply.h:48
void setHeaders(Http::StatusCode status, const char *reason, const char *ctype, int64_t clen, time_t lmt, time_t expires)
Definition: HttpReply.cc:167
void init()
Definition: HttpReply.cc:49
MEMPROXY_CLASS(HttpReply)
RefCount< HttpReply > Pointer
Definition: HttpReply.h:29
virtual bool sanityCheckStartLine(const char *buf, const size_t hdr_len, Http::StatusCode *error)
Definition: HttpReply.cc:399
virtual void packFirstLineInto(Packable *p, bool) const
Definition: HttpReply.h:155
void calcMaxBodySize(HttpRequest &request) const
Definition: HttpReply.cc:545
int64_t bodySize(const HttpRequestMethod &) const
Definition: HttpReply.cc:374
MemBuf * packed304Reply() const
Definition: HttpReply.cc:156
HttpBody body
Definition: HttpReply.h:58
int64_t bodySizeMax
Definition: HttpReply.h:150
void removeIrrelevantContentLength()
Some response status codes prohibit sending Content-Length (RFC 7230 section 3.3.2).
Definition: HttpReply.cc:607
bool receivedBodyTooLarge(HttpRequest &, int64_t receivedBodySize)
Definition: HttpReply.cc:516
void redirect(Http::StatusCode, const char *)
Definition: HttpReply.cc:202
int validatorsMatch(HttpReply const *other) const
Definition: HttpReply.cc:220
void packHeadersUsingSlowPacker(Packable &p) const
same as packHeadersUsingFastPacker() but assumes that p cannot quickly process small additions
Definition: HttpReply.cc:93
virtual void reset()
Definition: HttpReply.cc:57
bool do_clean
Definition: HttpReply.h:62
void packInto(MemBuf &) const
Definition: HttpReply.cc:102
void packHeadersUsingFastPacker(Packable &p) const
Definition: HttpReply.cc:85
virtual void hdrCacheInit()
Definition: HttpReply.cc:318
Pointer recreateOnNotModified(const HttpReply &reply304) const
Definition: HttpReply.cc:262
void clean()
Definition: HttpReply.cc:71
bool expectedBodyTooLarge(HttpRequest &request)
Definition: HttpReply.cc:524
time_t date
Definition: HttpReply.h:40
virtual void configureContentLengthInterpreter(Http::ContentLengthInterpreter &)
configures the interpreter as needed
Definition: HttpReply.cc:460
static HttpReplyPointer MakeConnectionEstablished()
construct and return an HTTP/200 (Connection Established) response
Definition: HttpReply.cc:119
String protoPrefix
Definition: HttpReply.h:60
short int keep_alive
Definition: HttpReply.h:53
time_t expires
Definition: HttpReply.h:44
virtual bool parseFirstLine(const char *start, const char *end)
Definition: HttpReply.cc:454
common parts of HttpRequest and HttpReply
Definition: Message.h:26
void packInto(Packable *) const
pack fields into a Packable object
Definition: StatusLine.cc:50
Definition: MemBuf.h:24
StatusCode
Definition: StatusCode.h:20
struct _request * request(char *urlin)
Definition: tcp-banger2.c:291

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors