X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-proxy.cpp;h=a09a3867263243dea9e39dd000a80e9a33b629d0;hb=efb41657fc33883e6520fa571c5a944106271ec5;hp=bd8dee54e8f48f4a8e4df22f70d9e13013f6067a;hpb=aa7a95a1c8d579f7c5f339f1bdece2e53424de30;p=yazpp-moved-to-github.git diff --git a/src/yaz-proxy.cpp b/src/yaz-proxy.cpp index bd8dee5..a09a386 100644 --- a/src/yaz-proxy.cpp +++ b/src/yaz-proxy.cpp @@ -2,7 +2,7 @@ * Copyright (c) 1998-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-proxy.cpp,v 1.83 2004-01-07 22:19:05 adam Exp $ + * $Id: yaz-proxy.cpp,v 1.85 2004-01-08 22:54:53 adam Exp $ */ #include @@ -757,7 +757,7 @@ int Yaz_Proxy::send_srw_response(Z_SRW_PDU *srw_pdu) return r; } -int Yaz_Proxy::send_to_srw_client_error(int srw_error) +int Yaz_Proxy::send_to_srw_client_error(int srw_error, const char *add) { ODR o = odr_encode(); Z_SRW_PDU *srw_pdu = yaz_srw_get(o, Z_SRW_searchRetrieve_response); @@ -767,7 +767,7 @@ int Yaz_Proxy::send_to_srw_client_error(int srw_error) srw_res->diagnostics = (Z_SRW_diagnostic *) odr_malloc(o, sizeof(*srw_res->diagnostics)); srw_res->diagnostics[0].code = odr_intdup(o, srw_error); - srw_res->diagnostics[0].details = 0; + srw_res->diagnostics[0].details = add ? odr_strdup(o, add) : 0; return send_srw_response(srw_pdu); } @@ -876,7 +876,7 @@ int Yaz_Proxy::send_PDU_convert(Z_APDU *apdu, int *len) Z_InitResponse *res = apdu->u.initResponse; if (*res->result == 0) { - send_to_srw_client_error(3); + send_to_srw_client_error(3, 0); } else if (!m_s2z_search_apdu) { @@ -1573,6 +1573,13 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) { Z_SRW_searchRetrieveRequest *srw_req = srw_pdu->u.request; + // recordXPath unsupported. + if (srw_req->recordXPath) + { + send_to_srw_client_error(72, 0); + return; + } + // save stylesheet if (srw_req->stylesheet) m_s2z_stylesheet = @@ -1606,7 +1613,7 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) { if (!srw_req->query.cql) { - send_to_srw_client_error(7); + send_to_srw_client_error(7, "query"); return; } Z_External *ext = (Z_External *) @@ -1638,7 +1645,7 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) yaz_log(LOG_LOG, "%*s^\n", off+4, ""); yaz_log(LOG_LOG, "Bad PQF: %s (code %d)\n", pqf_msg, code); - send_to_srw_client_error(10); + send_to_srw_client_error(10, 0); return; } query->which = Z_Query_type_1; @@ -1648,7 +1655,7 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) } else { - send_to_srw_client_error(7); + send_to_srw_client_error(7, "query"); return; } @@ -1754,7 +1761,7 @@ void Yaz_Proxy::handle_incoming_HTTP(Z_HTTP_Request *hreq) } else { - send_to_srw_client_error(4); + send_to_srw_client_error(4, 0); } } int len = 0;