-/* $Id: yaz-proxy.cpp,v 1.1 2004-03-29 22:46:51 adam Exp $
+/* $Id: yaz-proxy.cpp,v 1.4 2004-03-30 18:14:13 adam Exp $
Copyright (c) 1998-2004, Index Data.
This file is part of the yaz-proxy.
02111-1307, USA.
*/
+#ifdef WIN32
+#else
#include <unistd.h>
+#endif
+
#include <assert.h>
#include <time.h>
#include <sys/types.h>
m_http_version = 0;
m_soap_ns = 0;
m_s2z_packing = Z_SRW_recordPacking_string;
+#if HAVE_GETTIMEOFDAY
m_time_tv.tv_sec = 0;
m_time_tv.tv_usec = 0;
+#endif
if (!m_parent)
low_socket_open();
}
xfree (m_proxy_authentication);
xfree (m_optimize);
+#if HAVE_XSLT
if (m_stylesheet_xsp)
xsltFreeStylesheet(m_stylesheet_xsp);
-
+#endif
xfree (m_schema);
if (m_s2z_odr_init)
odr_destroy(m_s2z_odr_init);
Yaz_ProxyConfig *cfg = check_reconfigure();
if (proxy_host)
{
-#if 1
+#if 0
/* only to be enabled for debugging... */
if (!strcmp(proxy_host, "stop"))
exit(0);
void Yaz_Proxy::convert_xsl_delay()
{
Z_NamePlusRecord *npr = m_stylesheet_nprl->records[m_stylesheet_offset];
+#if HAVE_XSLT
if (npr->which == Z_NamePlusRecord_databaseRecord)
{
Z_External *r = npr->u.databaseRecord;
xmlFreeDoc(doc);
}
}
+#endif
m_stylesheet_offset++;
if (m_stylesheet_offset == m_stylesheet_nprl->num_records)
{
m_stylesheet_nprl = 0;
+#if HAVE_XSLT
if (m_stylesheet_xsp)
xsltFreeStylesheet(m_stylesheet_xsp);
+#endif
m_stylesheet_xsp = 0;
timeout(m_client_idletime);
send_PDU_convert(m_stylesheet_apdu);
void Yaz_Proxy::logtime()
{
+#if HAVE_GETTIMEOFDAY
if (m_time_tv.tv_sec)
{
struct timeval tv;
}
m_time_tv.tv_sec = 0;
m_time_tv.tv_usec = 0;
+#endif
}
int Yaz_Proxy::send_http_response(int code)
m_bw_stat.add_bytes(len);
m_pdu_stat.add_bytes(1);
+#if HAVE_GETTIMEOFDAY
gettimeofday(&m_time_tv, 0);
+#endif
int bw_total = m_bw_stat.get_total();
int pdu_total = m_pdu_stat.get_total();
{
m_parent->low_socket_close();
+#if HAVE_XSLT
if (m_stylesheet_xsp)
xsltFreeStylesheet(m_stylesheet_xsp);
-
m_stylesheet_xsp = xsltParseStylesheetFile((const xmlChar*)
stylesheet_name);
+#endif
m_stylesheet_offset = 0;
xfree(stylesheet_name);
{
m_parent->low_socket_close();
+#if HAVE_XSLT
if (m_stylesheet_xsp)
xsltFreeStylesheet(m_stylesheet_xsp);
m_stylesheet_xsp = xsltParseStylesheetFile((const xmlChar*)
stylesheet_name);
+#endif
m_stylesheet_offset = 0;
xfree(stylesheet_name);
&diagnostic, &num_diagnostic,
72, 0);
}
- // must have a query
- if (!srw_req->query.cql)
- {
- yaz_add_srw_diagnostic(odr_decode(),
- &diagnostic, &num_diagnostic,
- 7, "query");
- }
// sort unsupported
if (srw_req->sort_type != Z_SRW_sort_type_none)
{
void Yaz_Proxy::low_socket_close()
{
+#if WIN32
+#else
int i;
for (i = 0; i<NO_SPARE_SOLARIS_FD; i++)
if (m_lo_fd[i] >= 0)
::close(m_lo_fd[i]);
+#endif
}
void Yaz_Proxy::low_socket_open()
{
+#if WIN32
+#else
int i;
for (i = 0; i<NO_SPARE_SOLARIS_FD; i++)
m_lo_fd[i] = open("/dev/null", O_RDONLY);
+#endif
}
int Yaz_Proxy::server(const char *addr)
int r = Yaz_Z_Assoc::server(addr);
if (!r)
{
- yaz_log(LOG_LOG, "%sStarted proxy " VERSION " on %s", m_session_str, addr);
+ yaz_log(LOG_LOG, "%sStarted proxy "
+#ifdef VERSION
+ VERSION
+#endif
+ " on %s", m_session_str, addr);
timeout(1);
}
return r;