Commit 768103c1 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Add the end time as timestamp to the ReqEnd SHM record.

Vector failures of the the FIRST case via DONE as well to
avoid code duplication.



git-svn-id: http://www.varnish-cache.org/svn/trunk@979 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 25abd3ef
...@@ -100,16 +100,24 @@ cnt_done(struct sess *sp) ...@@ -100,16 +100,24 @@ cnt_done(struct sess *sp)
if (sp->fd >= 0 && sp->doclose != NULL) if (sp->fd >= 0 && sp->doclose != NULL)
vca_close_session(sp, sp->doclose); vca_close_session(sp, sp->doclose);
sp->backend = NULL; sp->backend = NULL;
VCL_Rel(sp->vcl); if (sp->vcl != NULL) {
sp->vcl = NULL; VCL_Rel(sp->vcl);
sp->vcl = NULL;
}
clock_gettime(CLOCK_REALTIME, &sp->t_end); clock_gettime(CLOCK_REALTIME, &sp->t_end);
sp->wrk->idle = sp->t_end.tv_sec; sp->wrk->idle = sp->t_end.tv_sec;
dh = cnt_dt(&sp->t_open, &sp->t_req); if (sp->xid == 0) {
sp->t_req = sp->t_end;
sp->t_resp = sp->t_end;
}
dp = cnt_dt(&sp->t_req, &sp->t_resp); dp = cnt_dt(&sp->t_req, &sp->t_resp);
da = cnt_dt(&sp->t_resp, &sp->t_end); da = cnt_dt(&sp->t_resp, &sp->t_end);
VSL(SLT_ReqEnd, sp->id, "%u %ld.%09ld %.9f %.9f %.9f", dh = cnt_dt(&sp->t_open, &sp->t_req);
sp->xid, (long)sp->t_req.tv_sec, (long)sp->t_req.tv_nsec, VSL(SLT_ReqEnd, sp->id, "%u %ld.%09ld %ld.%09ld %.9f %.9f %.9f",
sp->xid,
(long)sp->t_req.tv_sec, (long)sp->t_req.tv_nsec,
(long)sp->t_end.tv_sec, (long)sp->t_end.tv_nsec,
dh, dp, da); dh, dp, da);
SES_Charge(sp); SES_Charge(sp);
...@@ -234,36 +242,34 @@ cnt_fetch(struct sess *sp) ...@@ -234,36 +242,34 @@ cnt_fetch(struct sess *sp)
INCOMPL(); INCOMPL();
} }
/*--------------------------------------------------------------------
* The very first request
*/
static int static int
cnt_first(struct sess *sp) cnt_first(struct sess *sp)
{ {
int i; int i;
assert(sp->xid == 0);
VCA_Prep(sp); VCA_Prep(sp);
sp->wrk->idle = sp->t_open.tv_sec; sp->wrk->idle = sp->t_open.tv_sec;
sp->wrk->acct.sess++; sp->wrk->acct.sess++;
SES_RefSrcAddr(sp); SES_RefSrcAddr(sp);
for (;;) { do
i = http_RecvSome(sp->fd, sp->http); i = http_RecvSome(sp->fd, sp->http);
if (i == -1) while (i == -1);
continue; if (i == 0) {
if (i == 0) { sp->step = STP_RECV;
sp->step = STP_RECV; return (0);
return (0);
}
if (i == 1)
vca_close_session(sp, "blast");
else if (i == 2)
vca_close_session(sp, "silent");
else
INCOMPL();
clock_gettime(CLOCK_REALTIME, &sp->t_end);
sp->wrk->idle = sp->t_end.tv_sec;
SES_Charge(sp);
vca_return_session(sp);
sp->step = STP_DONE;
return (1);
} }
if (i == 1)
vca_close_session(sp, "blast");
else if (i == 2)
vca_close_session(sp, "silent");
else
INCOMPL();
sp->step = STP_DONE;
return (0);
} }
/*-------------------------------------------------------------------- /*--------------------------------------------------------------------
......
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