* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-proxy.cpp,v 1.87 2004-01-12 21:02:42 adam Exp $
+ * $Id: yaz-proxy.cpp,v 1.89 2004-01-14 12:14:13 adam Exp $
*/
#include <assert.h>
xmlChar *out_buf;
int out_len;
- xmlDocDumpMemory (res, &out_buf, &out_len);
+ xmlDocDumpFormatMemory (res, &out_buf, &out_len, 1);
+
p->records[i]->u.databaseRecord =
z_ext_record(odr_encode(), VAL_TEXT_XML,
(char*) out_buf, out_len);
{
send_to_srw_client_ok(0, res->records, 1);
}
- else if (m_s2z_present_apdu)
+ else if (m_s2z_present_apdu && m_s2z_hit_count > 0)
{
// adjust
Z_PresentRequest *pr = m_s2z_present_apdu->u.presentRequest;
}
else
{
+ m_s2z_present_apdu = 0;
send_to_srw_client_ok(m_s2z_hit_count, res->records, 1);
}
}
}
}
+void Yaz_Proxy::markInvalid()
+{
+ m_client = 0;
+ m_invalid_session = 1;
+}
+
void Yaz_ProxyClient::timeoutNotify()
{
if (m_server)
get_hostname());
m_waiting = 1;
m_root->pre_init();
+ if (m_server && m_init_flag)
+ {
+ // target timed out in a session that was properly initialized
+ // server object stay alive but we mark it as invalid so it
+ // gets initialized again
+ m_server->markInvalid();
+ m_server = 0;
+ }
shutdown();
}