X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=src%2Fyaz-proxy-config.cpp;h=7fe6204d2950f97b4064da647cebd45b00aca824;hp=e6642a5a40f665e66dfbdb0ae47f4955e93ee407;hb=2cf9ce96410e7430b86ed8cabd1d20caca1b44c3;hpb=c990b5f85d736a35132c6902ba8b2966d5146360 diff --git a/src/yaz-proxy-config.cpp b/src/yaz-proxy-config.cpp index e6642a5..7fe6204 100644 --- a/src/yaz-proxy-config.cpp +++ b/src/yaz-proxy-config.cpp @@ -1,5 +1,5 @@ -/* $Id: yaz-proxy-config.cpp,v 1.33 2006-06-28 23:38:23 adam Exp $ - Copyright (c) 1998-2006, Index Data. +/* $Id: yaz-proxy-config.cpp,v 1.37 2007-05-08 12:05:09 adam Exp $ + Copyright (c) 1998-2007, Index Data. This file is part of the yazproxy. @@ -23,6 +23,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include "proxyp.h" +#include class Yaz_ProxyConfigP { friend class Yaz_ProxyConfig; @@ -31,7 +32,7 @@ class Yaz_ProxyConfigP { int mycmp(const char *hay, const char *item, size_t len); int match_list(int v, const char *m); int atoi_l(const char **cp); -#if HAVE_XSLT +#if YAZ_HAVE_XSLT void load_modules(void); int check_schema(xmlNodePtr ptr, Z_RecordComposition *comp, const char *schema_identifier); @@ -41,6 +42,7 @@ class Yaz_ProxyConfigP { int *limit_bw, int *limit_pdu, int *limit_req, int *limit_search, int *target_idletime, int *client_idletime, + int *max_sockets, int *keepalive_limit_bw, int *keepalive_limit_pdu, int *pre_init, const char **cql2rpn, const char **negotiation_charset, @@ -70,7 +72,7 @@ class Yaz_ProxyConfigP { Yaz_ProxyConfigP::Yaz_ProxyConfigP() : m_modules() { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT m_docPtr = 0; m_proxyPtr = 0; #endif @@ -78,7 +80,7 @@ Yaz_ProxyConfigP::Yaz_ProxyConfigP() : m_modules() Yaz_ProxyConfigP::~Yaz_ProxyConfigP() { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT if (m_docPtr) xmlFreeDoc(m_docPtr); #endif @@ -94,7 +96,7 @@ Yaz_ProxyConfig::~Yaz_ProxyConfig() delete m_cp; } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT void Yaz_ProxyConfigP::load_modules() { if (!m_proxyPtr) @@ -115,7 +117,7 @@ void Yaz_ProxyConfigP::load_modules() int Yaz_ProxyConfig::read_xml(const char *fname) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlDocPtr ndoc = xmlParseFile(fname); if (!ndoc) @@ -150,7 +152,7 @@ int Yaz_ProxyConfig::read_xml(const char *fname) #endif } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT const char *Yaz_ProxyConfigP::get_text(xmlNodePtr ptr) { for(ptr = ptr->children; ptr; ptr = ptr->next) @@ -180,7 +182,7 @@ void Yaz_ProxyConfigP::get_period(xmlNodePtr ptr, int *period) } #endif -#if HAVE_XSLT +#if YAZ_HAVE_XSLT void Yaz_ProxyConfigP::return_limit(xmlNodePtr ptr, int *limit_bw, int *limit_pdu, @@ -221,7 +223,7 @@ void Yaz_ProxyConfigP::return_limit(xmlNodePtr ptr, } #endif -#if HAVE_XSLT +#if YAZ_HAVE_XSLT void Yaz_ProxyConfigP::return_target_info(xmlNodePtr ptr, const char **url, int *limit_bw, @@ -230,6 +232,7 @@ void Yaz_ProxyConfigP::return_target_info(xmlNodePtr ptr, int *limit_search, int *target_idletime, int *client_idletime, + int *max_sockets, int *keepalive_limit_bw, int *keepalive_limit_pdu, int *pre_init, @@ -296,6 +299,15 @@ void Yaz_ProxyConfigP::return_target_info(xmlNodePtr ptr, } } if (ptr->type == XML_ELEMENT_NODE + && !strcmp((const char *) ptr->name, "max-sockets")) + { + const char *t = get_text(ptr); + if (t && max_sockets) + { + *max_sockets = atoi(t); + } + } + if (ptr->type == XML_ELEMENT_NODE && !strcmp((const char *) ptr->name, "cql2rpn")) { const char *t = get_text(ptr); @@ -368,7 +380,7 @@ int Yaz_ProxyConfigP::match_list(int v, const char *m) return 0; } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int Yaz_ProxyConfigP::check_type_1_attributes(ODR odr, xmlNodePtr ptrl, Z_AttributeList *attrs, char **addinfo) @@ -441,7 +453,7 @@ int Yaz_ProxyConfigP::check_type_1_attributes(ODR odr, xmlNodePtr ptrl, } #endif -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int Yaz_ProxyConfigP::check_type_1_structure(ODR odr, xmlNodePtr ptr, Z_RPNStructure *q, char **addinfo) @@ -467,7 +479,7 @@ int Yaz_ProxyConfigP::check_type_1_structure(ODR odr, xmlNodePtr ptr, } #endif -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int Yaz_ProxyConfigP::check_type_1(ODR odr, xmlNodePtr ptr, Z_RPNQuery *query, char **addinfo) { @@ -479,7 +491,7 @@ int Yaz_ProxyConfigP::check_type_1(ODR odr, xmlNodePtr ptr, Z_RPNQuery *query, int Yaz_ProxyConfig::check_query(ODR odr, const char *name, Z_Query *query, char **addinfo) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; ptr = m_cp->find_target_node(name, 0); @@ -492,7 +504,7 @@ int Yaz_ProxyConfig::check_query(ODR odr, const char *name, Z_Query *query, return 0; } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int Yaz_ProxyConfigP::check_schema(xmlNodePtr ptr, Z_RecordComposition *comp, const char *schema_identifier) { @@ -572,7 +584,7 @@ const char *Yaz_ProxyConfig::check_mime_type(const char *path) void Yaz_ProxyConfig::target_authentication(const char *name, ODR odr, Z_InitRequest *req) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr = m_cp->find_target_node(name, 0); if (!ptr) return ; @@ -645,7 +657,7 @@ int Yaz_ProxyConfig::client_authentication(const char *name, const char *peer_IP) { int ret = YAZPROXY_RET_NOT_ME; -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; ptr = m_cp->find_target_node(name, 0); if (!ptr) @@ -682,7 +694,7 @@ int Yaz_ProxyConfig::global_client_authentication(const char *user, const char *peer_IP) { int ret = YAZPROXY_RET_NOT_ME; -#if HAVE_XSLT +#if YAZ_HAVE_XSLT if (!m_cp->m_proxyPtr) return 1; xmlNodePtr ptr; @@ -754,7 +766,7 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, xfree (*usemarcon_ini_stage2); *usemarcon_ini_stage2 = 0; } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int syntax_has_matched = 0; xmlNodePtr ptr; @@ -822,8 +834,10 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, } else if (syntax) { - int match_oid[OID_SIZE]; - oid_name_to_oid(CLASS_RECSYN, match_type, match_oid); + Odr_oid *match_oid + = yaz_string_to_oid_odr(yaz_oid_std(), + CLASS_RECSYN, match_type, + odr); if (oid_oidcmp(match_oid, syntax) == 0) match = 1; } @@ -877,8 +891,8 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, return 25; if (syntax) { - char dotoid_str[100]; - oid_to_dotstring(syntax, dotoid_str); + char dotoid_str[OID_STR_MAX]; + oid_oid_to_dotstring(syntax, dotoid_str); *addinfo = odr_strdup(odr, dotoid_str); } return atoi(match_error); @@ -891,7 +905,7 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, return 0; } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr Yaz_ProxyConfigP::find_target_db(xmlNodePtr ptr, const char *db) { xmlNodePtr dptr; @@ -979,6 +993,7 @@ int Yaz_ProxyConfig::get_target_no(int no, int *limit_search, int *target_idletime, int *client_idletime, + int *max_sockets, int *max_clients, int *keepalive_limit_bw, int *keepalive_limit_pdu, @@ -990,7 +1005,7 @@ int Yaz_ProxyConfig::get_target_no(int no, const char **target_charset, const char **default_client_query_charset) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; if (!m_cp->m_proxyPtr) return 0; @@ -1015,6 +1030,7 @@ int Yaz_ProxyConfig::get_target_no(int no, limit_bw, limit_pdu, limit_req, limit_search, target_idletime, client_idletime, + max_sockets, keepalive_limit_bw, keepalive_limit_pdu, pre_init, cql2rpn, negotiation_charset, negotiation_lang, target_charset, @@ -1036,7 +1052,7 @@ int Yaz_ProxyConfigP::mycmp(const char *hay, const char *item, size_t len) int Yaz_ProxyConfig::get_file_access_info(const char *path) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; if (!m_cp->m_proxyPtr) return 0; @@ -1066,7 +1082,7 @@ void Yaz_ProxyConfig::get_generic_info(int *log_mask, *max_connect = 0; *limit_connect = 0; *num_msg_threads = 0; -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; if (!m_cp->m_proxyPtr) return; @@ -1168,7 +1184,7 @@ void Yaz_ProxyConfig::get_generic_info(int *log_mask, #endif } -#if HAVE_XSLT +#if YAZ_HAVE_XSLT int Yaz_ProxyConfigP::get_explain_ptr(const char *host, const char *db, xmlNodePtr *ptr_target, xmlNodePtr *ptr_explain) @@ -1225,7 +1241,7 @@ int Yaz_ProxyConfigP::get_explain_ptr(const char *host, const char *db, const char *Yaz_ProxyConfig::get_explain_name(const char *db, const char **backend_db) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr_target, ptr_explain; if (m_cp->get_explain_ptr(0, db, &ptr_target, &ptr_explain) && ptr_target) @@ -1263,7 +1279,7 @@ const char *Yaz_ProxyConfig::get_explain_name(const char *db, char *Yaz_ProxyConfig::get_explain_doc(ODR odr, const char *name, const char *db, int *len) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr_target, ptr_explain; if (m_cp->get_explain_ptr(0 /* host */, db, &ptr_target, &ptr_explain)) { @@ -1294,6 +1310,7 @@ void Yaz_ProxyConfig::get_target_info(const char *name, int *limit_search, int *target_idletime, int *client_idletime, + int *max_sockets, int *max_clients, int *keepalive_limit_bw, int *keepalive_limit_pdu, @@ -1304,7 +1321,7 @@ void Yaz_ProxyConfig::get_target_info(const char *name, const char **target_charset, const char **default_client_query_charset) { -#if HAVE_XSLT +#if YAZ_HAVE_XSLT xmlNodePtr ptr; if (!m_cp->m_proxyPtr) { @@ -1338,6 +1355,7 @@ void Yaz_ProxyConfig::get_target_info(const char *name, m_cp->return_target_info(ptr, url, limit_bw, limit_pdu, limit_req, limit_search, target_idletime, client_idletime, + max_sockets, keepalive_limit_bw, keepalive_limit_pdu, pre_init, cql2rpn, negotiation_charset, negotiation_lang,