[master] ddced7a Don't reverse order of transactions in callback

Martin Blix Grydeland martin at varnish-cache.org
Wed May 15 14:46:14 CEST 2013


commit ddced7a2efd2a57d4808db6cfd71329f3260ef90
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Tue May 14 13:22:53 2013 +0200

    Don't reverse order of transactions in callback

diff --git a/lib/libvarnishapi/vsl_dispatch.c b/lib/libvarnishapi/vsl_dispatch.c
index 8c3bfe2..98a438d 100644
--- a/lib/libvarnishapi/vsl_dispatch.c
+++ b/lib/libvarnishapi/vsl_dispatch.c
@@ -719,8 +719,7 @@ vslq_callback(struct VSLQ *vslq, struct vtx *vtx, VSLQ_dispatch_f *func,
     void *priv)
 {
 	unsigned n = vtx->n_descend + 1;
-	struct vslc_vtx *cp[n];
-	struct VSL_cursor *CP[n + 1];
+	struct vslc_vtx *cp[n + 1];
 	unsigned i, j;
 
 	AN(vslq);
@@ -735,6 +734,7 @@ vslq_callback(struct VSLQ *vslq, struct vtx *vtx, VSLQ_dispatch_f *func,
 	    vtx->type != vtx_t_req)
 		return (0);
 
+	/* Build cursor array */
 	i = j = 0;
 	cp[i] = &vtx->c;
 	vslc_vtx_reset(cp[i]);
@@ -753,17 +753,15 @@ vslq_callback(struct VSLQ *vslq, struct vtx *vtx, VSLQ_dispatch_f *func,
 		j++;
 	}
 	assert(i == n);
-
-	/* Reverse order */
-	for (i = 0; i < n; i++)
-		CP[i] = &cp[n - i - 1]->c.c;
-	CP[i] = NULL;
+	cp[i] = NULL;
 
 	/* Query test goes here */
-	if (vslq->query == NULL ? 1 : vslq_runquery(vslq->query, CP))
-		return ((func)(vslq->vsl, CP, priv));
-	else
+	if (vslq->query != NULL &&
+	    vslq_runquery(vslq->query, (struct VSL_cursor **)cp))
 		return (0);
+
+	/* Callback */
+	return ((func)(vslq->vsl, (struct VSL_cursor **)cp, priv));
 }
 
 struct VSLQ *



More information about the varnish-commit mailing list