X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsoap.c;h=96a9ac1d0daeed7e4bf1ee5b46d2c39d2844c592;hb=2bfedb1881eea1eb4e158779348794979ca9b681;hp=64310bc26485d8215b589b90d16502cf94c6cea9;hpb=2f5de47d0b100194d42e6ae9d17a994e8203da0d;p=yaz-moved-to-github.git diff --git a/src/soap.c b/src/soap.c index 64310bc..96a9ac1 100644 --- a/src/soap.c +++ b/src/soap.c @@ -2,7 +2,7 @@ * Copyright (c) 2002-2003, Index Data. * See the file LICENSE for details. * - * $Id: soap.c,v 1.2 2003-12-18 23:04:23 adam Exp $ + * $Id: soap.c,v 1.4 2004-01-05 09:34:42 adam Exp $ */ #include @@ -14,22 +14,6 @@ static const char *soap_v1_1 = "http://schemas.xmlsoap.org/soap/envelope/"; static const char *soap_v1_2 = "http://www.w3.org/2001/06/soap-envelope"; -int z_soap_error(ODR o, Z_SOAP *p, - const char *fault_code, const char *fault_string, - const char *details) -{ - p->which = Z_SOAP_error; - p->u.soap_error = (Z_SOAP_Fault *) - odr_malloc(o, sizeof(*p->u.soap_error)); - p->u.soap_error->fault_code = odr_strdup(o, fault_code); - p->u.soap_error->fault_string = odr_strdup(o, fault_string); - if (details) - p->u.soap_error->details = odr_strdup(o, details); - else - p->u.soap_error->details = 0; - return -1; -} - int z_soap_codec_enc(ODR o, Z_SOAP **pp, char **content_buf, int *content_len, Z_SOAP_Handler *handlers, @@ -111,6 +95,12 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, return z_soap_error(o, p, "SOAP-ENV:Client", "SOAP No content for Body", 0); } + if (!ptr->ns) + { + xmlFreeDoc(doc); + return z_soap_error(o, p, "SOAP-ENV:Client", + "SOAP No namespace for content", 0); + } /* check for fault package */ if (!strcmp(ptr->ns->href, p->ns) && !strcmp(ptr->name, "Fault") && ptr->children) @@ -205,7 +195,6 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, handlers[no].ns); if (ret) { - xmlFreeNode(envelope_ptr); xmlFreeDoc(doc); return ret; } @@ -227,7 +216,6 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, memcpy(*content_buf, buf_out, len_out); xmlFree(buf_out); } - xmlFreeNode(envelope_ptr); xmlFreeDoc(doc); return 0; } @@ -265,3 +253,19 @@ int z_soap_codec(ODR o, Z_SOAP **pp, return z_soap_codec_enc(o, pp, content_buf, content_len, handlers, 0); } +int z_soap_error(ODR o, Z_SOAP *p, + const char *fault_code, const char *fault_string, + const char *details) +{ + p->which = Z_SOAP_error; + p->u.soap_error = (Z_SOAP_Fault *) + odr_malloc(o, sizeof(*p->u.soap_error)); + p->u.soap_error->fault_code = odr_strdup(o, fault_code); + p->u.soap_error->fault_string = odr_strdup(o, fault_string); + if (details) + p->u.soap_error->details = odr_strdup(o, details); + else + p->u.soap_error->details = 0; + return -1; +} +