From c04cb15a40225047ead07ec1178550f231658e2f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 6 May 2010 19:32:39 +0100 Subject: [PATCH] lowvol fixes --- backends/innduct.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/backends/innduct.c b/backends/innduct.c index fb5ddca..6e9dd26 100644 --- a/backends/innduct.c +++ b/backends/innduct.c @@ -533,7 +533,7 @@ static char *globpat_backlog; static pid_t self_pid; static int *lowvol_perperiod; static int lowvol_circptr; -static int lowvol_total; +static int lowvol_total; /* does not include current period */ /* statemc_init initialises */ static StateMachineState sms; @@ -1191,9 +1191,10 @@ static void conn_idle_close(Conn *conn, const char *why) { static void check_idle_conns(void) { Conn *conn; - int verylowvol= lowvol_perperiod[lowvol_circptr]; + int volthisperiod= lowvol_perperiod[lowvol_circptr]; lowvol_circptr++; lowvol_circptr %= lowvol_periods; + lowvol_total += volthisperiod; lowvol_total -= lowvol_perperiod[lowvol_circptr]; lowvol_perperiod[lowvol_circptr]= 0; @@ -1222,9 +1223,9 @@ static void check_idle_conns(void) { } conn= LIST_HEAD(conns); - if (!verylowvol && + if (!volthisperiod && conns.count==1 && - lowvol_total+verylowvol < lowvol_thresh && + lowvol_total < lowvol_thresh && !conn_busy(conn)) conn_idle_close(conn, "low volume"); } @@ -1374,7 +1375,7 @@ static void connect_start(void) { assert(!connecting_fdpass_sock); info("starting connection attempt"); - int ok_reconnect_delay_periods= reconnect_delay_periods; + int ok_until_connect= until_connect; reconnect_blocking_event(); int socks[2]; @@ -1470,7 +1471,7 @@ static void connect_start(void) { on_fd_read_except(connecting_fdpass_sock, connchild_event); if (!conns.count) - reconnect_delay_periods= ok_reconnect_delay_periods; + until_connect= ok_until_connect; } /*---------- assigning articles to conns, and transmitting ----------*/ @@ -3311,11 +3312,11 @@ static void period(void) { debug("PERIOD" " sms=%s[%d] conns=%d until_connect=%d" " input_files main:%s flushing:%s backlog:%s[%d]" - " children connecting=%ld inndcomm=%ld" + " children connecting=%ld inndcomm=%ld lowvol_total=%d" , sms_names[sms], until_flush, conns.count, until_connect, dipf_main, dipf_flushing, dipf_backlog, until_backlog_nextscan, - (long)connecting_child, (long)inndcomm_child + (long)connecting_child, (long)inndcomm_child, lowvol_total ); free(dipf_main); @@ -3406,6 +3407,17 @@ CCMD(dump) { DUMPV("%d", , cli_master); fprintf(f,"\n"); + fprintf(f,"lowvol"); + DUMPV("%d", , lowvol_circptr); + DUMPV("%d", , lowvol_total); + fprintf(f,":"); + for (i=0; i