* 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 <yaz++/z-assoc.h>
int m_seqno;
int m_max_clients;
int m_keepalive;
+ int m_idletime;
char *m_proxyTarget;
char *m_proxy_authentication;
long m_seed;
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; };
};
* 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 <yaz/log.h>
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);
}
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)
{
case 'c':
proxy->set_max_clients(atoi(arg));
break;
+ case 'i':
+ proxy->set_idletime(atoi(arg));
+ break;
default:
usage(prog);
return 1;
* 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 <assert.h>
m_proxy_authentication = 0;
m_max_clients = 50;
m_seed = time(0);
+ m_idletime = 600;
m_optimize = xstrdup ("1");
}
{
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);
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)
c->m_last_ok = 0;
c->m_sr_transform = 0;
c->m_waiting = 0;
- c->timeout(10);
+ c->timeout(20);
(parent->m_seqno)++;
}
// 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
{