[master] 16c934f Rename HTC_* to HTTP1_*
Poul-Henning Kamp
phk at varnish-cache.org
Mon Jan 28 10:59:49 CET 2013
commit 16c934f5b881954b840a05161c6f008504eeec66
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Jan 28 09:59:16 2013 +0000
Rename HTC_* to HTTP1_*
Add a read-method to http_conn, and use it from all VFPs, which
should be protocol agnostic.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 5237991..f5ebf7a 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -112,6 +112,7 @@ struct busyobj;
struct cli;
struct cli_proto;
struct director;
+struct http_conn;
struct iovec;
struct mempool;
struct objcore;
@@ -207,11 +208,18 @@ struct http {
/*--------------------------------------------------------------------
* HTTP Protocol connection structure
+ *
+ * This is the protocol independent object for a HTTP connection, used
+ * both for backend and client sides.
+ *
*/
+typedef ssize_t htc_read(struct http_conn *, void *, size_t);
+
struct http_conn {
unsigned magic;
#define HTTP_CONN_MAGIC 0x3e19edd1
+ htc_read *read;
int fd;
struct vsl_log *vsl;
@@ -876,21 +884,21 @@ void http_VSLH(const struct http *hp, unsigned hdr);
/* cache_http1_proto.c */
enum htc_status_e {
- HTC_ALL_WHITESPACE = -3,
- HTC_OVERFLOW = -2,
- HTC_ERROR_EOF = -1,
- HTC_NEED_MORE = 0,
- HTC_COMPLETE = 1
+ HTTP1_ALL_WHITESPACE = -3,
+ HTTP1_OVERFLOW = -2,
+ HTTP1_ERROR_EOF = -1,
+ HTTP1_NEED_MORE = 0,
+ HTTP1_COMPLETE = 1
};
-void HTC_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *,
+void HTTP1_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *,
unsigned maxbytes, unsigned maxhdr);
-enum htc_status_e HTC_Reinit(struct http_conn *htc);
-enum htc_status_e HTC_Rx(struct http_conn *htc);
-ssize_t HTC_Read(struct http_conn *htc, void *d, size_t len);
-enum htc_status_e HTC_Complete(struct http_conn *htc);
-uint16_t HTC_DissectRequest(struct req *);
-uint16_t HTC_DissectResponse(struct http *sp, const struct http_conn *htc);
+enum htc_status_e HTTP1_Reinit(struct http_conn *htc);
+enum htc_status_e HTTP1_Rx(struct http_conn *htc);
+ssize_t HTTP1_Read(struct http_conn *htc, void *d, size_t len);
+enum htc_status_e HTTP1_Complete(struct http_conn *htc);
+uint16_t HTTP1_DissectRequest(struct req *);
+uint16_t HTTP1_DissectResponse(struct http *sp, const struct http_conn *htc);
#define HTTPH(a, b, c) extern char b[];
#include "tbl/http_headers.h"
diff --git a/bin/varnishd/cache/cache_esi_fetch.c b/bin/varnishd/cache/cache_esi_fetch.c
index 0031a3c..d46d7c1 100644
--- a/bin/varnishd/cache/cache_esi_fetch.c
+++ b/bin/varnishd/cache/cache_esi_fetch.c
@@ -64,8 +64,7 @@ struct vef_priv {
*/
static ssize_t
-vef_read(struct http_conn *htc, void *buf, ssize_t buflen,
- ssize_t bytes)
+vef_read(struct http_conn *htc, void *buf, ssize_t buflen, ssize_t bytes)
{
ssize_t d;
@@ -76,7 +75,7 @@ vef_read(struct http_conn *htc, void *buf, ssize_t buflen,
if (d < bytes)
bytes = d;
}
- return (HTC_Read(htc, buf, bytes));
+ return (htc->read(htc, buf, bytes));
}
/*---------------------------------------------------------------------
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 2713571..27c97c0 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -166,7 +166,7 @@ vfp_nop_bytes(void *priv, struct http_conn *htc, ssize_t bytes)
l = st->space - st->len;
if (l > bytes)
l = bytes;
- wl = HTC_Read(htc, st->ptr + st->len, l);
+ wl = HTTP1_Read(htc, st->ptr + st->len, l);
if (wl <= 0)
return (wl);
st->len += wl;
@@ -307,7 +307,7 @@ fetch_chunked(struct busyobj *bo, struct http_conn *htc)
do {
/* Skip leading whitespace */
do {
- if (HTC_Read(htc, buf, 1) <= 0)
+ if (HTTP1_Read(htc, buf, 1) <= 0)
return (FetchError(bo, "chunked read err"));
} while (vct_islws(buf[0]));
@@ -317,7 +317,7 @@ fetch_chunked(struct busyobj *bo, struct http_conn *htc)
/* Collect hex digits, skipping leading zeros */
for (u = 1; u < sizeof buf; u++) {
do {
- if (HTC_Read(htc, buf + u, 1) <= 0)
+ if (HTTP1_Read(htc, buf + u, 1) <= 0)
return (FetchError(bo,
"chunked read err"));
} while (u == 1 && buf[0] == '0' && buf[u] == '0');
@@ -330,7 +330,7 @@ fetch_chunked(struct busyobj *bo, struct http_conn *htc)
/* Skip trailing white space */
while(vct_islws(buf[u]) && buf[u] != '\n')
- if (HTC_Read(htc, buf + u, 1) <= 0)
+ if (HTTP1_Read(htc, buf + u, 1) <= 0)
return (FetchError(bo, "chunked read err"));
if (buf[u] != '\n')
@@ -344,10 +344,10 @@ fetch_chunked(struct busyobj *bo, struct http_conn *htc)
if (cl > 0 && VFP_Bytes(bo, htc, cl) <= 0)
return (FetchError(bo, "chunked read err"));
- i = HTC_Read(htc, buf, 1);
+ i = HTTP1_Read(htc, buf, 1);
if (i <= 0)
return (FetchError(bo, "chunked read err"));
- if (buf[0] == '\r' && HTC_Read( htc, buf, 1) <= 0)
+ if (buf[0] == '\r' && HTTP1_Read( htc, buf, 1) <= 0)
return (FetchError(bo, "chunked read err"));
if (buf[0] != '\n')
return (FetchError(bo,"chunked tail no NL"));
@@ -469,7 +469,7 @@ FetchHdr(struct req *req, int need_host_hdr, int sendbody)
/* Receive response */
- HTC_Init(htc, bo->ws, vc->fd, vc->vsl,
+ HTTP1_Init(htc, bo->ws, vc->fd, vc->vsl,
cache_param->http_resp_size,
cache_param->http_resp_hdr_len);
@@ -477,8 +477,8 @@ FetchHdr(struct req *req, int need_host_hdr, int sendbody)
first = 1;
do {
- hs = HTC_Rx(htc);
- if (hs == HTC_OVERFLOW) {
+ hs = HTTP1_Rx(htc);
+ if (hs == HTTP1_OVERFLOW) {
VSLb(req->vsl, SLT_FetchError,
"http %sread error: overflow",
first ? "first " : "");
@@ -486,7 +486,7 @@ FetchHdr(struct req *req, int need_host_hdr, int sendbody)
/* XXX: other cleanup ? */
return (-1);
}
- if (hs == HTC_ERROR_EOF) {
+ if (hs == HTTP1_ERROR_EOF) {
VSLb(req->vsl, SLT_FetchError,
"http %sread error: EOF",
first ? "first " : "");
@@ -500,11 +500,11 @@ FetchHdr(struct req *req, int need_host_hdr, int sendbody)
VTCP_set_read_timeout(vc->fd,
vc->between_bytes_timeout);
}
- } while (hs != HTC_COMPLETE);
+ } while (hs != HTTP1_COMPLETE);
hp = bo->beresp;
- if (HTC_DissectResponse(hp, htc)) {
+ if (HTTP1_DissectResponse(hp, htc)) {
VSLb(req->vsl, SLT_FetchError, "http format error");
VDI_CloseFd(&bo->vbc);
/* XXX: other cleanup ? */
diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c
index 9410b26..425e344 100644
--- a/bin/varnishd/cache/cache_gzip.c
+++ b/bin/varnishd/cache/cache_gzip.c
@@ -471,7 +471,7 @@ vfp_gunzip_bytes(void *priv, struct http_conn *htc, ssize_t bytes)
l = vg->m_sz;
if (l > bytes)
l = bytes;
- wl = HTC_Read(htc, vg->m_buf, l);
+ wl = htc->read(htc, vg->m_buf, l);
if (wl <= 0)
return (wl);
VGZ_Ibuf(vg, vg->m_buf, wl);
@@ -551,7 +551,7 @@ vfp_gzip_bytes(void *priv, struct http_conn *htc, ssize_t bytes)
l = vg->m_sz;
if (l > bytes)
l = bytes;
- wl = HTC_Read(htc, vg->m_buf, l);
+ wl = htc->read(htc, vg->m_buf, l);
if (wl <= 0)
return (wl);
VGZ_Ibuf(vg, vg->m_buf, wl);
@@ -643,7 +643,7 @@ vfp_testgzip_bytes(void *priv, struct http_conn *htc, ssize_t bytes)
l = st->space - st->len;
if (l > bytes)
l = bytes;
- wl = HTC_Read(htc, st->ptr + st->len, l);
+ wl = htc->read(htc, st->ptr + st->len, l);
if (wl <= 0)
return (wl);
bytes -= wl;
diff --git a/bin/varnishd/cache/cache_http1_fsm.c b/bin/varnishd/cache/cache_http1_fsm.c
index 07fd810..2f99c6e 100644
--- a/bin/varnishd/cache/cache_http1_fsm.c
+++ b/bin/varnishd/cache/cache_http1_fsm.c
@@ -114,20 +114,20 @@ http1_wait(struct sess *sp, struct worker *wrk, struct req *req)
assert(j >= 0);
now = VTIM_real();
if (j != 0)
- hs = HTC_Rx(req->htc);
+ hs = HTTP1_Rx(req->htc);
else
- hs = HTC_Complete(req->htc);
- if (hs == HTC_COMPLETE) {
+ hs = HTTP1_Complete(req->htc);
+ if (hs == HTTP1_COMPLETE) {
/* Got it, run with it */
req->t_req = now;
return (REQ_FSM_MORE);
- } else if (hs == HTC_ERROR_EOF) {
+ } else if (hs == HTTP1_ERROR_EOF) {
why = SC_REM_CLOSE;
break;
- } else if (hs == HTC_OVERFLOW) {
+ } else if (hs == HTTP1_OVERFLOW) {
why = SC_RX_OVERFLOW;
break;
- } else if (hs == HTC_ALL_WHITESPACE) {
+ } else if (hs == HTTP1_ALL_WHITESPACE) {
/* Nothing but whitespace */
when = sp->t_idle + cache_param->timeout_idle;
if (when < now) {
@@ -224,7 +224,7 @@ http1_cleanup(struct sess *sp, struct worker *wrk, struct req *req)
WS_Reset(req->ws, NULL);
WS_Reset(wrk->aws, NULL);
- if (HTC_Reinit(req->htc) == HTC_COMPLETE) {
+ if (HTTP1_Reinit(req->htc) == HTTP1_COMPLETE) {
req->t_req = sp->t_idle;
wrk->stats.sess_pipeline++;
return (SESS_DONE_RET_START);
@@ -260,7 +260,7 @@ http1_dissect(struct worker *wrk, struct req *req)
wrk->vcl = NULL;
HTTP_Setup(req->http, req->ws, req->vsl, HTTP_Method);
- req->err_code = HTC_DissectRequest(req);
+ req->err_code = HTTP1_DissectRequest(req);
/* If we could not even parse the request, just close */
if (req->err_code == 400) {
@@ -330,7 +330,7 @@ HTTP1_Session(struct worker *wrk, struct req *req)
}
if (sp->sess_step == S_STP_NEWREQ) {
- HTC_Init(req->htc, req->ws, sp->fd, req->vsl,
+ HTTP1_Init(req->htc, req->ws, sp->fd, req->vsl,
cache_param->http_req_size,
cache_param->http_req_hdr_len);
}
@@ -442,7 +442,7 @@ http1_iter_req_body(struct req *req, struct http1_r_b_s *rbs, void *buf,
req->req_body_status = REQ_BODY_DONE;
return (0);
}
- len = HTC_Read(req->htc, buf, len);
+ len = HTTP1_Read(req->htc, buf, len);
if (len <= 0) {
req->req_body_status = REQ_BODY_FAIL;
return (-1);
diff --git a/bin/varnishd/cache/cache_http1_proto.c b/bin/varnishd/cache/cache_http1_proto.c
index 42c2269..8caa135 100644
--- a/bin/varnishd/cache/cache_http1_proto.c
+++ b/bin/varnishd/cache/cache_http1_proto.c
@@ -46,11 +46,10 @@
#include "vct.h"
-
/*--------------------------------------------------------------------*/
void
-HTC_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *vsl,
+HTTP1_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *vsl,
unsigned maxbytes, unsigned maxhdr)
{
@@ -60,6 +59,7 @@ HTC_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *vsl,
htc->vsl = vsl;
htc->maxbytes = maxbytes;
htc->maxhdr = maxhdr;
+ htc->read = HTTP1_Read;
(void)WS_Reserve(htc->ws, htc->maxbytes);
htc->rxbuf.b = ws->f;
@@ -76,7 +76,7 @@ HTC_Init(struct http_conn *htc, struct ws *ws, int fd, struct vsl_log *vsl,
*/
enum htc_status_e
-HTC_Reinit(struct http_conn *htc)
+HTTP1_Reinit(struct http_conn *htc)
{
unsigned l;
@@ -92,7 +92,7 @@ HTC_Reinit(struct http_conn *htc)
htc->pipeline.e = NULL;
}
*htc->rxbuf.e = '\0';
- return (HTC_Complete(htc));
+ return (HTTP1_Complete(htc));
}
/*--------------------------------------------------------------------
@@ -101,7 +101,7 @@ HTC_Reinit(struct http_conn *htc)
*/
enum htc_status_e
-HTC_Complete(struct http_conn *htc)
+HTTP1_Complete(struct http_conn *htc)
{
int i;
const char *p;
@@ -120,12 +120,12 @@ HTC_Complete(struct http_conn *htc)
/* All white space */
t->e = t->b;
*t->e = '\0';
- return (HTC_ALL_WHITESPACE);
+ return (HTTP1_ALL_WHITESPACE);
}
while (1) {
p = strchr(p, '\n');
if (p == NULL)
- return (HTC_NEED_MORE);
+ return (HTTP1_NEED_MORE);
p++;
if (*p == '\r')
p++;
@@ -142,7 +142,7 @@ HTC_Complete(struct http_conn *htc)
htc->pipeline.e = htc->rxbuf.e;
htc->rxbuf.e = htc->pipeline.b;
}
- return (HTC_COMPLETE);
+ return (HTTP1_COMPLETE);
}
/*--------------------------------------------------------------------
@@ -150,7 +150,7 @@ HTC_Complete(struct http_conn *htc)
*/
enum htc_status_e
-HTC_Rx(struct http_conn *htc)
+HTTP1_Rx(struct http_conn *htc)
{
int i;
@@ -159,7 +159,7 @@ HTC_Rx(struct http_conn *htc)
i = (htc->ws->r - htc->rxbuf.e) - 1; /* space for NUL */
if (i <= 0) {
WS_ReleaseP(htc->ws, htc->rxbuf.b);
- return (HTC_OVERFLOW);
+ return (HTTP1_OVERFLOW);
}
i = read(htc->fd, htc->rxbuf.e, i);
if (i <= 0) {
@@ -168,11 +168,11 @@ HTC_Rx(struct http_conn *htc)
* so consequently an EOF can not be OK
*/
WS_ReleaseP(htc->ws, htc->rxbuf.b);
- return (HTC_ERROR_EOF);
+ return (HTTP1_ERROR_EOF);
}
htc->rxbuf.e += i;
*htc->rxbuf.e = '\0';
- return (HTC_Complete(htc));
+ return (HTTP1_Complete(htc));
}
/*--------------------------------------------------------------------
@@ -180,7 +180,7 @@ HTC_Rx(struct http_conn *htc)
*/
ssize_t
-HTC_Read(struct http_conn *htc, void *d, size_t len)
+HTTP1_Read(struct http_conn *htc, void *d, size_t len)
{
size_t l;
unsigned char *p;
@@ -390,7 +390,7 @@ htc_proto_ver(struct http *hp)
/*--------------------------------------------------------------------*/
uint16_t
-HTC_DissectRequest(struct req *req)
+HTTP1_DissectRequest(struct req *req)
{
struct http_conn *htc;
struct http *hp;
@@ -413,7 +413,7 @@ HTC_DissectRequest(struct req *req)
/*--------------------------------------------------------------------*/
uint16_t
-HTC_DissectResponse(struct http *hp, const struct http_conn *htc)
+HTTP1_DissectResponse(struct http *hp, const struct http_conn *htc)
{
int j;
uint16_t retval = 0;
More information about the varnish-commit
mailing list