X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsoap.c;h=0f564b02bcbe1dd606040642a2dcbb92d23db9ea;hb=aa022874f3bafc909a7d4ed3dd0923347856ba1b;hp=5e58a49e6ad6795765ab92afb7c60604a5ec799b;hpb=77c5a4fca8b516fd39b8ba213daed17a465a6b2a;p=yaz-moved-to-github.git diff --git a/src/soap.c b/src/soap.c index 5e58a49..0f564b0 100644 --- a/src/soap.c +++ b/src/soap.c @@ -14,6 +14,7 @@ #endif #include +#include #if YAZ_HAVE_XML2 #include @@ -56,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) { @@ -66,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", @@ -182,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); @@ -207,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);