X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_virt_db.cpp;h=b203a981d21f648bf12031e4cea3bd2796b4d2a2;hb=243611b36b287a460a5f124562492fe5c51311dd;hp=1ad040ca2323d89f08ebbf3f4cfcfdb8f4fbf957;hpb=63dda9fef8b647d491dd2baef8ec4f4f88ee1b11;p=metaproxy-moved-to-github.git diff --git a/src/filter_virt_db.cpp b/src/filter_virt_db.cpp index 1ad040c..b203a98 100644 --- a/src/filter_virt_db.cpp +++ b/src/filter_virt_db.cpp @@ -1,4 +1,4 @@ -/* $Id: filter_virt_db.cpp,v 1.26 2006-01-16 15:51:56 adam Exp $ +/* $Id: filter_virt_db.cpp,v 1.28 2006-01-16 17:03:09 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -72,7 +72,8 @@ namespace yp2 { BackendPtr lookup_backend_from_databases( std::list databases); BackendPtr create_backend_from_databases( - std::list databases); + std::list databases, + std::string &failing_database); BackendPtr init_backend(std::list database, Package &package, @@ -113,7 +114,7 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::lookup_backend_from_databases( } yf::Virt_db::BackendPtr yf::Virt_db::Frontend::create_backend_from_databases( - std::list databases) + std::list databases, std::string &failing_database) { BackendPtr b(new Backend); std::list::const_iterator db_it = databases.begin(); @@ -129,6 +130,7 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::create_backend_from_databases( map_it = m_p->m_maps.find(*db_it); if (map_it == m_p->m_maps.end()) // database not found { + failing_database = *db_it; BackendPtr ptr; return ptr; } @@ -156,11 +158,12 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::init_backend( std::list databases, Package &package, int &error_code, std::string &addinfo) { - BackendPtr b = create_backend_from_databases(databases); + std::string failing_database; + BackendPtr b = create_backend_from_databases(databases, failing_database); if (!b) { error_code = YAZ_BIB1_DATABASE_UNAVAILABLE; - // addinfo = database; + addinfo = failing_database; return b; } Package init_package(b->m_backend_session, package.origin()); @@ -467,8 +470,9 @@ void yf::Virt_db::Frontend::present(Package &package, Z_APDU *apdu_req) // sending present to backend Package present_package(*id, package.origin()); present_package.copy_filter(package); + + req->resultSetId = odr_strdup(odr, sets_it->second.m_setname.c_str()); - req->resultSetId = odr_strdup(odr, "default"); present_package.request() = yazpp_1::GDU(apdu_req); present_package.move();