Mailing List Archive

r903 - trunk/varnish-cache/bin/varnishd
Author: phk
Date: 2006-08-23 09:30:42 +0200 (Wed, 23 Aug 2006)
New Revision: 903

Modified:
trunk/varnish-cache/bin/varnishd/cache.h
trunk/varnish-cache/bin/varnishd/cache_center.c
trunk/varnish-cache/bin/varnishd/cache_pass.c
Log:
Handle backend connection error in pass mode with a 503


Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h 2006-08-23 07:29:28 UTC (rev 902)
+++ trunk/varnish-cache/bin/varnishd/cache.h 2006-08-23 07:30:42 UTC (rev 903)
@@ -368,7 +368,7 @@
#undef HTTPH

/* cache_pass.c */
-void PassSession(struct sess *sp);
+int PassSession(struct sess *sp);
void PassBody(struct sess *sp);

/* cache_pipe.c */

Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c 2006-08-23 07:29:28 UTC (rev 902)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c 2006-08-23 07:30:42 UTC (rev 903)
@@ -492,9 +492,11 @@
{

assert(sp->vbc == NULL);
- PassSession(sp);
- assert(sp->vbc != NULL);
- sp->step = STP_PASSBODY;
+ if (!PassSession(sp)) {
+ assert(sp->vbc != NULL);
+ sp->step = STP_PASSBODY;
+ } else
+ sp->step = STP_DONE;
return (0);
}


Modified: trunk/varnish-cache/bin/varnishd/cache_pass.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_pass.c 2006-08-23 07:29:28 UTC (rev 902)
+++ trunk/varnish-cache/bin/varnishd/cache_pass.c 2006-08-23 07:30:42 UTC (rev 903)
@@ -187,7 +187,7 @@

/*--------------------------------------------------------------------*/

-void
+int
PassSession(struct sess *sp)
{
int i;
@@ -199,6 +199,10 @@
w = sp->wrk;

vc = VBE_GetFd(sp->backend, sp->xid);
+ if (vc == NULL) {
+ RES_Error(sp, 503, "Backend did not respond.");
+ return (1);
+ }
assert(vc != NULL);
VSL(SLT_Backend, sp->fd, "%d %s", vc->fd, sp->backend->vcl_name);

@@ -218,4 +222,5 @@

assert(sp->vbc == NULL);
sp->vbc = vc;
+ return (0);
}