From: Adam Dickmeiss Date: Tue, 12 Mar 2013 18:05:40 +0000 (+0100) Subject: Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/metaproxy X-Git-Tag: v1.3.54~6^2 X-Git-Url: http://git.indexdata.com/?a=commitdiff_plain;h=6e9a17fa34cc226ffcb870b37229af25beefbc35;hp=cad85a512ba53d408d7bede0a752474d8d648dc8;p=metaproxy-moved-to-github.git Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/metaproxy --- diff --git a/doc/book.xml b/doc/book.xml index cdc545c..3d1587b 100644 --- a/doc/book.xml +++ b/doc/book.xml @@ -598,7 +598,7 @@ USEMARCON - Unsupported + Supported with record_transform Supported diff --git a/doc/log.xml b/doc/log.xml index 9d18763..80708cd 100644 --- a/doc/log.xml +++ b/doc/log.xml @@ -134,6 +134,15 @@ + line + + + Simple one-line log message indicating the most important + things from a request and response. + Available from version 1.3.38 and later. + + + diff --git a/etc/config3.xml b/etc/config3.xml index 502aaa8..6238126 100644 --- a/etc/config3.xml +++ b/etc/config3.xml @@ -11,7 +11,7 @@ F - + true @@ -56,6 +56,7 @@ M + @@ -63,7 +64,7 @@ B - + 30 diff --git a/src/filter_multi.cpp b/src/filter_multi.cpp index baadef4..b1452c3 100644 --- a/src/filter_multi.cpp +++ b/src/filter_multi.cpp @@ -104,8 +104,7 @@ namespace metaproxy_1 { void close(Package &package); void search(Package &package, Z_APDU *apdu); void present(Package &package, Z_APDU *apdu); - void scan1(Package &package, Z_APDU *apdu); - void scan2(Package &package, Z_APDU *apdu); + void scan(Package &package, Z_APDU *apdu); void relay_apdu(Package &package, Z_APDU *apdu); void record_diagnostics(Z_Records *records, Z_DiagRecs * &z_diag, @@ -617,33 +616,27 @@ void yf::Multi::Frontend::search(mp::Package &package, Z_APDU *apdu_req) // create search request Z_SearchRequest *req = apdu_req->u.searchRequest; - // save these for later - Odr_int smallSetUpperBound = *req->smallSetUpperBound; - Odr_int largeSetLowerBound = *req->largeSetLowerBound; - Odr_int mediumSetPresentNumber = *req->mediumSetPresentNumber; - - // they are altered now - to disable piggyback - *req->smallSetUpperBound = 0; - *req->largeSetLowerBound = 1; - *req->mediumSetPresentNumber = 0; - - int default_num_db = req->num_databaseNames; - char **default_db = req->databaseNames; - std::list::const_iterator bit; for (bit = m_backend_list.begin(); bit != m_backend_list.end(); bit++) { PackagePtr p = (*bit)->m_package; + yazpp_1::GDU gdu1(apdu_req); mp::odr odr; + Z_SearchRequest *req1 = gdu1.get()->u.z3950->u.searchRequest; + + // they are altered now - to disable piggyback + *req1->smallSetUpperBound = 0; + *req1->largeSetLowerBound = 1; + *req1->mediumSetPresentNumber = 0; if (!mp::util::set_databases_from_zurl(odr, (*bit)->m_vhost, - &req->num_databaseNames, - &req->databaseNames)) + &req1->num_databaseNames, + &req1->databaseNames)) { - req->num_databaseNames = default_num_db; - req->databaseNames = default_db; + req1->num_databaseNames = req->num_databaseNames; + req1->databaseNames = req->databaseNames; } - p->request() = apdu_req; + p->request() = gdu1; p->copy_filter(package); } multi_move(m_backend_list); @@ -685,7 +678,7 @@ void yf::Multi::Frontend::search(mp::Package &package, Z_APDU *apdu_req) Z_APDU *f_apdu = odr.create_searchResponse(apdu_req, 0, 0); Z_SearchResponse *f_resp = f_apdu->u.searchResponse; - yaz_log(YLOG_LOG, "no_successful=%d is_closed=%s hide_errors=%s", + yaz_log(YLOG_DEBUG, "no_successful=%d is_closed=%s hide_errors=%s", no_successful, close_p ? "true" : "false", m_p->m_hide_errors ? "true" : "false"); @@ -716,9 +709,9 @@ void yf::Multi::Frontend::search(mp::Package &package, Z_APDU *apdu_req) m_sets[resultSet.m_setname] = resultSet; Odr_int number; - mp::util::piggyback(smallSetUpperBound, - largeSetLowerBound, - mediumSetPresentNumber, + mp::util::piggyback(*req->smallSetUpperBound, + *req->largeSetLowerBound, + *req->mediumSetPresentNumber, 0, 0, result_set_size, number, 0); @@ -790,7 +783,7 @@ void yf::Multi::Frontend::present(mp::Package &package, Z_APDU *apdu_req) std::list::const_iterator jit; for (jit = jobs.begin(); jit != jobs.end(); jit++) { - yaz_log(YLOG_LOG, "job pos=%d", jit->m_pos); + yaz_log(YLOG_DEBUG, "job pos=%d", jit->m_pos); } } @@ -942,63 +935,6 @@ void yf::Multi::Frontend::present(mp::Package &package, Z_APDU *apdu_req) package.response() = f_apdu; } -void yf::Multi::Frontend::scan1(mp::Package &package, Z_APDU *apdu_req) -{ - if (m_backend_list.size() > 1) - { - mp::odr odr; - Z_APDU *f_apdu = - odr.create_scanResponse( - apdu_req, YAZ_BIB1_COMBI_OF_SPECIFIED_DATABASES_UNSUPP, 0); - package.response() = f_apdu; - return; - } - Z_ScanRequest *req = apdu_req->u.scanRequest; - - int default_num_db = req->num_databaseNames; - char **default_db = req->databaseNames; - - std::list::const_iterator bit; - for (bit = m_backend_list.begin(); bit != m_backend_list.end(); bit++) - { - PackagePtr p = (*bit)->m_package; - mp::odr odr; - - if (!mp::util::set_databases_from_zurl(odr, (*bit)->m_vhost, - &req->num_databaseNames, - &req->databaseNames)) - { - req->num_databaseNames = default_num_db; - req->databaseNames = default_db; - } - p->request() = apdu_req; - p->copy_filter(package); - } - multi_move(m_backend_list); - - for (bit = m_backend_list.begin(); bit != m_backend_list.end(); bit++) - { - PackagePtr p = (*bit)->m_package; - - if (p->session().is_closed()) // if any backend closes, close frontend - package.session().close(); - - Z_GDU *gdu = p->response().get(); - if (gdu && gdu->which == Z_GDU_Z3950 && gdu->u.z3950->which == - Z_APDU_scanResponse) - { - package.response() = p->response(); - break; - } - else - { - // if any target does not return scan response - return that - package.response() = p->response(); - return; - } - } -} - bool yf::Multi::ScanTermInfo::operator < (const ScanTermInfo &k) const { return m_norm_term < k.m_norm_term; @@ -1057,27 +993,26 @@ void yf::Multi::Frontend::relay_apdu(mp::Package &package, Z_APDU *apdu_req) } -void yf::Multi::Frontend::scan2(mp::Package &package, Z_APDU *apdu_req) +void yf::Multi::Frontend::scan(mp::Package &package, Z_APDU *apdu_req) { Z_ScanRequest *req = apdu_req->u.scanRequest; - int default_num_db = req->num_databaseNames; - char **default_db = req->databaseNames; - std::list::const_iterator bit; for (bit = m_backend_list.begin(); bit != m_backend_list.end(); bit++) { PackagePtr p = (*bit)->m_package; + yazpp_1::GDU gdu1(apdu_req); mp::odr odr; + Z_ScanRequest *req1 = gdu1.get()->u.z3950->u.scanRequest; if (!mp::util::set_databases_from_zurl(odr, (*bit)->m_vhost, - &req->num_databaseNames, - &req->databaseNames)) + &req1->num_databaseNames, + &req1->databaseNames)) { - req->num_databaseNames = default_num_db; - req->databaseNames = default_db; + req1->num_databaseNames = req->num_databaseNames; + req1->databaseNames = req->databaseNames; } - p->request() = apdu_req; + p->request() = gdu1; p->copy_filter(package); } multi_move(m_backend_list); @@ -1322,7 +1257,7 @@ void yf::Multi::process(mp::Package &package) const } else if (apdu->which == Z_APDU_scanRequest) { - f->scan2(package, apdu); + f->scan(package, apdu); } else if (apdu->which == Z_APDU_close) {