First go at Package logger
[metaproxy-moved-to-github.git] / src / filter_sru_to_z3950.cpp
index cf81f0b..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);
@@ -465,6 +485,9 @@ bool yf::SRUtoZ3950::Impl::z3950_search_request(mp::Package &package,
     Z_APDU *apdu = zget_APDU(odr_en, Z_APDU_searchRequest);
     Z_SearchRequest *z_searchRequest = apdu->u.searchRequest;
 
+    // RecordSyntax will always be XML
+    z_searchRequest->preferredRecordSyntax
+        = odr_oiddup(odr_en, yaz_oid_recsyn_xml);
 
     if (!mp_util::set_databases_from_zurl(odr_en, zurl,
                                           &z_searchRequest->num_databaseNames,