[5.2] 23333e3 Remove irrelevant limits that were caused by VSC

PÃ¥l Hermunn Johansen hermunn at varnish-software.com
Thu Sep 7 06:59:08 UTC 2017


commit 23333e3c60e8803b9b17a70694ba4cc833a93530
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Tue Sep 5 19:39:38 2017 +0200

    Remove irrelevant limits that were caused by VSC
    
    Closes #2406
    Refs #2157

diff --git a/bin/varnishd/storage/mgt_stevedore.c b/bin/varnishd/storage/mgt_stevedore.c
index f6ce78e..4d04728 100644
--- a/bin/varnishd/storage/mgt_stevedore.c
+++ b/bin/varnishd/storage/mgt_stevedore.c
@@ -143,11 +143,11 @@ stv_check_ident(const char *spec, const char *ident)
 void
 STV_Config(const char *spec)
 {
-	char **av;
+	char **av, buf[8];
 	const char *name;
 	struct stevedore *stv;
 	const struct stevedore *stv2;
-	int ac, l;
+	int ac;
 	static unsigned seq = 0;
 
 	av = MGT_NamedArg(spec, &name, "-s");
@@ -174,16 +174,13 @@ STV_Config(const char *spec)
 	*stv = *stv2;
 	AN(stv->name);
 
-	if (name == NULL)
-		bprintf(stv->ident, "s%u", seq++);
-	else {
-		/* XXX: no need for truncation once VSM ident becomes dynamic */
-		l = strlen(name);
-		if (l > sizeof stv->ident - 1)
-			l = sizeof stv->ident - 1;
-		bprintf(stv->ident, "%.*s", l, name);
+	if (name == NULL) {
+		bprintf(buf, "s%u", seq++);
+		name = buf;
 	}
 
+	stv->ident = strdup(name);
+	AN(stv->ident);
 	stv_check_ident(spec, stv->ident);
 
 	if (stv->init != NULL)
diff --git a/bin/varnishd/storage/storage.h b/bin/varnishd/storage/storage.h
index 8b78326..0a61d8d 100644
--- a/bin/varnishd/storage/storage.h
+++ b/bin/varnishd/storage/storage.h
@@ -119,7 +119,7 @@ struct stevedore {
 	void			*priv;
 
 	VTAILQ_ENTRY(stevedore)	list;
-	char			ident[16];	/* XXX: match VSM_chunk.ident */
+	char			*ident;
 	char			*vclname;
 };
 
diff --git a/bin/varnishtest/tests/r02406.vtc b/bin/varnishtest/tests/r02406.vtc
new file mode 100644
index 0000000..3f3d018
--- /dev/null
+++ b/bin/varnishtest/tests/r02406.vtc
@@ -0,0 +1,12 @@
+varnishtest "Long backend and storage names"
+
+varnish v1 -arg "-s acme_example_com_static_assets_malloc_storage=malloc"
+
+varnish v1 -vcl {
+	backend be_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789 {
+		.host = "${bad_backend}";
+	}
+} -start
+
+varnish v1 -expect SMA.acme_example_com_static_assets_malloc_storage.c_req == 0
+varnish v1 -expect VBE.vcl1.be_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789.req == 0
diff --git a/lib/libvcc/vcc_backend.c b/lib/libvcc/vcc_backend.c
index bc0c096..54458d8 100644
--- a/lib/libvcc/vcc_backend.c
+++ b/lib/libvcc/vcc_backend.c
@@ -469,16 +469,6 @@ vcc_ParseBackend(struct vcc *tl)
 	vcc_ExpectVid(tl, "backend");	/* ID: name */
 	ERRCHK(tl);
 
-	/* XXX: lift this limit once VSM ident becomes dynamic */
-	if (tl->t->e - tl->t->b > MAX_BACKEND_NAME) {
-		VSB_printf(tl->sb,
-		    "Name of %.*s too long (max %d, is %zu):\n",
-		    PF(t_first), MAX_BACKEND_NAME,
-		    (size_t)(tl->t->e - tl->t->b));
-		vcc_ErrWhere(tl, tl->t);
-		return;
-	}
-
 	t_be = tl->t;
 	vcc_NextToken(tl);
 
diff --git a/lib/libvcc/vcc_compile.h b/lib/libvcc/vcc_compile.h
index 547b2bc..79f9a02 100644
--- a/lib/libvcc/vcc_compile.h
+++ b/lib/libvcc/vcc_compile.h
@@ -234,7 +234,6 @@ void vcc_Acl_Hack(struct vcc *tl, char *b, size_t bl);
 int vcc_ParseAction(struct vcc *tl);
 
 /* vcc_backend.c */
-#define MAX_BACKEND_NAME	64
 struct fld_spec;
 
 void vcc_ParseProbe(struct vcc *tl);


More information about the varnish-commit mailing list