X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_sru_to_z3950.cpp;h=2b62986299271a2e3f38014297f23668d58f6d2d;hb=a83814901948c8dc8d6d3da35e413dad5bf03400;hp=62a542ba7f666a8171c6e7e0e43461605b94fd27;hpb=7e2a07a78f7bf299a40b04bda27e9bd6f3ae05b1;p=metaproxy-moved-to-github.git
diff --git a/src/filter_sru_to_z3950.cpp b/src/filter_sru_to_z3950.cpp
index 62a542b..2b62986 100644
--- a/src/filter_sru_to_z3950.cpp
+++ b/src/filter_sru_to_z3950.cpp
@@ -1,5 +1,5 @@
/* This file is part of Metaproxy.
- Copyright (C) 2005-2011 Index Data
+ Copyright (C) 2005-2012 Index Data
Metaproxy is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
@@ -211,6 +211,7 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req)
return;
}
+ bool enable_package_log = false;
std::string zurl;
Z_SRW_extra_arg *arg;
@@ -227,7 +228,14 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req)
{
package.origin().set_custom_session(arg->value);
}
-
+ else if (!strcmp(arg->name, "x-log-enable"))
+ {
+ if (*arg->value == '1')
+ {
+ enable_package_log = true;
+ package.log_enable();
+ }
+ }
assert(sru_pdu_req);
// filter acts as sink for SRU explain requests
@@ -289,20 +297,23 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req)
YAZ_SRW_UNSUPP_OPERATION, "unknown");
}
-
- std::string l;
- package.reset_log(l);
- if (l.length())
+ if (enable_package_log)
{
- WRBUF w = wrbuf_alloc();
-
- wrbuf_puts(w, "\n");
- wrbuf_xmlputs(w, l.c_str());
- wrbuf_puts(w, "");
-
- sru_pdu_res->extraResponseData_len = wrbuf_len(w);
- sru_pdu_res->extraResponseData_buf = odr_strdup(odr_en, wrbuf_cstr(w));
- wrbuf_destroy(w);
+ std::string l;
+ package.log_reset(l);
+ if (l.length())
+ {
+ WRBUF w = wrbuf_alloc();
+
+ wrbuf_puts(w, "\n");
+ wrbuf_xmlputs(w, l.c_str());
+ wrbuf_puts(w, "");
+
+ sru_pdu_res->extraResponseData_len = wrbuf_len(w);
+ sru_pdu_res->extraResponseData_buf =
+ odr_strdup(odr_en, wrbuf_cstr(w));
+ wrbuf_destroy(w);
+ }
}
// build and send SRU response