X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_sru_to_z3950.cpp;h=62a542ba7f666a8171c6e7e0e43461605b94fd27;hb=7e2a07a78f7bf299a40b04bda27e9bd6f3ae05b1;hp=140b346e03f39616ef2b1a52036c6f8a5efe9c56;hpb=990c610a6a791fff480ba1053cea487901dd476c;p=metaproxy-moved-to-github.git diff --git a/src/filter_sru_to_z3950.cpp b/src/filter_sru_to_z3950.cpp index 140b346..62a542b 100644 --- a/src/filter_sru_to_z3950.cpp +++ b/src/filter_sru_to_z3950.cpp @@ -223,6 +223,10 @@ void yf::SRUtoZ3950::Impl::sru(mp::Package &package, Z_GDU *zgdu_req) { package.origin().set_max_sockets(atoi(arg->value)); } + else if (!strcmp(arg->name, "x-session-id")) + { + package.origin().set_custom_session(arg->value); + } assert(sru_pdu_req); @@ -285,6 +289,22 @@ 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()) + { + 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 mp_util::build_sru_response(package, odr_en, soap, sru_pdu_res, charset, stylesheet);