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