]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] timeout.check was not pre-set to eternity
authorWilly Tarreau <w@1wt.eu>
Fri, 15 Feb 2008 10:15:34 +0000 (11:15 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 15 Feb 2008 10:15:34 +0000 (11:15 +0100)
If timeout.check was not set, check were using 0 as the timeout, causing
odd behaviours.

include/proto/proxy.h
include/types/proxy.h
src/cfgparse.c

index f00f6469739ac015eebd1f8f0bc4ee1dd20f27c3..55f9aab4987a201540695dc177c2fa1c51f75ba3 100644 (file)
@@ -2,7 +2,7 @@
   include/proto/proxy.h
   This file defines function prototypes for proxy management.
 
-  Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
+  Copyright (C) 2000-2008 Willy Tarreau - w@1wt.eu
   
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -48,6 +48,19 @@ static inline const char *proxy_type_str(struct proxy *proxy)
        return proxy_cap_str(proxy->cap);
 }
 
+/* this function initializes all timeouts for proxy p */
+static inline void proxy_reset_timeouts(struct proxy *proxy)
+{
+       tv_eternity(&proxy->timeout.client);
+       tv_eternity(&proxy->timeout.tarpit);
+       tv_eternity(&proxy->timeout.queue);
+       tv_eternity(&proxy->timeout.connect);
+       tv_eternity(&proxy->timeout.server);
+       tv_eternity(&proxy->timeout.appsession);
+       tv_eternity(&proxy->timeout.httpreq);
+       tv_eternity(&proxy->timeout.check);
+}
+
 #endif /* _PROTO_PROXY_H */
 
 /*
index dd4f00ffb6f6761a5204630ddc207fc267461b0c..a2238cb31a4a79c1cdbff0f5c011023e5940e38a 100644 (file)
@@ -2,7 +2,7 @@
   include/types/proxy.h
   This file defines everything related to proxies.
 
-  Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
+  Copyright (C) 2000-2008 Willy Tarreau - w@1wt.eu
   
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -170,7 +170,7 @@ struct proxy {
        char *monitor_uri;                      /* a special URI to which we respond with HTTP/200 OK */
        int monitor_uri_len;                    /* length of the string above. 0 if unused */
        struct list mon_fail_cond;              /* list of conditions to fail monitoring requests (chained) */
-       struct {
+       struct {                                /* WARNING! check proxy_reset_timeouts() in proxy.h !!! */
                struct timeval client;          /* client I/O timeout (in milliseconds) */
                struct timeval tarpit;          /* tarpit timeout, defaults to connect if unspecified */
                struct timeval queue;           /* queue timeout, defaults to connect if unspecified */
index 9329df3eb3c1a19900d9f293e27c5149920d253e..13b0e36931a46720ae8e6dfee6347e218eb5f6e9 100644 (file)
@@ -516,13 +516,7 @@ static void init_default_instance()
        defproxy.maxconn = cfg_maxpconn;
        defproxy.conn_retries = CONN_RETRIES;
        defproxy.logfac1 = defproxy.logfac2 = -1; /* log disabled */
-       tv_eternity(&defproxy.timeout.client);
-       tv_eternity(&defproxy.timeout.connect);
-       tv_eternity(&defproxy.timeout.server);
-       tv_eternity(&defproxy.timeout.appsession);
-       tv_eternity(&defproxy.timeout.queue);
-       tv_eternity(&defproxy.timeout.tarpit);
-       tv_eternity(&defproxy.timeout.httpreq);
+       proxy_reset_timeouts(&defproxy);
 }
 
 /*
@@ -599,13 +593,7 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int inv)
                /* Timeouts are defined as -1, so we cannot use the zeroed area
                 * as a default value.
                 */
-               tv_eternity(&curproxy->timeout.client);
-               tv_eternity(&curproxy->timeout.server);
-               tv_eternity(&curproxy->timeout.connect);
-               tv_eternity(&curproxy->timeout.appsession);
-               tv_eternity(&curproxy->timeout.queue);
-               tv_eternity(&curproxy->timeout.tarpit);
-               tv_eternity(&curproxy->timeout.httpreq);
+               proxy_reset_timeouts(curproxy);
 
                curproxy->last_change = now.tv_sec;
                curproxy->id = strdup(args[1]);