+ }
+ id = new yp2::Session(sets_it->second.m_backend_session);
+ }
+ ODR odr = odr_createmem(ODR_ENCODE);
+
+ // 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);
+
+ odr_destroy(odr);
+
+ present_package.move();
+
+ if (present_package.session().is_closed())
+ {
+ ODR odr = odr_createmem(ODR_ENCODE);
+ 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;
+
+ odr_destroy(odr);
+
+ 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);