X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Ffilter_zoom.cpp;h=547c09fd6b38c5966ee4e2a2e11ef8f994f7df85;hb=411f35ac9662dde6a05046b5d9f96c333a6d903a;hp=c362c75029449a33d9a757e9ca8054da12adacc5;hpb=f929d1a69c318f165d73c9cb2646e899b4d3c31d;p=metaproxy-moved-to-github.git diff --git a/src/filter_zoom.cpp b/src/filter_zoom.cpp index c362c75..547c09f 100644 --- a/src/filter_zoom.cpp +++ b/src/filter_zoom.cpp @@ -92,6 +92,7 @@ namespace metaproxy_1 { SearchablePtr sptr; xsltStylesheetPtr xsp; std::string content_session_id; + bool enable_cproxy; public: Backend(SearchablePtr sptr); ~Backend(); @@ -129,7 +130,8 @@ namespace metaproxy_1 { char **addinfo, ODR odr, std::string authentication, - std::string proxy); + std::string proxy, + std::string realm); void prepare_elements(BackendPtr b, Odr_oid *preferredRecordSyntax, @@ -220,6 +222,7 @@ yf::Zoom::Backend::Backend(SearchablePtr ptr) : sptr(ptr) ZOOM_connection_save_apdu_wrbuf(m_connection, m_apdu_wrbuf); m_resultset = 0; xsp = 0; + enable_cproxy = true; } yf::Zoom::Backend::~Backend() @@ -665,7 +668,8 @@ bool yf::Zoom::Frontend::create_content_session(mp::Package &package, int *error, char **addinfo, ODR odr, std::string authentication, - std::string proxy) + std::string proxy, + std::string realm) { if (b->sptr->contentConnector.length()) { @@ -699,6 +703,8 @@ bool yf::Zoom::Frontend::create_content_session(mp::Package &package, wrbuf_printf(w, "auth: %s\n", authentication.c_str()); if (proxy.length()) wrbuf_printf(w, "proxy: %s\n", proxy.c_str()); + if (realm.length()) + wrbuf_printf(w, "realm: %s\n", realm.c_str()); fwrite(wrbuf_buf(w), 1, wrbuf_len(w), file); fclose(file); @@ -950,6 +956,7 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases( b->xsp = xsp; b->m_frontend_database = database; + b->enable_cproxy = param_nocproxy ? false : true; if (sptr->query_encoding.length()) b->set_option("rpnCharset", sptr->query_encoding); @@ -1052,11 +1059,12 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases( } package.log("zoom", YLOG_LOG, "url: %s", url.c_str()); b->connect(url, error, addinfo, odr); - if (*error == 0 && !param_nocproxy) + if (*error == 0 && b->enable_cproxy) create_content_session(package, b, error, addinfo, odr, content_authentication.length() ? content_authentication : authentication, - content_proxy.length() ? content_proxy : proxy); + content_proxy.length() ? content_proxy : proxy, + realm); if (*error == 0) m_backend = b; return b; @@ -1274,7 +1282,7 @@ Z_Records *yf::Zoom::Frontend::get_records(Package &package, } } - if (rec_buf) + if (rec_buf && b->enable_cproxy) { xmlDoc *doc = xmlParseMemory(rec_buf, rec_len); std::string res =