[4.0] 542e5c7 Treat missing t_end in varnishncsa as being the same as t_start
Martin Blix Grydeland
martin at varnish-software.com
Tue Jun 24 11:31:57 CEST 2014
commit 542e5c70fa394a8c6ddf13d3be66536bfd92f957
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date: Mon Jun 23 15:09:46 2014 +0200
Treat missing t_end in varnishncsa as being the same as t_start
This makes varnishncsa continue to log if the end timestamp should be missing for some reason.
diff --git a/bin/varnishncsa/varnishncsa.c b/bin/varnishncsa/varnishncsa.c
index 2ff1fc3..d26808e 100644
--- a/bin/varnishncsa/varnishncsa.c
+++ b/bin/varnishncsa/varnishncsa.c
@@ -50,6 +50,7 @@
#include <stdint.h>
#include <ctype.h>
#include <time.h>
+#include <math.h>
#include "base64.h"
#include "vapi/vsm.h"
@@ -243,20 +244,27 @@ format_time(const struct format *format)
struct tm tm;
CHECK_OBJ_NOTNULL(format, FORMAT_MAGIC);
- if (CTX.frag[F_tstart].gen != CTX.gen ||
- CTX.frag[F_tend].gen != CTX.gen) {
+ if (CTX.frag[F_tstart].gen == CTX.gen) {
+ t_start = strtod(CTX.frag[F_tstart].b, &p);
+ if (p != CTX.frag[F_tstart].e)
+ t_start = NAN;
+ } else
+ t_start = NAN;
+ if (isnan(t_start)) {
+ /* Missing t_start is a no go */
if (format->string == NULL)
return (-1);
AZ(VSB_cat(CTX.vsb, format->string));
return (0);
}
- t_start = strtod(CTX.frag[F_tstart].b, &p);
- if (p != CTX.frag[F_tstart].e)
- return (-1);
- t_end = strtod(CTX.frag[F_tend].b, &p);
- if (p != CTX.frag[F_tend].e)
- return (-1);
+ /* Missing t_end defaults to t_start */
+ if (CTX.frag[F_tend].gen == CTX.gen) {
+ t_end = strtod(CTX.frag[F_tend].b, &p);
+ if (p != CTX.frag[F_tend].e)
+ t_end = t_start;
+ } else
+ t_end = t_start;
switch (format->time_type) {
case 'D':
More information about the varnish-commit
mailing list