r979 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Wed Sep 13 22:43:14 CEST 2006


Author: phk
Date: 2006-09-13 22:43:14 +0200 (Wed, 13 Sep 2006)
New Revision: 979

Modified:
   trunk/varnish-cache/bin/varnishd/cache_center.c
Log:
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.



Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c	2006-09-13 19:07:52 UTC (rev 978)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c	2006-09-13 20:43:14 UTC (rev 979)
@@ -100,16 +100,24 @@
 	if (sp->fd >= 0 && sp->doclose != NULL)
 		vca_close_session(sp, sp->doclose);
 	sp->backend = NULL;
-	VCL_Rel(sp->vcl);
-	sp->vcl = NULL;
+	if (sp->vcl != NULL) {
+		VCL_Rel(sp->vcl);
+		sp->vcl = NULL;
+	}
 
 	clock_gettime(CLOCK_REALTIME, &sp->t_end);
 	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);
 	da = cnt_dt(&sp->t_resp, &sp->t_end);
-	VSL(SLT_ReqEnd, sp->id, "%u %ld.%09ld %.9f %.9f %.9f",
-	    sp->xid, (long)sp->t_req.tv_sec, (long)sp->t_req.tv_nsec,
+	dh = cnt_dt(&sp->t_open, &sp->t_req);
+	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);
 
 	SES_Charge(sp);
@@ -234,36 +242,34 @@
 	INCOMPL();
 }
 
+/*--------------------------------------------------------------------
+ * The very first request
+ */
 static int
 cnt_first(struct sess *sp)
 {
 	int i;
 
+	assert(sp->xid == 0);
 	VCA_Prep(sp);
 	sp->wrk->idle = sp->t_open.tv_sec;
 	sp->wrk->acct.sess++;
 	SES_RefSrcAddr(sp);
-	for (;;) {
+	do 
 		i = http_RecvSome(sp->fd, sp->http);
-		if (i == -1)	
-			continue;
-		if (i == 0) {
-			sp->step = STP_RECV;
-			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);
+	while (i == -1);
+	if (i == 0) {
+		sp->step = STP_RECV;
+		return (0);
 	}
+	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);
 }
 
 /*--------------------------------------------------------------------




More information about the varnish-commit mailing list