[4.1] 5fa4368 Make range processing log real messages rather than line numbers
Poul-Henning Kamp
phk at FreeBSD.org
Fri Sep 4 15:54:55 CEST 2015
commit 5fa4368e946a3ef469cddb2b879765b03791cf2c
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Aug 25 09:33:14 2015 +0000
Make range processing log real messages rather than line numbers
diff --git a/bin/varnishd/cache/cache_range.c b/bin/varnishd/cache/cache_range.c
index 1b4cbb0..729533e 100644
--- a/bin/varnishd/cache/cache_range.c
+++ b/bin/varnishd/cache/cache_range.c
@@ -85,14 +85,14 @@ vrg_range_bytes(struct req *req, enum vdp_action act, void **priv,
/*--------------------------------------------------------------------*/
-static int
+static const char *
vrg_dorange(struct req *req, const char *r)
{
ssize_t low, high, has_low, has_high, t;
struct vrg_priv *vrg_priv;
if (strncasecmp(r, "bytes=", 6))
- return (__LINE__);
+ return ("Not Bytes");
r += 6;
/* The low end of range */
@@ -103,11 +103,11 @@ vrg_dorange(struct req *req, const char *r)
low *= 10;
low += *r++ - '0';
if (low < t)
- return (__LINE__);
+ return ("Low number too big");
}
if (*r++ != '-')
- return (__LINE__);
+ return ("Missing hyphen");
/* The high end of range */
has_high = high = 0;
@@ -117,20 +117,20 @@ vrg_dorange(struct req *req, const char *r)
high *= 10;
high += *r++ - '0';
if (high < t)
- return (__LINE__);
+ return ("High number too big");
}
if (*r != '\0')
- return (__LINE__);
+ return ("Trailing stuff");
if (has_high + has_low == 0)
- return (__LINE__);
+ return ("Neither high nor low");
if (!has_low) {
if (req->resp_len < 0)
- return (0); // Allow 200 response
+ return (NULL); // Allow 200 response
if (high == 0)
- return (__LINE__);
+ return ("No low, high is zero");
low = req->resp_len - high;
if (low < 0)
low = 0;
@@ -138,7 +138,7 @@ vrg_dorange(struct req *req, const char *r)
} else if (req->resp_len >= 0 && (high >= req->resp_len || !has_high))
high = req->resp_len - 1;
else if (!has_high)
- return (0); // Allow 200 response
+ return (NULL); // Allow 200 response
/*
* else (bo != NULL) {
* We assume that the client knows what it's doing and trust
@@ -147,10 +147,10 @@ vrg_dorange(struct req *req, const char *r)
*/
if (high < low)
- return (__LINE__);
+ return ("high smaller than low");
if (req->resp_len >= 0 && low >= req->resp_len)
- return (__LINE__);
+ return ("low range beyond object");
if (req->resp_len >= 0)
http_PrintfHeader(req->resp, "Content-Range: bytes %jd-%jd/%jd",
@@ -162,7 +162,7 @@ vrg_dorange(struct req *req, const char *r)
vrg_priv = WS_Alloc(req->ws, sizeof *vrg_priv);
if (vrg_priv == NULL)
- return (-1);
+ return ("WS too small");
XXXAN(vrg_priv);
INIT_OBJ(vrg_priv, VRG_PRIV_MAGIC);
@@ -171,13 +171,13 @@ vrg_dorange(struct req *req, const char *r)
vrg_priv->range_high = high + 1;
VDP_push(req, vrg_range_bytes, vrg_priv, 1);
http_PutResponse(req->resp, "HTTP/1.1", 206, NULL);
- return (0);
+ return (NULL);
}
void
VRG_dorange(struct req *req, const char *r)
{
- int i;
+ const char *err;
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
CHECK_OBJ_NOTNULL(req->objcore, OBJCORE_MAGIC);
@@ -185,9 +185,9 @@ VRG_dorange(struct req *req, const char *r)
/* We must snapshot the length if we're streaming from the backend */
- i = vrg_dorange(req, r);
- if (i > 0) {
- VSLb(req->vsl, SLT_Debug, "RANGE_FAIL line %d", i);
+ err = vrg_dorange(req, r);
+ if (err != NULL) {
+ VSLb(req->vsl, SLT_Debug, "RANGE_FAIL %s", err);
http_Unset(req->resp, H_Content_Length);
if (req->resp_len >= 0)
http_PrintfHeader(req->resp,
More information about the varnish-commit
mailing list