-/* $Id: filter_virt_db.cpp,v 1.3 2005-10-25 11:48:30 adam Exp $
+/* $Id: filter_virt_db.cpp,v 1.6 2005-10-25 21:32:01 adam Exp $
Copyright (c) 2005, Index Data.
%LICENSE%
{
boost::mutex::scoped_lock lock(m_sessions_mutex);
- Ses_it it = m_sessions.find(package.session());
-
- if (it != m_sessions.end())
- m_sessions.erase(it);
+ m_sessions.erase(package.session());
}
void yf::Virt_db::Rep::present(Package &package, Z_APDU *apdu, bool &move_later){
Z_APDU *apdu = zget_APDU(odr, Z_APDU_close);
*apdu->u.close->closeReason = Z_Close_protocolError;
+ apdu->u.close->diagnosticInformation =
+ odr_strdup(odr, "no session for present request");
package.response() = apdu;
package.session().close();
odr_destroy(odr);
+ assert(false);
return;
}
if (it->second.m_use_vhost)
odr_destroy(odr);
return;
}
- id = new yp2::Session(it->second.m_session);
+ id = new yp2::Session(sets_it->second.m_session);
}
ODR odr = odr_createmem(ODR_ENCODE);
Z_APDU *apdu = zget_APDU(odr, Z_APDU_close);
*apdu->u.close->closeReason = Z_Close_protocolError;
+ apdu->u.close->diagnosticInformation =
+ odr_strdup(odr, "no session for search request");
package.response() = apdu;
package.session().close();
int i;
static const int masks[] = {
- Z_Options_search, Z_Options_present, Z_Options_namedResultSets, 0
+ Z_Options_search, Z_Options_present, Z_Options_namedResultSets, -1
};
- for (i = 0; masks[i]; i++)
+ for (i = 0; masks[i] != -1; i++)
if (ODR_MASK_GET(req->options, masks[i]))
ODR_MASK_SET(resp->options, masks[i]);
+ static const int versions[] = {
+ Z_ProtocolVersion_1,
+ Z_ProtocolVersion_2,
+ Z_ProtocolVersion_3,
+ -1
+ };
+ for (i = 0; versions[i] != -1; i++)
+ if (ODR_MASK_GET(req->protocolVersion, versions[i]))
+ ODR_MASK_SET(resp->protocolVersion, versions[i]);
+ else
+ break;
+
package.response() = apdu;
odr_destroy(odr);
Z_APDU *apdu = zget_APDU(odr, Z_APDU_close);
*apdu->u.close->closeReason = Z_Close_protocolError;
+
+ apdu->u.close->diagnosticInformation =
+ odr_strdup(odr, "unsupported APDU in filter_virt_db");
package.response() = apdu;
package.session().close();