X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-proxy.cpp;h=266af40870887d8bcaac6d247c1cd8a52d6c2a03;hb=537088510b181d438eb4fcc102d4e4a80ecff966;hp=686541356c8a7ae2fb620fde23e82080997e4d7f;hpb=84a66ec6eb9b25953cbdcf61c97ecc57c45066c4;p=yazproxy-moved-to-github.git diff --git a/src/yaz-proxy.cpp b/src/yaz-proxy.cpp index 6865413..266af40 100644 --- a/src/yaz-proxy.cpp +++ b/src/yaz-proxy.cpp @@ -533,10 +533,8 @@ const char *Yaz_Proxy::load_balance(const char **url) } } int min_use = 100000; - int spare_for_min = 0; int max_spare = 0; const char *ret_min = 0; - const char *ret_spare = 0; for (i = 0; url[i]; i++) { yaz_log(YLOG_DEBUG, "%szurl=%s use=%d spare=%d", @@ -545,11 +543,9 @@ const char *Yaz_Proxy::load_balance(const char **url) { ret_min = url[i]; min_use = zurl_in_use[i]; - spare_for_min = zurl_in_spare[i]; } if (max_spare < zurl_in_spare[i]) { - ret_spare = url[i]; max_spare = zurl_in_spare[i]; } } @@ -807,18 +803,14 @@ Yaz_ProxyClient *Yaz_Proxy::get_client(Z_APDU *apdu, const char *cookie, return c; } } - else - { - - yaz_log(YLOG_LOG, "%sNEW %d %s", - m_session_str, parent->m_seqno, m_proxyTarget); - c = new Yaz_ProxyClient(m_PDU_Observable->clone(), parent); - c->m_next = parent->m_clientPool; - if (c->m_next) - c->m_next->m_prev = &c->m_next; - parent->m_clientPool = c; - c->m_prev = &parent->m_clientPool; - } + yaz_log(YLOG_LOG, "%sNEW %d %s", + m_session_str, parent->m_seqno, m_proxyTarget); + c = new Yaz_ProxyClient(m_PDU_Observable->clone(), parent); + c->m_next = parent->m_clientPool; + if (c->m_next) + c->m_next->m_prev = &c->m_next; + parent->m_clientPool = c; + c->m_prev = &parent->m_clientPool; xfree(c->m_cookie); c->m_cookie = 0; @@ -2593,13 +2585,13 @@ Z_APDU *Yaz_Proxy::handle_query_validation(Z_APDU *apdu) int err = 0; char *addinfo = 0; +#if 0 Yaz_ProxyConfig *cfg = check_reconfigure(); // Something like this needs to be implemented later: -/* if (cfg) err = cfg->check_type_1_attributes(odr_encode(), m_default_target, sr->termListAndStartPoint->attributes, &addinfo); -*/ +#endif if (err) { Z_APDU *new_apdu = create_Z_PDU(Z_APDU_scanResponse); @@ -3151,7 +3143,13 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) odr_malloc(m_s2z_odr_search, sizeof(Z_Query)); z_searchRequest->query = query; - if (srw_req->query_type == Z_SRW_query_type_cql) + if ( +#ifdef Z_SRW_query_type_cql + srw_req->query_type == Z_SRW_query_type_cql +#else + !srw_req->queryType || !strcmp(srw_req->queryType, "cql") +#endif + ) { Z_External *ext = (Z_External *) odr_malloc(m_s2z_odr_search, sizeof(*ext)); @@ -3160,12 +3158,22 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) ext->indirect_reference = 0; ext->descriptor = 0; ext->which = Z_External_CQL; +#ifdef Z_SRW_query_type_cql ext->u.cql = srw_req->query.cql; +#else + ext->u.cql = srw_req->query; +#endif query->which = Z_Query_type_104; query->u.type_104 = ext; } - else if (srw_req->query_type == Z_SRW_query_type_pqf) + else if ( +#ifdef Z_SRW_query_type_pqf + srw_req->query_type == Z_SRW_query_type_pqf +#else + srw_req->queryType && !strcmp(srw_req->queryType, "pqf") +#endif + ) { Z_RPNQuery *RPNquery; YAZ_PQF_Parser pqf_parser; @@ -3173,7 +3181,12 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) pqf_parser = yaz_pqf_create (); RPNquery = yaz_pqf_parse (pqf_parser, m_s2z_odr_search, - srw_req->query.pqf); +#ifdef Z_SRW_query_type_pqf + srw_req->query.pqf +#else + srw_req->query +#endif + ); if (!RPNquery) { const char *pqf_msg; @@ -3341,7 +3354,13 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) backend_db); // query transformation - if (srw_req->query_type == Z_SRW_query_type_cql) + if ( +#ifdef Z_SRW_query_type_cql + srw_req->query_type == Z_SRW_query_type_cql +#else + !srw_req->queryType || !strcmp(srw_req->queryType, "cql") +#endif + ) { z_scanRequest->termListAndStartPoint = (Z_AttributesPlusTerm *)odr_malloc(m_s2z_odr_scan, sizeof(Z_AttributesPlusTerm)); @@ -3351,7 +3370,13 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) z_scanRequest->termListAndStartPoint->term->which = Z_Term_characterString; z_scanRequest->termListAndStartPoint->term->u.characterString = - odr_strdup(m_s2z_odr_scan, srw_req->scanClause.cql); + odr_strdup(m_s2z_odr_scan, +#ifdef Z_SRW_query_type_cql + srw_req->scanClause.cql +#else + srw_req->scanClause +#endif + ); } if (srw_req->responsePosition) @@ -3537,10 +3562,16 @@ void Yaz_Proxy::handle_incoming_Z_PDU(Z_APDU *apdu) { m_referenceId = (Z_ReferenceId *) nmem_malloc(m_referenceId_mem, sizeof(*m_referenceId)); - m_referenceId->len = m_referenceId->size = (*refid)->len; + m_referenceId->len = (*refid)->len; +#if YAZ_VERSIONL < 0x50000 + m_referenceId->size = m_referenceId->len; m_referenceId->buf = (unsigned char *) - nmem_malloc(m_referenceId_mem, (*refid)->len); - memcpy(m_referenceId->buf, (*refid)->buf, (*refid)->len); + nmem_strdupn(m_referenceId_mem, (const char *) + (*refid)->buf, (*refid)->len); +#else + m_referenceId->buf = + nmem_strdupn(m_referenceId_mem, (*refid)->buf, (*refid)->len); +#endif } else m_referenceId = 0;