-/* $Id: yaz-proxy.cpp,v 1.50 2006-04-06 12:04:20 adam Exp $
+/* $Id: yaz-proxy.cpp,v 1.54 2006-04-12 11:55:42 adam Exp $
Copyright (c) 1998-2006, Index Data.
This file is part of the yazproxy.
m_bw_max = 0;
m_pdu_max = 0;
m_search_max = 0;
- m_connect_max = 0;
+ m_max_connect = 0;
+ m_max_connect_period = 0;
m_limit_connect = 0;
+ m_limit_connect_period = 0;
m_timeout_mode = timeout_normal;
m_timeout_gdu = 0;
m_max_record_retrieve = 0;
m_config_fname = xstrdup(config);
int r = m_config->read_xml(config);
if (!r)
+ {
+ int period = 60;
m_config->get_generic_info(&m_log_mask, &m_max_clients,
- &m_connect_max, &m_limit_connect);
+ &m_max_connect, &m_limit_connect, &period);
+ m_connect.set_period(period);
+ }
return r;
}
else
{
m_log_mask = 0;
+ int period = 60;
cfg->get_generic_info(&m_log_mask, &m_max_clients,
- &m_connect_max, &m_limit_connect);
+ &m_max_connect, &m_limit_connect,
+ &period);
+ m_connect.set_period(period);
}
}
else
m_connect.add_connect(peername);
int connect_total = m_connect.get_total(peername);
- int connect_max = m_connect_max;
+ int connect_max = m_max_connect;
if (connect_max && connect_total > connect_max)
{
yaz_log(YLOG_LOG, "%sconnect not accepted total=%d max=%d",
new_proxy->set_default_target(m_default_target);
new_proxy->m_max_clients = m_max_clients;
new_proxy->m_log_mask = m_log_mask;
+
+ if (!strcmp(peername, "tcp:163.121.19.82")) // NIS GROUP
+ new_proxy->m_log_mask = 255;
+
new_proxy->set_APDU_log(get_APDU_log());
- if (m_log_mask & PROXY_LOG_APDU_CLIENT)
+ if (new_proxy->m_log_mask & PROXY_LOG_APDU_CLIENT)
new_proxy->set_APDU_yazlog(1);
else
new_proxy->set_APDU_yazlog(0);
yaz_log (YLOG_LOG, "%sMAXCLIENTS %d Destroy %d",
m_session_str, parent->m_max_clients, c->m_seqno);
if (c->m_server && c->m_server != this)
- delete c->m_server; // PROBLEM: m_ref_count!
- c->m_server = 0;
+ c->m_server->dec_ref(true);
}
else
{
if (c->m_server && c->m_server != this)
{
c->m_server->m_client = 0;
- delete c->m_server; // PROBLEM: m_ref_count!
+ c->m_server->dec_ref(true);
}
(parent->m_seqno)++;
c->m_target_idletime = m_target_idletime;
else
{
// Z39.50 just shutdown
- delete this;
+ timeout(0);
return;
}
}
if (m_server)
m_server->send_response_fail_client(get_hostname());
+
+ Yaz_Proxy *proxy_root = m_root;
+
shutdown();
- m_root->pre_init();
+ proxy_root->pre_init();
}
Yaz_ProxyClient::Yaz_ProxyClient(IPDU_Observable *the_PDU_Observable,
*apdu->u.initResponse->maximumRecordSize;
Z_InitResponse *ir = apdu->u.initResponse;
+
+ // apply YAZ Proxy version
+ char *imv0 = ir->implementationVersion;
+ char *imv1 = (char*)
+ odr_malloc(m_init_odr, 20 + (imv0 ? strlen(imv0) : 0));
+ *imv1 = '\0';
+ if (imv0)
+ strcat(imv1, imv0);
+ strcat(imv1, "/" VERSION);
+ ir->implementationVersion = imv1;
+
+ // apply YAZ Proxy implementation name
char *im0 = ir->implementationName;
-
char *im1 = (char*)
odr_malloc(m_init_odr, 20 + (im0 ? strlen(im0) : 0));
*im1 = '\0';