X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_virt_db.cpp;h=11799d4f1092c91dbaf5b22e84fc73676ba1ac50;hb=1fe3038c15740cf21a2eb7b00edad8d216384c2e;hp=6849917c79404f74ce107d32a6182cd52056348e;hpb=f3e215cc00b02e3d92016f095295af2ba4649e2f;p=metaproxy-moved-to-github.git diff --git a/src/filter_virt_db.cpp b/src/filter_virt_db.cpp index 6849917..11799d4 100644 --- a/src/filter_virt_db.cpp +++ b/src/filter_virt_db.cpp @@ -377,10 +377,20 @@ void yf::VirtualDB::Frontend::search(mp::Package &package, Z_APDU *apdu_req) package.session().close(); return; } - b->m_number_of_sets++; - m_sets[resultSetId] = VirtualDB::Set(b, backend_setname); - fixup_package(search_package, b); + Z_GDU *gdu = search_package.response().get(); + if (gdu && gdu->which == Z_GDU_Z3950 + && gdu->u.z3950->which == Z_APDU_searchResponse) + { + Z_SearchResponse *b_resp = gdu->u.z3950->u.searchResponse; + Z_Records *z_records = b_resp->records; + if (!z_records || (z_records && z_records->which == Z_Records_DBOSD)) + { + b->m_number_of_sets++; + m_sets[resultSetId] = VirtualDB::Set(b, backend_setname); + fixup_package(search_package, b); + } + } package.response() = search_package.response(); }