#include <yaz/diagbib1.h>
#include <yaz/match_glob.h>
#include <yaz/log.h>
+#include <yaz/oid_db.h>
#include <map>
#include <iostream>
Z_GDU *org_gdu = m_init_gdu.get();
Z_InitRequest *org_init = org_gdu->u.z3950->u.initRequest;
+
+ const char *peer_name = yaz_oi_get_string_oid(
+ &org_init->otherInfo, yaz_oid_userinfo_client_ip, 1, 0);
+ if (peer_name)
+ yaz_oi_set_string_oid(&init_apdu->u.initRequest->otherInfo, odr,
+ yaz_oid_userinfo_client_ip, 1, peer_name);
+
req->idAuthentication = org_init->idAuthentication;
req->implementationId = org_init->implementationId;
req->implementationName = org_init->implementationName;
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();
}