From 2e72300b0d571c2b319e0e5c827ddc45f011f964 Mon Sep 17 00:00:00 2001 From: Eduardo Chappa Date: Sun, 27 May 2018 15:48:21 -0600 Subject: * Add new variable close-connection-timeout, which tells Alpine to close a connection that is having problems being kept alive after the number of seconds configured in this variable, if the connection has not recovered. The default is 0, which means to keep the connection alive and wait for the connection to recover. --- alpine/confscroll.c | 12 ++++++++++++ alpine/imap.c | 9 +++++++++ 2 files changed, 21 insertions(+) (limited to 'alpine') diff --git a/alpine/confscroll.c b/alpine/confscroll.c index 0d932f4c..ff8841fe 100644 --- a/alpine/confscroll.c +++ b/alpine/confscroll.c @@ -350,6 +350,7 @@ exclude_config_var(struct pine *ps, struct variable *var, int allow_hard_to_conf case V_TCPREADWARNTIMEO : case V_TCPWRITEWARNTIMEO : case V_TCPQUERYTIMEO : + case V_QUITQUERYTIMEO : case V_RSHCMD : case V_RSHPATH : case V_RSHOPENTIMEO : @@ -1608,6 +1609,10 @@ text_toolit(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags, int look_ lowrange = 5; hirange = 1000; } + else if((*cl)->var == &ps->vars[V_QUITQUERYTIMEO]){ + lowrange = 0; + hirange = 1000; + } else if((*cl)->var == &ps->vars[V_TCPWRITEWARNTIMEO] || (*cl)->var == &ps->vars[V_RSHOPENTIMEO] || (*cl)->var == &ps->vars[V_SSHOPENTIMEO] || @@ -5432,6 +5437,12 @@ fix_side_effects(struct pine *ps, struct variable *var, int revert) if(ps->VAR_TCPQUERYTIMEO && SVAR_TCP_QUERY(ps, val, tmp_20k_buf, SIZEOF_20KBUF)) q_status_message(SM_ORDER, 3, 5, tmp_20k_buf); } + else if(var == &ps->vars[V_QUITQUERYTIMEO]){ + val = 0; + if(!revert) + if(ps->VAR_QUITQUERYTIMEO && SVAR_QUIT_QUERY_TIMEO(ps, val, tmp_20k_buf, SIZEOF_20KBUF)) + q_status_message(SM_ORDER, 3, 5, tmp_20k_buf); + } else if(var == &ps->vars[V_RSHOPENTIMEO]){ val = 15; if(!revert) @@ -5769,6 +5780,7 @@ fix_side_effects(struct pine *ps, struct variable *var, int revert) var == &ps->vars[V_TCPREADWARNTIMEO] || var == &ps->vars[V_TCPWRITEWARNTIMEO] || var == &ps->vars[V_TCPQUERYTIMEO] || + var == &ps->vars[V_QUITQUERYTIMEO] || var == &ps->vars[V_RSHOPENTIMEO] || var == &ps->vars[V_SSHOPENTIMEO])) q_status_message(SM_ASYNC, 0, 3, diff --git a/alpine/imap.c b/alpine/imap.c index 48ee3606..54e6b253 100644 --- a/alpine/imap.c +++ b/alpine/imap.c @@ -1259,6 +1259,15 @@ pine_tcptimeout(long int elapsed, long int sincelast, char *host) if(ps_global->noshow_timeout) return(rv); + if(ps_global->can_interrupt + && ps_global->close_connection_timeout > 0L + && elapsed >= (long)ps_global->tcp_query_timeout + && elapsed >= (long)ps_global->close_connection_timeout){ + ps_global->read_bail = 0; + ps_global->user_says_cancel = 1; + return 0; + } + if(!ps_global->ttyo) return(pine_tcptimeout_noscreen(elapsed, sincelast, host)); -- cgit v1.2.3-54-g00ecf