r182 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Wed Jun 14 11:03:45 CEST 2006


Author: phk
Date: 2006-06-14 11:03:45 +0200 (Wed, 14 Jun 2006)
New Revision: 182

Modified:
   trunk/varnish-cache/bin/varnishd/cache.h
   trunk/varnish-cache/bin/varnishd/cache_acceptor.c
   trunk/varnish-cache/bin/varnishd/cache_pipe.c
   trunk/varnish-cache/bin/varnishd/cache_pool.c
Log:
Sanitize close/recycle session logic a bit.


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h	2006-06-14 08:53:21 UTC (rev 181)
+++ trunk/varnish-cache/bin/varnishd/cache.h	2006-06-14 09:03:45 UTC (rev 182)
@@ -60,8 +60,8 @@
 /* cache_acceptor.c */
 void vca_write(struct sess *sp, void *ptr, size_t len);
 void vca_flush(struct sess *sp);
-void vca_retire_session(struct sess *sp);
-void vca_recycle_session(struct sess *sp);
+void vca_return_session(struct sess *sp);
+void vca_close_session(struct sess *sp);
 void VCA_Init(void);
 
 /* cache_backend.c */

Modified: trunk/varnish-cache/bin/varnishd/cache_acceptor.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2006-06-14 08:53:21 UTC (rev 181)
+++ trunk/varnish-cache/bin/varnishd/cache_acceptor.c	2006-06-14 09:03:45 UTC (rev 182)
@@ -66,8 +66,7 @@
 	if (i != sp->mem->liov) {
 		VSL(SLT_SessionClose, sp->fd, "Premature %d of %d",
 		    i,  sp->mem->liov);
-		close(sp->fd);
-		sp->fd = -1;
+		vca_close_session(sp);
 	}
 	sp->mem->liov = 0;
 	sp->mem->niov = 0;
@@ -178,24 +177,31 @@
 	return ("FOOBAR");
 }
 
+/*--------------------------------------------------------------------*/
+
 void
-vca_recycle_session(struct sess *sp)
+vca_close_session(struct sess *sp)
 {
-	VSL(SLT_SessionReuse, sp->fd, "%s", sp->addr);
-	write(pipes[1], &sp, sizeof sp);
+
+	VSL(SLT_SessionClose, sp->fd, "%s", sp->addr);
+	close(sp->fd);
+	sp->fd = -1;
 }
 
+/*--------------------------------------------------------------------*/
+
 void
-vca_retire_session(struct sess *sp)
+vca_return_session(struct sess *sp)
 {
 
-	if (sp->http != NULL)
-		http_Delete(sp->http);
 	if (sp->fd >= 0) {
-		VSL(SLT_SessionClose, sp->fd, "%s", sp->addr);
-		close(sp->fd);
+		VSL(SLT_SessionReuse, sp->fd, "%s", sp->addr);
+		write(pipes[1], &sp, sizeof sp);
+	} else {
+		if (sp->http != NULL)
+			http_Delete(sp->http);
+		free(sp);
 	}
-	free(sp);
 }
 
 /*--------------------------------------------------------------------*/

Modified: trunk/varnish-cache/bin/varnishd/cache_pipe.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_pipe.c	2006-06-14 08:53:21 UTC (rev 181)
+++ trunk/varnish-cache/bin/varnishd/cache_pipe.c	2006-06-14 09:03:45 UTC (rev 182)
@@ -75,7 +75,6 @@
 	event_add(&e2.ev, NULL);
 	event_base_loop(w->eb, 0);
 	close (fd);
-	close (sp->fd);
+	vca_close_session(sp);
 	VBE_ClosedFd(fd_token);
-	sp->fd = -1;
 }

Modified: trunk/varnish-cache/bin/varnishd/cache_pool.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_pool.c	2006-06-14 08:53:21 UTC (rev 181)
+++ trunk/varnish-cache/bin/varnishd/cache_pool.c	2006-06-14 09:03:45 UTC (rev 182)
@@ -159,17 +159,13 @@
 		if (http_GetHdr(sp->http, "Connection", &b) &&
 		    !strcmp(b, "close")) {
 			VSL(SLT_SessionClose, sp->fd, "hdr");
-			close(sp->fd);
-			sp->fd = -1;
+			vca_close_session(sp);
 		}
 
 		AZ(pthread_mutex_lock(&sessmtx));
 		RelVCL(sp->vcl);
 		sp->vcl = NULL;
-		if (sp->fd < 0) 
-			vca_retire_session(sp);
-		else
-			vca_recycle_session(sp);
+		vca_return_session(sp);
 	}
 }
 
@@ -179,7 +175,8 @@
 	struct sess *sp = arg;
 
 	if (!good) {
-		vca_retire_session(sp);
+		vca_close_session(sp);
+		vca_return_session(sp);
 		return;
 	}
 	AZ(pthread_mutex_lock(&sessmtx));




More information about the varnish-commit mailing list