From c3fd98b25607d0f7f5977586d188f88ab226a9b8 Mon Sep 17 00:00:00 2001 From: m0gg Date: Tue, 21 Nov 2006 20:58:59 +0000 Subject: decoupling of nanohttp/libcsoap --- libcsoap/soap-fault.c | 62 ++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 28 deletions(-) (limited to 'libcsoap/soap-fault.c') diff --git a/libcsoap/soap-fault.c b/libcsoap/soap-fault.c index c4768e6..6781e1e 100644 --- a/libcsoap/soap-fault.c +++ b/libcsoap/soap-fault.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-fault.c,v 1.11 2006/07/09 16:24:19 snowdrop Exp $ +* $Id: soap-fault.c,v 1.12 2006/11/21 20:59:02 m0gg Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -29,10 +29,12 @@ #include #endif +#include #include -#include "soap-fault.h" #include "soap-xml.h" +// #include "soap-server.h" +#include "soap-fault.h" /* Parameters: @@ -46,7 +48,9 @@ Parameters: 8- detail */ #define _SOAP_FAULT_TEMPLATE_ \ - "" \ " " \ @@ -61,60 +65,64 @@ Parameters: "" - -static char *fault_vm = "VersionMismatch"; -static char *fault_mu = "MustUnderstand"; -static char *fault_client = "Client"; -static char *fault_server = "Server"; +static const char const *fault_vm = "VersionMismatch"; +static const char const *fault_mu = "MustUnderstand"; +static const char const *fault_deu = "DataEncodingUnkown"; +static const char const *fault_client = "Client"; +static const char const *fault_server = "Server"; xmlDocPtr -soap_fault_build(fault_code_t fcode, - const char *faultstring, - const char *faultactor, const char *detail) +soap_fault_build(int fault_code, const char *fault_string, const char *fault_actor, const char *detail) { /* variables */ - char *faultcode; + const char *faultcode; int bufferlen = 2000; char *buffer; xmlDocPtr fault; /* result */ log_verbose1("Build fault"); - switch (fcode) + switch (fault_code) { - case Fault_VersionMismatch: + case SOAP_FAULT_VERSION_MISMATCH: faultcode = fault_vm; break; - case Fault_MustUnderstand: + case SOAP_FAULT_MUST_UNDERSTAND: faultcode = fault_mu; break; - case Fault_Client: - faultcode = fault_client; + case SOAP_FAULT_DATA_ENCODING_UNKOWN: + faultcode = fault_deu; break; - case Fault_Server: + case SOAP_FAULT_RECEIVER: faultcode = fault_server; break; + case SOAP_FAULT_SENDER: default: faultcode = fault_client; + break; } /* calculate buffer length */ - if (faultstring) - bufferlen += strlen(faultstring); - if (faultactor) - bufferlen += strlen(faultactor); + if (fault_string) + bufferlen += strlen(fault_string); + if (fault_actor) + bufferlen += strlen(fault_actor); if (detail) bufferlen += strlen(detail); log_verbose2("Creating buffer with %d bytes", bufferlen); - buffer = (char *) malloc(bufferlen); + if (!(buffer = (char *) malloc(bufferlen))) + { + log_error2("malloc failed (%s)", errno); + return NULL; + } sprintf(buffer, _SOAP_FAULT_TEMPLATE_, soap_env_ns, soap_env_enc, soap_xsi_ns, soap_xsd_ns, faultcode, - faultstring ? faultstring : "error", - faultactor ? faultactor : "", detail ? detail : ""); + fault_string ? fault_string : "error", + fault_actor ? fault_actor : "", detail ? detail : ""); fault = xmlParseDoc(BAD_CAST buffer); free(buffer); @@ -123,11 +131,9 @@ soap_fault_build(fault_code_t fcode, { log_error1("Can not create xml document!"); - return soap_fault_build(fcode, "Can not create fault object in xml", - "soap_fault_build()", NULL); + return soap_fault_build(fault_code, "Cannot create fault object in XML", soap_server_get_name(), NULL); } log_verbose2("Returning fault (%p)", fault); return fault; - } -- cgit v1.1-32-gdbae