projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Document s=ag
[yaz-moved-to-github.git]
/
src
/
soap.c
diff --git
a/src/soap.c
b/src/soap.c
index
1b1452c
..
0f564b0
100644
(file)
--- a/
src/soap.c
+++ b/
src/soap.c
@@
-1,5
+1,5
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2010 Index Data
+ * Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
*/
/**
* See the file LICENSE for details.
*/
/**
@@
-14,6
+14,7
@@
#endif
#include <yaz/soap.h>
#endif
#include <yaz/soap.h>
+#include <yaz/match_glob.h>
#if YAZ_HAVE_XML2
#include <libxml/parser.h>
#if YAZ_HAVE_XML2
#include <libxml/parser.h>
@@
-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++)
/* 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)
{
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,
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",
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
{
}
else
{
+ const char *ns = (const char *) ptr->ns->href;
for (i = 0; handlers[i].ns; i++)
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;
break;
+ }
if (handlers[i].ns)
{
void *handler_data = 0;
ret = (*handlers[i].f)(o, pptr, &handler_data,
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);
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",
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);
}
}
xmlFreeDoc(doc);