+ if (map_it != m_backend_list.end())
+ b = *map_it;
+ if (!b) // no backend yet. Must create a new one
+ {
+ int error_code;
+ std::string addinfo;
+ b = init_backend(databases, package, error_code, addinfo);
+ if (!b)
+ {
+ // did not get a backend (unavailable somehow?)
+ Z_APDU *apdu =
+ odr.create_scanResponse(
+ apdu_req, error_code, addinfo.c_str());
+ package.response() = apdu;
+
+ return;
+ }
+ }
+ // sending scan to backend
+ Package scan_package(b->m_backend_session, package.origin());
+
+ scan_package.copy_filter(package);
+
+ // pick first targets spec and move the databases from it ..
+ std::list<std::string>::const_iterator t_it = b->m_targets.begin();
+ if (t_it != b->m_targets.end())
+ {
+ if (!yp2::util::set_databases_from_zurl(odr, *t_it,
+ &req->num_databaseNames,
+ &req->databaseNames));
+ }
+ scan_package.request() = yazpp_1::GDU(apdu_req);
+
+ scan_package.move(b->m_route);
+
+ if (scan_package.session().is_closed())
+ {
+ package.response() = scan_package.response();
+ package.session().close();
+ return;
+ }
+ package.response() = scan_package.response();
+}
+
+
+void yf::Virt_db::add_map_db2targets(std::string db,
+ std::list<std::string> targets,
+ std::string route)
+{
+ m_p->m_maps[db] = Virt_db::Map(targets, route);