static struct proxy *curproxy = NULL;
struct server *newsrv = NULL;
const char *err;
- int rc;
+ int rc, val;
if (!strcmp(args[0], "listen"))
rc = PR_CAP_LISTEN;
LIST_INIT(&curproxy->acl);
LIST_INIT(&curproxy->block_cond);
+ /* Timeouts are defined as -1, so we cannot use the zeroed area
+ * as a default value.
+ */
+ tv_eternity(&curproxy->clitimeout);
+ tv_eternity(&curproxy->srvtimeout);
+ tv_eternity(&curproxy->contimeout);
+ tv_eternity(&curproxy->appsession_timeout);
+
curproxy->id = strdup(args[1]);
curproxy->cap = rc;
curproxy->appsession_name = strdup(args[1]);
curproxy->appsession_name_len = strlen(curproxy->appsession_name);
curproxy->appsession_len = atoi(args[3]);
- __tv_from_ms(&curproxy->appsession_timeout, atoi(args[5]));
+ val = atoi(args[5]);
+ if (val > 0)
+ __tv_from_ms(&curproxy->appsession_timeout, val);
+ else
+ tv_eternity(&curproxy->appsession_timeout);
+
rc = chtbl_init(&(curproxy->htbl_proxy), TBLSIZ, hashpjw, match_str, destroy);
if (rc) {
Alert("Error Init Appsession Hashtable.\n");
file, linenum, args[0]);
return -1;
}
- __tv_from_ms(&curproxy->contimeout, atol(args[1]));
+ val = atoi(args[1]);
+ if (val > 0)
+ __tv_from_ms(&curproxy->contimeout, val);
+ else
+ tv_eternity(&curproxy->contimeout);
}
else if (!strcmp(args[0], "clitimeout")) { /* client timeout */
if (!__tv_iseq(&curproxy->clitimeout, &defproxy.clitimeout)) {
file, linenum, args[0]);
return -1;
}
- __tv_from_ms(&curproxy->clitimeout, atol(args[1]));
+ val = atoi(args[1]);
+ if (val > 0)
+ __tv_from_ms(&curproxy->clitimeout, val);
+ else
+ tv_eternity(&curproxy->clitimeout);
}
else if (!strcmp(args[0], "srvtimeout")) { /* server timeout */
if (!__tv_iseq(&curproxy->srvtimeout, &defproxy.srvtimeout)) {
file, linenum, args[0]);
return -1;
}
- __tv_from_ms(&curproxy->srvtimeout, atol(args[1]));
+ val = atoi(args[1]);
+ if (val > 0)
+ __tv_from_ms(&curproxy->srvtimeout, val);
+ else
+ tv_eternity(&curproxy->srvtimeout);
}
else if (!strcmp(args[0], "retries")) { /* connection retries */
if (warnifnotcap(curproxy, PR_CAP_BE, file, linenum, args[0], NULL))
#ifdef DEBUG_FULL
fprintf(stderr,"process_srv: c=%s, s=%s\n", cli_stnames[c], srv_stnames[s]);
#endif
+
+#if 0
+ fprintf(stderr,"%s:%d fe->clito=%d.%d, fe->conto=%d.%d, fe->srvto=%d.%d\n",
+ __FUNCTION__, __LINE__,
+ t->fe->clitimeout.tv_sec, t->fe->clitimeout.tv_usec,
+ t->fe->contimeout.tv_sec, t->fe->contimeout.tv_usec,
+ t->fe->srvtimeout.tv_sec, t->fe->srvtimeout.tv_usec);
+ fprintf(stderr,"%s:%d be->clito=%d.%d, be->conto=%d.%d, be->srvto=%d.%d\n",
+ __FUNCTION__, __LINE__,
+ t->be->clitimeout.tv_sec, t->be->clitimeout.tv_usec,
+ t->be->contimeout.tv_sec, t->be->contimeout.tv_usec,
+ t->be->srvtimeout.tv_sec, t->be->srvtimeout.tv_usec);
+
+ fprintf(stderr,"%s:%d req->cto=%d.%d, req->rto=%d.%d, req->wto=%d.%d\n",
+ __FUNCTION__, __LINE__,
+ req->cto.tv_sec, req->cto.tv_usec,
+ req->rto.tv_sec, req->rto.tv_usec,
+ req->wto.tv_sec, req->wto.tv_usec);
+
+ fprintf(stderr,"%s:%d rep->cto=%d.%d, rep->rto=%d.%d, rep->wto=%d.%d\n",
+ __FUNCTION__, __LINE__,
+ rep->cto.tv_sec, rep->cto.tv_usec,
+ rep->rto.tv_sec, rep->rto.tv_usec,
+ rep->wto.tv_sec, rep->wto.tv_usec);
+#endif
+
//fprintf(stderr,"process_srv: c=%d, s=%d, cr=%d, cw=%d, sr=%d, sw=%d\n", c, s,
//EV_FD_ISSET(t->cli_fd, DIR_RD), EV_FD_ISSET(t->cli_fd, DIR_WR),
//EV_FD_ISSET(t->srv_fd, DIR_RD), EV_FD_ISSET(t->srv_fd, DIR_WR)