-/* $Id: filter_multi.cpp,v 1.20 2006-05-16 11:53:53 adam Exp $
- Copyright (c) 2005-2006, Index Data.
+/* $Id: filter_multi.cpp,v 1.26 2007-03-07 22:50:12 adam Exp $
+ Copyright (c) 2005-2007, Index Data.
-%LICENSE%
+ See the LICENSE file for details
*/
#include "config.hpp"
std::list<std::string> targets;
- mp::util::get_vhost_otherinfo(&req->otherInfo, false, targets);
+ mp::util::get_vhost_otherinfo(req->otherInfo, targets);
if (targets.size() < 1)
{
odr_malloc(odr, sizeof(Z_NamePlusRecord *) * nprl->num_records);
int i = 0;
std::list<Multi::FrontendSet::PresentJob>::const_iterator jit;
- for (jit = jobs.begin(); jit != jobs.end(); jit++)
+ for (jit = jobs.begin(); jit != jobs.end(); jit++, i++)
{
PackagePtr p = jit->m_backend->m_package;
Z_APDU *b_apdu = gdu->u.z3950;
Z_PresentResponse *b_resp = b_apdu->u.presentResponse;
- nprl->records[i++] =
- b_resp->records->u.databaseOrSurDiagnostics->
- records[jit->m_inside_pos];
+ nprl->records[i] = (Z_NamePlusRecord*)
+ odr_malloc(odr, sizeof(Z_NamePlusRecord));
+ int inside_pos = jit->m_inside_pos;
+ if (inside_pos >= b_resp->records->
+ u.databaseOrSurDiagnostics->num_records)
+ break;
+ *nprl->records[i] = *b_resp->records->
+ u.databaseOrSurDiagnostics->records[inside_pos];
+ nprl->records[i]->databaseName =
+ odr_strdup(odr, jit->m_backend->m_vhost.c_str());
}
+ nprl->num_records = i; // usually same as jobs.size();
*f_resp->nextResultSetPosition = start + i;
*f_resp->numberOfRecordsReturned = i;
}