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