r4498 - trunk/varnish-cache/bin/varnishtest

phk at projects.linpro.no phk at projects.linpro.no
Wed Jan 27 22:40:10 CET 2010


Author: phk
Date: 2010-01-27 22:40:09 +0100 (Wed, 27 Jan 2010)
New Revision: 4498

Modified:
   trunk/varnish-cache/bin/varnishtest/vtc_server.c
Log:
Close a race condition in server teardown.



Modified: trunk/varnish-cache/bin/varnishtest/vtc_server.c
===================================================================
--- trunk/varnish-cache/bin/varnishtest/vtc_server.c	2010-01-27 16:06:46 UTC (rev 4497)
+++ trunk/varnish-cache/bin/varnishtest/vtc_server.c	2010-01-27 21:40:09 UTC (rev 4498)
@@ -55,6 +55,7 @@
 	char			*name;
 	struct vtclog		*vl;
 	VTAILQ_ENTRY(server)	list;
+	char			run;
 
 	unsigned		repeat;
 	char			*spec;
@@ -184,6 +185,7 @@
 		macro_def(s->vl, s->name, "sock", "%s:%s", s->aaddr, s->aport);
 	}
 	vtc_log(s->vl, 1, "Listen on %s:%s", s->addr, s->port);
+	s->run = 1;
 	AZ(pthread_create(&s->tp, NULL, server_thread, s));
 }
 
@@ -205,6 +207,7 @@
 	s->tp = 0;
 	TCP_close(&s->sock);
 	s->sock = -1;
+	s->run = 0;
 }
 
 /**********************************************************************
@@ -241,7 +244,7 @@
 		/* Reset and free */
 		VTAILQ_FOREACH_SAFE(s, &servers, list, s2) {
 			VTAILQ_REMOVE(&servers, s, list);
-			if (s->sock >= 0) {
+			if (s->run) {
 				(void)pthread_cancel(s->tp);
 				server_wait(s);
 			}



More information about the varnish-commit mailing list