r2270 - trunk/varnish-cache/bin/varnishncsa

Anders Nordby anders at fupp.net
Tue Nov 20 17:41:57 CET 2007


Hi,

Finally I can use varnishncsa with a newsyslog to rotate the logs.
Great, thanks!

Other wishes:

- It would be nice if varnishncsa could also log different virtual hosts
in different files, and also make it possible to choose which virtual
hosts to log for/not.

- It would be nice to be able to specify what to log, as in Apache
CustomLog/LogFormat.

:-)

On Tue, Nov 20, 2007 at 03:55:49PM +0100, des at projects.linpro.no wrote:
> 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);
> 
> _______________________________________________
> varnish-commit mailing list
> varnish-commit at projects.linpro.no
> http://projects.linpro.no/mailman/listinfo/varnish-commit


-- 
Anders.



More information about the varnish-commit mailing list