- Sets_it sets_it = it->second.m_sets.find(resultSetId);
- if (sets_it == it->second.m_sets.end())
- {
- Z_APDU *apdu = zget_APDU(odr, Z_APDU_presentResponse);
-
- Z_Records *rec = (Z_Records *) odr_malloc(odr, sizeof(Z_Records));
- apdu->u.presentResponse->records = rec;
- rec->which = Z_Records_NSD;
- rec->u.nonSurrogateDiagnostic =
- zget_DefaultDiagFormat(
- odr,
- YAZ_BIB1_SPECIFIED_RESULT_SET_DOES_NOT_EXIST,
- resultSetId.c_str());
- package.response() = apdu;
-
- return;
- }
- id = new yp2::Session(sets_it->second.m_backend_session);
- }
-
- // sending present to backend
- Package present_package(*id, package.origin());
- present_package.copy_filter(package);
-
- req->resultSetId = odr_strdup(odr, "default");
- present_package.request() = yazpp_1::GDU(apdu);
-
- present_package.move();
-
- if (present_package.session().is_closed())
- {
- Z_APDU *apdu = zget_APDU(odr, Z_APDU_presentResponse);
-
- Z_Records *rec = (Z_Records *) odr_malloc(odr, sizeof(Z_Records));
- apdu->u.presentResponse->records = rec;
- rec->which = Z_Records_NSD;
- rec->u.nonSurrogateDiagnostic =
- zget_DefaultDiagFormat(
- odr,
- YAZ_BIB1_RESULT_SET_NO_LONGER_EXISTS_UNILATERALLY_DELETED_BY_,
- resultSetId.c_str());
- package.response() = apdu;
-
- boost::mutex::scoped_lock lock(m_sessions_mutex);
- Ses_it it = m_sessions.find(package.session());
- if (it != m_sessions.end())
- it->second.m_sets.erase(resultSetId);