* 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.38 2003-01-24 20:10:57 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)++;
}
{
if (apdu->which != Z_APDU_searchRequest)
return apdu;
- if (*m_parent->m_optimize != '1')
- return apdu;
+ if (*m_parent->m_optimize == '0')
+ return apdu; // don't optimize result sets..
Z_SearchRequest *sr = apdu->u.searchRequest;
Yaz_Z_Query *this_query = new Yaz_Z_Query;
Yaz_Z_Databases this_databases;
pr->referenceId = sr->referenceId;
pr->resultSetId = sr->resultSetName;
pr->preferredRecordSyntax = sr->preferredRecordSyntax;
- *pr->numberOfRecordsRequested = *sr->mediumSetPresentNumber;
+ if (*sr->mediumSetPresentNumber < m_client->m_last_resultCount)
+ *pr->numberOfRecordsRequested = *sr->mediumSetPresentNumber;
+ else
+ *pr->numberOfRecordsRequested = m_client->m_last_resultCount;
if (sr->mediumSetElementSetNames)
{
pr->recordComposition = (Z_RecordComposition *)
// 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
{