[master] 56ce6e3 More VRT sp->req work

Poul-Henning Kamp phk at varnish-cache.org
Mon Jun 18 10:49:12 CEST 2012


commit 56ce6e353960411f281a5114993ef2e7f51cf3dd
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Jun 18 08:48:53 2012 +0000

    More VRT sp->req work

diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index f1b1f3c..5675311 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -54,17 +54,16 @@ const void * const vrt_magic_string_end = &vrt_magic_string_end;
 /*--------------------------------------------------------------------*/
 
 void
-VRT_error(const struct sess *sp, unsigned code, const char *reason)
+VRT_error(struct req *req, unsigned code, const char *reason)
 {
 
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	VSLb(sp->req->vsl, SLT_Debug, "VCL_error(%u, %s)", code, reason ?
-	    reason : "(null)");
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+	VSLb(req->vsl, SLT_Debug, "VCL_error(%u, %s)", code,
+	    reason ?  reason : "(null)");
 	if (code < 100 || code > 999)
 		code = 503;
-	sp->req->err_code = (uint16_t)code;
-	sp->req->err_reason =
-	    reason ? reason : http_StatusMessage(sp->req->err_code);
+	req->err_code = (uint16_t)code;
+	req->err_reason = reason ? reason : http_StatusMessage(req->err_code);
 }
 
 /*--------------------------------------------------------------------*/
@@ -196,18 +195,18 @@ VRT_String(struct ws *ws, const char *h, const char *p, va_list ap)
 }
 
 /*--------------------------------------------------------------------
- * Build a string on the worker threads workspace
+ * Build a string on the request workspace
  */
 
 const char *
-VRT_WrkString(const struct sess *sp, const char *p, ...)
+VRT_ReqString(struct req *req, const char *p, ...)
 {
 	va_list ap;
 	char *b;
 
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	va_start(ap, p);
-	b = VRT_String(sp->wrk->aws, NULL, p, ap);
+	b = VRT_String(req->ws, NULL, p, ap);
 	va_end(ap);
 	return (b);
 }
@@ -287,7 +286,7 @@ VRT_r_now(const struct req *req)
 /*--------------------------------------------------------------------*/
 
 char *
-VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa)
+VRT_IP_string(struct req *req, const struct sockaddr_storage *sa)
 {
 	char *p;
 	const struct sockaddr_in *si4;
@@ -295,6 +294,7 @@ VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa)
 	const void *addr;
 	int len;
 
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	switch (sa->ss_family) {
 	case AF_INET:
 		len = INET_ADDRSTRLEN;
@@ -310,61 +310,65 @@ VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa)
 		INCOMPL();
 	}
 	XXXAN(len);
-	AN(p = WS_Alloc(sp->req->http->ws, len));
+	AN(p = WS_Alloc(req->http->ws, len));
 	AN(inet_ntop(sa->ss_family, addr, p, len));
 	return (p);
 }
 
 char *
-VRT_int_string(const struct sess *sp, int num)
+VRT_int_string(struct req *req, int num)
 {
 	char *p;
 	int size;
 
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	size = snprintf(NULL, 0, "%d", num) + 1;
-	AN(p = WS_Alloc(sp->req->http->ws, size));
+	AN(p = WS_Alloc(req->http->ws, size));
 	assert(snprintf(p, size, "%d", num) < size);
 	return (p);
 }
 
 char *
-VRT_double_string(const struct sess *sp, double num)
+VRT_double_string(struct req *req, double num)
 {
 	char *p;
 	int size;
 
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	size = snprintf(NULL, 0, "%.3f", num) + 1;
-	AN(p = WS_Alloc(sp->req->http->ws, size));
+	AN(p = WS_Alloc(req->http->ws, size));
 	assert(snprintf(p, size, "%.3f", num) < size);
 	return (p);
 }
 
 char *
-VRT_time_string(const struct sess *sp, double t)
+VRT_time_string(struct req *req, double t)
 {
 	char *p;
 
-	AN(p = WS_Alloc(sp->req->http->ws, VTIM_FORMAT_SIZE));
-	VTIM_format(t, p);
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+	p = WS_Alloc(req->http->ws, VTIM_FORMAT_SIZE);
+	if (p != NULL)
+		VTIM_format(t, p);
 	return (p);
 }
 
 const char *
-VRT_backend_string(const struct sess *sp, const struct director *d)
+VRT_backend_string(const struct req *req, const struct director *d)
 {
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	if (d == NULL)
-		d = sp->req->director;
+		d = req->director;
 	if (d == NULL)
 		return (NULL);
 	return (d->vcl_name);
 }
 
 const char *
-VRT_bool_string(const struct sess *sp, unsigned val)
+VRT_bool_string(const struct req *req, unsigned val)
 {
 
-	(void)sp;
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 	return (val ? "true" : "false");
 }
 
@@ -395,16 +399,16 @@ VRT_panic(const struct sess *sp, const char *str, ...)
 /*--------------------------------------------------------------------*/
 
 void
-VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
+VRT_synth_page(struct req *req, unsigned flags, const char *str, ...)
 {
 	va_list ap;
 	const char *p;
 	struct vsb *vsb;
 
 	(void)flags;
-	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
-	CHECK_OBJ_NOTNULL(sp->req->obj, OBJECT_MAGIC);
-	vsb = SMS_Makesynth(sp->req->obj);
+	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+	CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
+	vsb = SMS_Makesynth(req->obj);
 	AN(vsb);
 
 	VSB_cat(vsb, str);
@@ -417,10 +421,9 @@ VRT_synth_page(const struct sess *sp, unsigned flags, const char *str, ...)
 		p = va_arg(ap, const char *);
 	}
 	va_end(ap);
-	SMS_Finish(sp->req->obj);
-	http_Unset(sp->req->obj->http, H_Content_Length);
-	http_PrintfHeader(sp->req->obj->http,
-	    "Content-Length: %zd", sp->req->obj->len);
+	SMS_Finish(req->obj);
+	http_Unset(req->obj->http, H_Content_Length);
+	http_PrintfHeader(req->obj->http, "Content-Length: %zd", req->obj->len);
 }
 
 /*--------------------------------------------------------------------*/
diff --git a/include/vrt.h b/include/vrt.h
index dc5ba13..a6a2642 100644
--- a/include/vrt.h
+++ b/include/vrt.h
@@ -157,7 +157,7 @@ void VRT_purge(const struct sess *sp, double ttl, double grace);
 
 void VRT_count(struct req *, unsigned);
 int VRT_rewrite(const char *, const char *);
-void VRT_error(const struct sess *, unsigned, const char *);
+void VRT_error(struct req *, unsigned, const char *);
 int VRT_switch_config(const char *);
 
 enum gethdr_e { HDR_REQ, HDR_RESP, HDR_OBJ, HDR_BEREQ, HDR_BERESP };
@@ -176,7 +176,7 @@ void VRT_ESI(const struct sess *sp);
 void VRT_Rollback(const struct sess *sp);
 
 /* Synthetic pages */
-void VRT_synth_page(const struct sess *sp, unsigned flags, const char *, ...);
+void VRT_synth_page(struct req *sp, unsigned flags, const char *, ...);
 
 /* Backend related */
 void VRT_init_dir(struct cli *, struct director **, const char *name,
@@ -210,12 +210,12 @@ int VRT_Stv(const char *nm);
 
 /* Convert things to string */
 
-char *VRT_IP_string(const struct sess *sp, const struct sockaddr_storage *sa);
-char *VRT_int_string(const struct sess *sp, int);
-char *VRT_double_string(const struct sess *sp, double);
-char *VRT_time_string(const struct sess *sp, double);
-const char *VRT_bool_string(const struct sess *sp, unsigned);
-const char *VRT_backend_string(const struct sess *sp, const struct director *d);
+char *VRT_IP_string(struct req *, const struct sockaddr_storage *sa);
+char *VRT_int_string(struct req *, int);
+char *VRT_double_string(struct req *, double);
+char *VRT_time_string(struct req *, double);
+const char *VRT_bool_string(const struct req *, unsigned);
+const char *VRT_backend_string(const struct req *, const struct director *d);
 
 #define VRT_done(req, hand)			\
 	do {					\
@@ -223,4 +223,4 @@ const char *VRT_backend_string(const struct sess *sp, const struct director *d);
 		return (1);			\
 	} while (0)
 
-const char *VRT_WrkString(const struct sess *sp, const char *p, ...);
+const char *VRT_ReqString(struct req *, const char *p, ...);
diff --git a/lib/libvcl/vcc_action.c b/lib/libvcl/vcc_action.c
index 31a940b..31b2bad 100644
--- a/lib/libvcl/vcc_action.c
+++ b/lib/libvcl/vcc_action.c
@@ -57,7 +57,7 @@ parse_error(struct vcc *tl)
 {
 
 	vcc_NextToken(tl);
-	Fb(tl, 1, "VRT_error(sp,\n");
+	Fb(tl, 1, "VRT_error(req,\n");
 	if (tl->t->tok == '(') {
 		vcc_NextToken(tl);
 		vcc_Expr(tl, INT);
@@ -303,7 +303,7 @@ parse_synthetic(struct vcc *tl)
 {
 	vcc_NextToken(tl);
 
-	Fb(tl, 1, "VRT_synth_page(sp, 0, ");
+	Fb(tl, 1, "VRT_synth_page(req, 0, ");
 	vcc_Expr(tl, STRING_LIST);
 	ERRCHK(tl);
 	Fb(tl, 0, ");\n");
diff --git a/lib/libvcl/vcc_expr.c b/lib/libvcl/vcc_expr.c
index 19a455c..d964ff1 100644
--- a/lib/libvcl/vcc_expr.c
+++ b/lib/libvcl/vcc_expr.c
@@ -423,15 +423,15 @@ vcc_expr_tostring(struct expr **e, enum var_type fmt)
 
 	p = NULL;
 	switch((*e)->fmt) {
-	case BACKEND:	p = "VRT_backend_string(sp, \v1)"; break;
-	case BOOL:	p = "VRT_bool_string(sp, \v1)"; break;
-	case DURATION:	p = "VRT_double_string(sp, \v1)"; break;
+	case BACKEND:	p = "VRT_backend_string(req, \v1)"; break;
+	case BOOL:	p = "VRT_bool_string(req, \v1)"; break;
+	case DURATION:	p = "VRT_double_string(req, \v1)"; break;
 			 /* XXX: should DURATION insist on "s" suffix ? */
-	case INT:	p = "VRT_int_string(sp, \v1)"; break;
-	case IP:	p = "VRT_IP_string(sp, \v1)"; break;
-	case BYTES:	p = "VRT_double_string(sp, \v1)"; break; /* XXX */
-	case REAL:	p = "VRT_double_string(sp, \v1)"; break;
-	case TIME:	p = "VRT_time_string(sp, \v1)"; break;
+	case INT:	p = "VRT_int_string(req, \v1)"; break;
+	case IP:	p = "VRT_IP_string(req, \v1)"; break;
+	case BYTES:	p = "VRT_double_string(req, \v1)"; break; /* XXX */
+	case REAL:	p = "VRT_double_string(req, \v1)"; break;
+	case TIME:	p = "VRT_time_string(req, \v1)"; break;
 	default:	break;
 	}
 	if (p != NULL) {
@@ -819,7 +819,7 @@ vcc_expr_add(struct vcc *tl, struct expr **e, enum var_type fmt)
 	}
 	if (fmt != STRING_LIST && (*e)->fmt == STRING_LIST)
 		*e = vcc_expr_edit(STRING,
-		    "\v+VRT_WrkString(sp,\n\v1,\nvrt_magic_string_end)",
+		    "\v+VRT_ReqString(req,\n\v1,\nvrt_magic_string_end)",
 		    *e, NULL);
 	if (fmt == STRING_LIST && (*e)->fmt == STRING)
 		(*e)->fmt = STRING_LIST;



More information about the varnish-commit mailing list