First go at Package logger
[metaproxy-moved-to-github.git] / src / filter_sru_to_z3950.cpp
index 140b346..62a542b 100644 (file)
@@ -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, "<log>\n");
+        wrbuf_xmlputs(w, l.c_str());
+        wrbuf_puts(w, "</log>");
+        
+        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);