X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_sru_to_z3950.cpp;h=93196e1f0f6442016f28d0bd2eb98985645bab9f;hb=dc0a7b40ef2cc8138c93e078dd8c34de64460ebe;hp=8c18dabc126a1ec6af60c910fb5473b0a8293c71;hpb=1cdd720a9a3ba872aa092c80b28413d8b2579eed;p=metaproxy-moved-to-github.git
diff --git a/src/filter_sru_to_z3950.cpp b/src/filter_sru_to_z3950.cpp
index 8c18dab..93196e1 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;
@@ -230,7 +231,10 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req)
else if (!strcmp(arg->name, "x-log-enable"))
{
if (*arg->value == '1')
+ {
+ enable_package_log = true;
package.log_enable();
+ }
}
assert(sru_pdu_req);
@@ -293,20 +297,22 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req)
YAZ_SRW_UNSUPP_OPERATION, "unknown");
}
-
- std::string l;
- package.log_reset(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())
+ {
+ mp::wrbuf w;
+
+ wrbuf_puts(w, "\n");
+ wrbuf_xmlputs(w, l.c_str());
+ wrbuf_puts(w, "");
+
+ sru_pdu_res->extraResponseData_len = w.len();
+ sru_pdu_res->extraResponseData_buf =
+ odr_strdup(odr_en, wrbuf_cstr(w));
+ }
}
// build and send SRU response