From e31c7057460f8c707301e00bf12065695b444995 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 23 Oct 2002 10:15:17 +0000 Subject: [PATCH] Idle time can be set via option -i --- include/yaz++/proxy.h | 4 +++- src/yaz-proxy-main.cpp | 9 ++++++--- src/yaz-proxy.cpp | 24 +++++++++++++----------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/include/yaz++/proxy.h b/include/yaz++/proxy.h index e385812..d27c5a9 100644 --- a/include/yaz++/proxy.h +++ b/include/yaz++/proxy.h @@ -2,7 +2,7 @@ * Copyright (c) 1998-2000, Index Data. * See the file LICENSE for details. * - * $Id: proxy.h,v 1.1 2002-10-09 12:50:26 adam Exp $ + * $Id: proxy.h,v 1.2 2002-10-23 10:15:17 adam Exp $ */ #include @@ -56,6 +56,7 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { int m_seqno; int m_max_clients; int m_keepalive; + int m_idletime; char *m_proxyTarget; char *m_proxy_authentication; long m_seed; @@ -74,5 +75,6 @@ class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc { void set_proxy_authentication (const char *auth); char *get_proxy_target() { return m_proxyTarget; }; void set_max_clients(int m) { m_max_clients = m; }; + void set_idletime (int t) { m_idletime = (t > 1) ? t : 600; }; }; diff --git a/src/yaz-proxy-main.cpp b/src/yaz-proxy-main.cpp index 9afdc32..9b7ffc5 100644 --- a/src/yaz-proxy-main.cpp +++ b/src/yaz-proxy-main.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2001, Index Data. * See the file LICENSE for details. * - * $Id: yaz-proxy-main.cpp,v 1.17 2002-10-09 12:50:26 adam Exp $ + * $Id: yaz-proxy-main.cpp,v 1.18 2002-10-23 10:15:18 adam Exp $ */ #include @@ -14,7 +14,7 @@ void usage(char *prog) { - fprintf (stderr, "%s: [-a log] [-c num] [-v level] [-t target] " + fprintf (stderr, "%s: [-a log] [-c num] [-v level] [-t target] [-i sec] " "[-u auth] [-o optlevel] @:port\n", prog); exit (1); } @@ -27,7 +27,7 @@ int args(Yaz_Proxy *proxy, int argc, char **argv) char *prog = argv[0]; int ret; - while ((ret = options("o:a:t:v:c:u:", argv, argc, &arg)) != -2) + while ((ret = options("o:a:t:v:c:u:i:", argv, argc, &arg)) != -2) { switch (ret) { @@ -57,6 +57,9 @@ int args(Yaz_Proxy *proxy, int argc, char **argv) case 'c': proxy->set_max_clients(atoi(arg)); break; + case 'i': + proxy->set_idletime(atoi(arg)); + break; default: usage(prog); return 1; diff --git a/src/yaz-proxy.cpp b/src/yaz-proxy.cpp index b0ac802..f61547a 100644 --- a/src/yaz-proxy.cpp +++ b/src/yaz-proxy.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2001, Index Data. * See the file LICENSE for details. * - * $Id: yaz-proxy.cpp,v 1.36 2002-10-09 12:50:26 adam Exp $ + * $Id: yaz-proxy.cpp,v 1.37 2002-10-23 10:15:18 adam Exp $ */ #include @@ -24,6 +24,7 @@ Yaz_Proxy::Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable) : m_proxy_authentication = 0; m_max_clients = 50; m_seed = time(0); + m_idletime = 600; m_optimize = xstrdup ("1"); } @@ -55,7 +56,7 @@ IYaz_PDU_Observer *Yaz_Proxy::sessionNotify(IYaz_PDU_Observable { Yaz_Proxy *new_proxy = new Yaz_Proxy(the_PDU_Observable); new_proxy->m_parent = this; - new_proxy->timeout(500); + new_proxy->timeout(m_idletime); new_proxy->set_proxy_target(m_proxyTarget); new_proxy->set_APDU_log(get_APDU_log()); new_proxy->set_proxy_authentication(m_proxy_authentication); @@ -147,7 +148,7 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu) c->m_last_resultCount = 0; c->m_sr_transform = 0; c->m_waiting = 0; - c->timeout(600); + c->timeout(m_idletime); } c->m_seqno = parent->m_seqno; if (c->m_server && c->m_server != this) @@ -252,7 +253,7 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu) c->m_last_ok = 0; c->m_sr_transform = 0; c->m_waiting = 0; - c->timeout(10); + c->timeout(20); (parent->m_seqno)++; } @@ -430,23 +431,24 @@ void Yaz_Proxy::shutdown() // only keep if keep_alive flag and cookie is set... if (m_keepalive && m_client && m_client->m_cookie[0]) { - if (m_client->m_waiting == 2) - abort(); + yaz_log (LOG_LOG, "shutdown (client to proxy) keepalive %s", + m_client->get_hostname()); + assert (m_client->m_waiting != 2); // Tell client (if any) that no server connection is there.. m_client->m_server = 0; - yaz_log (LOG_LOG, "shutdown (client to proxy) keepalive %s", m_client->get_hostname()); + } else if (m_client) { - if (m_client->m_waiting == 2) - abort(); - yaz_log (LOG_LOG, "shutdown (client to proxy) close %s", m_client->get_hostname()); + yaz_log (LOG_LOG, "shutdown (client to proxy) close %s", + m_client->get_hostname()); + assert (m_client->m_waiting != 2); delete m_client; } else if (!m_parent) { yaz_log (LOG_LOG, "shutdown (client to proxy) bad state"); - abort(); + assert (m_parent); } else { -- 1.7.10.4