X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Ffilter_virt_db.cpp;h=4fc928c227eb7eb59afd348362dfdd6763ccf20b;hb=be1c305c90a134c7828505799b62f823e1e08859;hp=ad60d25caecb452e4fdb0fbd8d8c1ce1a3b0d2e0;hpb=a1ef872694c141f21afdbb3e0798b60fc1421429;p=metaproxy-moved-to-github.git diff --git a/src/filter_virt_db.cpp b/src/filter_virt_db.cpp index ad60d25..4fc928c 100644 --- a/src/filter_virt_db.cpp +++ b/src/filter_virt_db.cpp @@ -1,4 +1,4 @@ -/* $Id: filter_virt_db.cpp,v 1.30 2006-01-17 13:54:54 adam Exp $ +/* $Id: filter_virt_db.cpp,v 1.31 2006-01-17 16:45:49 adam Exp $ Copyright (c) 2005, Index Data. %LICENSE% @@ -195,24 +195,24 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::init_backend( init_package.request() = init_apdu; init_package.move(b->m_route); // sending init - - if (init_package.session().is_closed()) - { - error_code = YAZ_BIB1_DATABASE_UNAVAILABLE; - // addinfo = database; - BackendPtr null; - return null; - } + Z_GDU *gdu = init_package.response().get(); // we hope to get an init response if (gdu && gdu->which == Z_GDU_Z3950 && gdu->u.z3950->which == Z_APDU_initResponse) { - if (ODR_MASK_GET(gdu->u.z3950->u.initResponse->options, - Z_Options_namedResultSets)) + Z_InitResponse *res = gdu->u.z3950->u.initResponse; + if (ODR_MASK_GET(res->options, Z_Options_namedResultSets)) { b->m_named_result_sets = true; } + std::cout << "GOT INIT res=" << *res->result << "\n"; + if (!*res->result) + { + yp2::util::get_init_diagnostics(res, error_code, addinfo); + BackendPtr null; + return null; + } } else { @@ -221,6 +221,14 @@ yf::Virt_db::BackendPtr yf::Virt_db::Frontend::init_backend( BackendPtr null; return null; } + if (init_package.session().is_closed()) + { + error_code = YAZ_BIB1_DATABASE_UNAVAILABLE; + // addinfo = database; + BackendPtr null; + return null; + } + m_backend_list.push_back(b); return b; }