r2270 - trunk/varnish-cache/bin/varnishncsa
des at projects.linpro.no
des at projects.linpro.no
Tue Nov 20 15:55:49 CET 2007
Author: des
Date: 2007-11-20 15:55:49 +0100 (Tue, 20 Nov 2007)
New Revision: 2270
Modified:
trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
Log:
Make SIGHUP work: VSL_Dispatch() will not return as long as it has data
to feed to h_ncsa(), so it is up to h_ncsa() to interrupt it if reopen
is non-zero.
Also remove a superfluous call to VSL_Arg() as was previously done in
varnishlog(1).
Modified: trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
===================================================================
--- trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-20 14:32:01 UTC (rev 2269)
+++ trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-20 14:55:49 UTC (rev 2270)
@@ -80,6 +80,8 @@
#include "shmlog.h"
#include "varnishapi.h"
+static volatile sig_atomic_t reopen;
+
static struct logline {
char *df_H; /* %H, Protocol version */
char *df_Host; /* %{Host}i */
@@ -187,7 +189,7 @@
end = ptr + len;
if (!(spec & VSL_S_CLIENT || spec & VSL_S_BACKEND))
- return (0);
+ return (reopen);
if (fd >= nll) {
struct logline **newll = ll;
@@ -315,11 +317,11 @@
}
if ((spec & VSL_S_CLIENT) && tag != SLT_ReqEnd)
- return (0);
+ return (reopen);
if ((spec & VSL_S_BACKEND) && tag != SLT_BackendReuse &&
(tag != SLT_BackendClose || lp->df_Uq))
- return (0);
+ return (reopen);
if (tag == SLT_ReqEnd) {
if (sscanf(ptr, "%*u %*u.%*u %ld.", &l) != 1)
@@ -407,13 +409,11 @@
#undef freez
lp->bogus = 0;
- return (0);
+ return (reopen);
}
/*--------------------------------------------------------------------*/
-static volatile sig_atomic_t reopen;
-
static void
sighup(int sig)
{
@@ -447,7 +447,7 @@
int
main(int argc, char *argv[])
{
- int i, c;
+ int c;
int a_flag = 0, D_flag = 0;
const char *n_arg = NULL;
const char *P_arg = NULL;
@@ -459,11 +459,6 @@
vd = VSL_New();
while ((c = getopt(argc, argv, VSL_ARGS "aDn:P:Vw:")) != -1) {
- i = VSL_Arg(vd, c, optarg);
- if (i < 0)
- exit (1);
- if (i > 0)
- continue;
switch (c) {
case 'a':
a_flag = 1;
@@ -516,7 +511,7 @@
of = stdout;
}
- while (VSL_Dispatch(vd, h_ncsa, of) == 0) {
+ while (VSL_Dispatch(vd, h_ncsa, of) >= 0) {
if (fflush(of) != 0) {
perror(w_arg);
exit(1);
More information about the varnish-commit
mailing list