Commit 80339915 authored by Dag Erling Smørgrav's avatar Dag Erling Smørgrav

Merged revisions 2270-2271 via svnmerge from

svn+ssh://projects.linpro.no/svn/varnish/trunk/varnish-cache

........
  r2270 | des | 2007-11-20 15:55:49 +0100 (Tue, 20 Nov 2007) | 7 lines
  
  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).
........
  r2271 | des | 2007-11-20 15:56:21 +0100 (Tue, 20 Nov 2007) | 2 lines
  
  Fix some style issues, and harmonize with varnishncsa(1).
........


git-svn-id: http://www.varnish-cache.org/svn/branches/1.1@2296 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 8f7071d4
......@@ -179,14 +179,14 @@ do_order(struct VSL_data *vd, int argc, char **argv)
match_tag = name2tag(argv[0]);
if (match_tag < 0) {
fprintf(stderr, "Tag \"%s\" unknown\n", argv[0]);
exit (2);
exit(2);
}
i = regcomp(&match_re, argv[1], REG_EXTENDED | REG_NOSUB);
if (i) {
char buf[BUFSIZ];
regerror(i, &match_re, buf, sizeof buf);
fprintf(stderr, "%s\n", buf);
exit (2);
exit(2);
}
}
if (!b_flag) {
......@@ -235,7 +235,7 @@ open_log(const char *w_arg, int a_flag)
fd = open(w_arg, flags, 0644);
if (fd < 0) {
perror(w_arg);
exit (1);
exit(1);
}
return (fd);
}
......@@ -265,7 +265,7 @@ do_write(struct VSL_data *vd, const char *w_arg, int a_flag)
reopen = 0;
}
}
exit (0);
exit(0);
}
/*--------------------------------------------------------------------*/
......@@ -281,7 +281,7 @@ usage(void)
int
main(int argc, char **argv)
{
int i, c;
int c;
int a_flag = 0, D_flag = 0, o_flag = 0;
const char *n_arg = NULL;
const char *P_arg = NULL;
......@@ -358,12 +358,11 @@ main(int argc, char **argv)
if (o_flag)
do_order(vd, argc - optind, argv + optind);
while (1) {
i = VSL_Dispatch(vd, VSL_H_Print, stdout);
if (i == 0)
fflush(stdout);
else if (i < 0)
while (VSL_Dispatch(vd, VSL_H_Print, stdout) >= 0) {
if (fflush(stdout) != 0) {
perror("stdout");
break;
}
}
if (pfh != NULL)
......
......@@ -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 @@ h_ncsa(void *priv, enum shmlogtag tag, unsigned fd,
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 @@ h_ncsa(void *priv, enum shmlogtag tag, unsigned fd,
}
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 @@ h_ncsa(void *priv, enum shmlogtag tag, unsigned fd,
#undef freez
lp->bogus = 0;
return (0);
return (reopen);
}
/*--------------------------------------------------------------------*/
static volatile sig_atomic_t reopen;
static void
sighup(int sig)
{
......@@ -447,7 +447,7 @@ usage(void)
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 @@ main(int argc, char *argv[])
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 @@ main(int argc, char *argv[])
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment