X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsoap.c;h=0f564b02bcbe1dd606040642a2dcbb92d23db9ea;hb=70167dec477969519b27873537a7d9d7d7e686c1;hp=5a3b4422b2336cf3c21ed24b260e09a2bab8a54f;hpb=8d691989077a0addcbd840d769dce6700f3d9622;p=yaz-moved-to-github.git diff --git a/src/soap.c b/src/soap.c index 5a3b442..0f564b0 100644 --- a/src/soap.c +++ b/src/soap.c @@ -1,8 +1,6 @@ -/* - * Copyright (C) 1995-2007, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2012 Index Data * See the file LICENSE for details. - * - * $Id: soap.c,v 1.17 2007-01-03 08:42:15 adam Exp $ */ /** * \file soap.c @@ -11,8 +9,12 @@ * This implements encoding and decoding of SOAP packages using * Libxml2. */ +#if HAVE_CONFIG_H +#include +#endif #include +#include #if YAZ_HAVE_XML2 #include @@ -55,7 +57,7 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, /* check for SRU root node match */ for (i = 0; handlers[i].ns; i++) - if (!xmlStrcmp(ptr->ns->href, BAD_CAST handlers[i].ns)) + if (yaz_match_glob(handlers[i].ns, (const char *)ptr->ns->href)) break; if (handlers[i].ns) { @@ -65,7 +67,7 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, p_top_tmp.children = ptr; ret = (*handlers[i].f)(o, &p_top_tmp, &handler_data, handlers[i].client_data, - handlers[i].ns); + (const char *)ptr->ns->href); if (ret || !handler_data) z_soap_error(o, p, "SOAP-ENV:Client", @@ -181,15 +183,19 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, } else { + const char *ns = (const char *) ptr->ns->href; for (i = 0; handlers[i].ns; i++) - if (!xmlStrcmp(ptr->ns->href, BAD_CAST handlers[i].ns)) + { + fprintf(stderr, "checking globns=%s ns=%s\n", + handlers[i].ns, ns); + if (yaz_match_glob(handlers[i].ns, ns)) break; + } if (handlers[i].ns) { void *handler_data = 0; ret = (*handlers[i].f)(o, pptr, &handler_data, - handlers[i].client_data, - handlers[i].ns); + handlers[i].client_data, ns); if (ret || !handler_data) z_soap_error(o, p, "SOAP-ENV:Client", "SOAP Handler returned error", 0); @@ -206,8 +212,7 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, else { ret = z_soap_error(o, p, "SOAP-ENV:Client", - "No handler for NS", - (const char *)ptr->ns->href); + "No handler for NS", ns); } } xmlFreeDoc(doc); @@ -264,7 +269,7 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, } if (stylesheet) { - char *content = odr_malloc(o, strlen(stylesheet) + 40); + char *content = (char *) odr_malloc(o, strlen(stylesheet) + 40); xmlNodePtr pi, ptr = xmlDocGetRootElement(doc); sprintf(content, "type=\"text/xsl\" href=\"%s\"", stylesheet); @@ -351,6 +356,7 @@ int z_soap_error(ODR o, Z_SOAP *p, /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab