X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zutil%2Fsoap.c;h=0b34cdbbdbec7596e7865c4df880b66936e7060c;hb=a834d92665e792c011e86d5603968ab31237575a;hp=d848cf97660212797b9df66da28e5e5269dc609f;hpb=81afb524fb5c2d761d37853f4182fca4567cd2fd;p=yaz-moved-to-github.git diff --git a/zutil/soap.c b/zutil/soap.c index d848cf9..0b34cdb 100644 --- a/zutil/soap.c +++ b/zutil/soap.c @@ -2,7 +2,7 @@ * Copyright (c) 2002-2003, Index Data. * See the file LICENSE for details. * - * $Id: soap.c,v 1.6 2003-03-11 11:09:17 adam Exp $ + * $Id: soap.c,v 1.7 2003-03-18 13:34:37 adam Exp $ */ #include @@ -184,8 +184,6 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, Z_SOAP *p = *pp; xmlNsPtr ns_env; xmlNodePtr envelope_ptr, body_ptr; - xmlChar *buf_out; - int len_out; xmlDocPtr doc = xmlNewDoc("1.0"); @@ -215,14 +213,23 @@ int z_soap_codec_enc(ODR o, Z_SOAP **pp, if (ret) return ret; } - if (encoding) - xmlDocDumpMemoryEnc(doc, &buf_out, &len_out, encoding); - else - xmlDocDumpMemory(doc, &buf_out, &len_out); - *content_buf = (char *) odr_malloc(o, len_out); - *content_len = len_out; - memcpy(*content_buf, buf_out, len_out); - xmlFree(buf_out); + if (p->which == Z_SOAP_generic && !strcmp(p->ns, "SRU")) + { + xmlDocSetRootElement(doc, body_ptr->children); + } + if (1) + { + xmlChar *buf_out; + int len_out; + if (encoding) + xmlDocDumpMemoryEnc(doc, &buf_out, &len_out, encoding); + else + xmlDocDumpMemory(doc, &buf_out, &len_out); + *content_buf = (char *) odr_malloc(o, len_out); + *content_len = len_out; + memcpy(*content_buf, buf_out, len_out); + xmlFree(buf_out); + } xmlFreeDoc(doc); return 0; }