X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_sru_to_z3950.cpp;h=2b62986299271a2e3f38014297f23668d58f6d2d;hb=c223dd8029f912e3b610941f4af0be67a0269b71;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