First go at Package logger
[metaproxy-moved-to-github.git] / src / filter_sru_to_z3950.cpp
index a95f40b..62a542b 100644 (file)
@@ -116,7 +116,8 @@ yf::SRUtoZ3950::~SRUtoZ3950()
 {  // must have a destructor because of boost::scoped_ptr
 }
 
-void yf::SRUtoZ3950::configure(const xmlNode *xmlnode, bool test_only)
+void yf::SRUtoZ3950::configure(const xmlNode *xmlnode, bool test_only,
+                               const char *path)
 {
     m_p->configure(xmlnode);
 }
@@ -222,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);
 
@@ -284,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);
@@ -464,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,