[experimental-ims] 561be2e Make it possible to limit the total transfer time.
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:52:30 CET 2012
commit 561be2ef8a694fc39b34cf577011a549ba17d417
Author: Tollef Fog Heen <tfheen at varnish-software.com>
Date: Mon Nov 7 14:20:06 2011 +0100
Make it possible to limit the total transfer time.
Set the default total transfer time to 600s.
diff --git a/bin/varnishd/cache_acceptor.c b/bin/varnishd/cache_acceptor.c
index f92bace..03a1a34 100644
--- a/bin/varnishd/cache_acceptor.c
+++ b/bin/varnishd/cache_acceptor.c
@@ -318,9 +318,9 @@ vca_acct(void *arg)
while (1) {
(void)sleep(1);
#ifdef SO_SNDTIMEO_WORKS
- if (params->send_timeout != send_timeout) {
+ if (params->idle_send_timeout != send_timeout) {
need_test = 1;
- send_timeout = params->send_timeout;
+ send_timeout = params->idle_send_timeout;
tv_sndtimeo = VTIM_timeval(send_timeout);
VTAILQ_FOREACH(ls, &heritage.socks, list) {
if (ls->sock < 0)
diff --git a/bin/varnishd/cache_wrw.c b/bin/varnishd/cache_wrw.c
index 5673b54..3e2de4a 100644
--- a/bin/varnishd/cache_wrw.c
+++ b/bin/varnishd/cache_wrw.c
@@ -51,6 +51,7 @@
#include <stdio.h>
#include "cache.h"
+#include "vtim.h"
/*--------------------------------------------------------------------
*/
@@ -133,6 +134,14 @@ WRW_Flush(struct worker *w)
*/
size_t used = 0;
+ if (VTIM_real() - w->sp->t_resp > params->send_timeout) {
+ WSL(w, SLT_Debug, *wrw->wfd,
+ "Hit total send timeout, wrote = %ld/%ld; not retrying",
+ i, wrw->liov);
+ i = -1;
+ break;
+ }
+
WSL(w, SLT_Debug, *wrw->wfd,
"Hit send timeout, wrote = %ld/%ld; retrying",
i, wrw->liov);
diff --git a/bin/varnishd/heritage.h b/bin/varnishd/heritage.h
index bb684b3..3732f18 100644
--- a/bin/varnishd/heritage.h
+++ b/bin/varnishd/heritage.h
@@ -112,6 +112,7 @@ struct params {
unsigned sess_timeout;
unsigned pipe_timeout;
unsigned send_timeout;
+ unsigned idle_send_timeout;
/* Management hints */
unsigned auto_restart;
diff --git a/bin/varnishd/mgt/mgt_param.c b/bin/varnishd/mgt/mgt_param.c
index 8665ff5..3169914 100644
--- a/bin/varnishd/mgt/mgt_param.c
+++ b/bin/varnishd/mgt/mgt_param.c
@@ -613,6 +613,13 @@ static const struct parspec input_parspec[] = {
"seconds the session is closed. \n"
"See setsockopt(2) under SO_SNDTIMEO for more information.",
DELAYED_EFFECT,
+ "600", "seconds" },
+ { "idle_send_timeout", tweak_timeout, &master.idle_send_timeout, 0, 0,
+ "Time to wait with no data sent. "
+ "If no data has been transmitted in this many\n"
+ "seconds the session is closed. \n"
+ "See setsockopt(2) under SO_SNDTIMEO for more information.",
+ DELAYED_EFFECT,
"60", "seconds" },
{ "auto_restart", tweak_bool, &master.auto_restart, 0, 0,
"Restart child process automatically if it dies.\n",
More information about the varnish-commit
mailing list