From d24d6ab7bbfda8e302af3a5cf8be62299d543c1a Mon Sep 17 00:00:00 2001 From: snowdrop Date: Thu, 28 Oct 2004 10:30:41 +0000 Subject: changed hstatus_t to herror_t and chagend the API function to return herror_t. Added herror_*() functions and fixed a bug in the socket receive comm. --- libcsoap/soap-client.c | 136 +++++++++++------------------- libcsoap/soap-client.h | 15 ++-- libcsoap/soap-ctx.c | 8 +- libcsoap/soap-ctx.h | 4 +- libcsoap/soap-env.c | 215 +++++++++++++++++++++++++++--------------------- libcsoap/soap-env.h | 48 ++++++----- libcsoap/soap-server.c | 76 +++++++++++++---- libcsoap/soap-server.h | 12 +-- libcsoap/soap-service.h | 4 +- 9 files changed, 284 insertions(+), 234 deletions(-) (limited to 'libcsoap') diff --git a/libcsoap/soap-client.c b/libcsoap/soap-client.c index 5562399..2a56e11 100644 --- a/libcsoap/soap-client.c +++ b/libcsoap/soap-client.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-client.c,v 1.9 2004/10/20 14:17:36 snowdrop Exp $ +* $Id: soap-client.c,v 1.10 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -27,7 +27,7 @@ /*--------------------------------- */ static int _block_socket = 0; -static SoapEnv *_soap_client_build_result(hresponse_t *res); +static herror_t _soap_client_build_result(hresponse_t *res, SoapEnv **out); /*--------------------------------- */ void soap_client_block_socket(int block) @@ -42,11 +42,11 @@ int soap_client_get_blockmode() -int soap_client_init_args(int argc, char *argv[]) +herror_t soap_client_init_args(int argc, char *argv[]) { - return !httpc_init(argc, argv); + return httpc_init(argc, argv); } @@ -65,17 +65,15 @@ long _file_get_size(const char* filename) return size; } -SoapCtx* -soap_client_invoke(SoapCtx *call, const char *url, const char *soap_action) + +herror_t +soap_client_invoke(SoapCtx *call, SoapCtx** response, const char *url, const char *soap_action) { /* Status */ - hstatus_t status; + herror_t status; /* Result document */ - SoapEnv* doc; - - /* Result Context */ - SoapCtx *ctx; + SoapEnv* res_env; /* Buffer variables*/ xmlBufferPtr buffer; @@ -118,48 +116,27 @@ soap_client_invoke(SoapCtx *call, const char *url, const char *soap_action) if (status != H_OK) { httpc_free(conn); - xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "Can not begin post envelope","","")); + xmlBufferFree(buffer); + return status; } status = http_output_stream_write_string(conn->out, content); if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "Can not post envelope","","")); + return status; } - /* res = httpc_post(conn, url, (int)strlen(content), content);*/ - res = httpc_post_end(conn); - if (res == NULL) { + status = httpc_post_end(conn, &res); + if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - conn->errmsg,"","")); + return status; } } else { - /* Use content-length transport */ - /*for (part=call->attachments->parts; part; part=part->next) { - file_size = _file_get_size(part->filename); - if (file_size == -1) [ - httpc_free(conn); - xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "Can not open file!","","")); - } - - total_size += file_size + BOUDARY_LENGTH; - }*/ - /* Use chunked transport */ httpc_set_header(conn, HEADER_TRANSFER_ENCODING, TRANSFER_ENCODING_CHUNKED); @@ -168,27 +145,21 @@ soap_client_invoke(SoapCtx *call, const char *url, const char *soap_action) if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "Can not begin MIME transport","","")); + return status; } status = httpc_mime_next(conn, start_id, "text/xml", "binary"); if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "MIME transport error","","")); + return status; } status = http_output_stream_write(conn->out, content, strlen(content)); if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "MIME transport error","","")); + return status; } @@ -200,20 +171,16 @@ soap_client_invoke(SoapCtx *call, const char *url, const char *soap_action) log_error2("Send file failed. Status:%d", status); httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "MIME transport error while sending file","","")); + return status; } } - res = httpc_mime_end(conn); - if (!res) + status = httpc_mime_end(conn, &res); + if (status != H_OK) { httpc_free(conn); xmlBufferFree(buffer); - return soap_ctx_new( - soap_env_new_with_fault(Fault_Client, - "MIME transport error","","")); + return status; } } @@ -221,59 +188,54 @@ soap_client_invoke(SoapCtx *call, const char *url, const char *soap_action) xmlBufferFree(buffer); /* Build result */ - /* TODO: If res == NULL, find out where and why it is NULL! */ - doc = _soap_client_build_result(res); + status = _soap_client_build_result(res, &res_env); + if (status != H_OK) + return status; /* Create Context */ - ctx = soap_ctx_new(doc); - soap_ctx_add_files(ctx, res->attachments); + *response = soap_ctx_new(res_env); + soap_ctx_add_files(*response, res->attachments); - return ctx; + return H_OK; } -static -SoapEnv* _soap_client_build_result(hresponse_t *res) -{ - SoapEnv *env; +static +herror_t + _soap_client_build_result(hresponse_t *res, SoapEnv** env) +{ + herror_t err; log_verbose2("Building result (%p)", res); if (res == NULL) - return soap_env_new_with_fault(Fault_Client, - "Response is NULL","",""); + return herror_new("_soap_client_build_result", + GENERAL_INVALID_PARAM, "hresponse_t is NULL"); if (res->in == NULL) - return soap_env_new_with_fault(Fault_Client, - "Empty response from server!","",""); - + return herror_new("_soap_client_build_result", + GENERAL_INVALID_PARAM, "Empty response from server"); -/* - doc = xmlParseDoc(BAD_CAST res->body); - if (doc == NULL) { - return soap_env_new_with_fault(Fault_Client, - "Response is not in XML format!","",""); - } - env = soap_env_new_from_doc(doc); -*/ - env = soap_env_new_from_stream(res->in); + err = soap_env_new_from_stream(res->in, env); - if (env == NULL) { -/* xmlFreeDoc(doc);*/ - return soap_env_new_with_fault(Fault_Client, - "Can not create envelope","",""); + if (err != H_OK) { + return err; } - return env; + return H_OK; } -SoapCtx *soap_client_ctx_new(const char *urn, const char *method) -{ - SoapCtx *ctx = soap_ctx_new(soap_env_new_with_method(urn, method)); +herror_t soap_client_ctx_new(const char *urn, const char *method, SoapCtx **out) +{ + SoapEnv *env; + herror_t err; + err = soap_env_new_with_method(urn, method, &env); + if (err != H_OK) return err; + *out = soap_ctx_new(env); - return ctx; + return H_OK; } diff --git a/libcsoap/soap-client.h b/libcsoap/soap-client.h index 6820c14..22e41bb 100644 --- a/libcsoap/soap-client.h +++ b/libcsoap/soap-client.h @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-client.h,v 1.5 2004/10/20 14:17:36 snowdrop Exp $ + * $Id: soap-client.h,v 1.6 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -30,7 +30,7 @@ /** Initializes the client side soap engine */ -int soap_client_init_args(int argc, char *argv[]); +herror_t soap_client_init_args(int argc, char *argv[]); /** @@ -38,19 +38,22 @@ int soap_client_init_args(int argc, char *argv[]); the given envelope. @param env envelope to send + @param response the result envelope @param url url to the soap server @soap_action value for "SoapAction:" in the HTTP request header. - @returns the result envelope. In case of failure, - this function return an envelope with a fault object. + @returns H_OK if success */ -SoapCtx* soap_client_invoke(SoapCtx *ctx, +herror_t soap_client_invoke(SoapCtx *ctx, SoapCtx** response, const char *url, const char *soap_action); -SoapCtx *soap_client_ctx_new(const char *urn, const char *method); +/** + Creates a new soap context object. +*/ +herror_t soap_client_ctx_new(const char *urn, const char *method, SoapCtx **out); /** Sets the underlaying socket to use while connecting diff --git a/libcsoap/soap-ctx.c b/libcsoap/soap-ctx.c index a77bbdd..944abf0 100755 --- a/libcsoap/soap-ctx.c +++ b/libcsoap/soap-ctx.c @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-ctx.c,v 1.1 2004/10/15 13:33:48 snowdrop Exp $ + * $Id: soap-ctx.c,v 1.2 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003-2004 Ferhat Ayaz @@ -49,14 +49,16 @@ void soap_ctx_add_files(SoapCtx* ctx, attachments_t *attachments) } -hstatus_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href) +herror_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href) { char cid[250]; char id[250]; part_t *part; static int counter = 1; FILE *test = fopen(filename, "r"); - if (!test) return FILE_ERROR_OPEN; + if (!test) + return herror_new("soap_ctx_add_file", FILE_ERROR_OPEN, + "Can not open file '%s'", filename); fclose(test); diff --git a/libcsoap/soap-ctx.h b/libcsoap/soap-ctx.h index c32f372..2ea107b 100755 --- a/libcsoap/soap-ctx.h +++ b/libcsoap/soap-ctx.h @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-ctx.h,v 1.1 2004/10/15 13:33:48 snowdrop Exp $ + * $Id: soap-ctx.h,v 1.2 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003-2004 Ferhat Ayaz @@ -40,7 +40,7 @@ typedef struct _SoapCtx SoapCtx* soap_ctx_new(SoapEnv *env); /* should only be used internally */ /* Size of destination dest_href should be MAX_HREF_SIZE */ -hstatus_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href); +herror_t soap_ctx_add_file(SoapCtx* ctx, const char* filename, const char* content_type, char *dest_href); void soap_ctx_add_files(SoapCtx* ctx, attachments_t *attachments); void soap_ctx_free(SoapCtx* ctx); diff --git a/libcsoap/soap-env.c b/libcsoap/soap-env.c index 7d7811b..6527028 100644 --- a/libcsoap/soap-env.c +++ b/libcsoap/soap-env.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-env.c,v 1.8 2004/10/15 14:33:07 snowdrop Exp $ +* $Id: soap-env.c,v 1.9 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -102,21 +102,96 @@ static /* ---------------------------------------------------------------------------- */ -SoapEnv * + + +herror_t +soap_env_new_from_doc (xmlDocPtr doc, SoapEnv **out) +{ + xmlNodePtr node; + SoapEnv *env; + + if (doc == NULL) + { + log_error1 ("Can not create xml document!"); + return herror_new("soap_env_new_from_doc", + GENERAL_INVALID_PARAM, "XML Document (xmlDocPtr) is NULL"); + } + + node = xmlDocGetRootElement (doc); + if (node == NULL) + { + log_error1 ("xml document is empty!"); + return herror_new("soap_env_new_from_doc", + XML_ERROR_EMPTY_DOCUMENT, "XML Document is empty!"); + } + + env = (SoapEnv *) malloc (sizeof (SoapEnv)); + + /* set root */ + env->root = node; + + /* set method root + set call->cur (current node) to . + xpath: //Envelope/Body/ + */ + node = soap_xml_get_children (env->root);/* Check for NULL ! */ + env->cur = soap_xml_get_children (node); /* Check for NULL ! */ + + *out = env; + return H_OK; +} + + + + +herror_t +soap_env_new_from_buffer (const char *buffer, SoapEnv **out) +{ + xmlDocPtr doc; + herror_t err; + + if (buffer == NULL) + return herror_new("soap_env_new_from_buffer", + GENERAL_INVALID_PARAM, "buffer (first param) is NULL"); + + doc = xmlParseDoc (BAD_CAST buffer); + if (doc == NULL) + return herror_new("soap_env_new_from_buffer", + XML_ERROR_PARSE, "Can not parse xml"); + + err = soap_env_new_from_doc (doc, out); + if (err != H_OK) { + xmlFreeDoc (doc); + } + + return err; +} + + +herror_t soap_env_new_with_fault (fault_code_t faultcode, const char *faultstring, - const char *faultactor, const char *detail) + const char *faultactor, const char *detail, SoapEnv **out) { xmlDocPtr doc; + herror_t err; + doc = soap_fault_build (faultcode, faultstring, faultactor, detail); if (doc == NULL) - return NULL; - return soap_env_new_from_doc (doc); + return herror_new("soap_env_new_with_fault", + XML_ERROR_PARSE, "Can not parse fault xml"); + + err = soap_env_new_from_doc (doc, out); + if (err != H_OK) { + xmlFreeDoc (doc); + } + + return err; } -SoapEnv * -soap_env_new_with_response (SoapEnv * request) +herror_t +soap_env_new_with_response (SoapEnv * request, SoapEnv **out) { char urn[100]; char methodname[150]; @@ -124,19 +199,20 @@ soap_env_new_with_response (SoapEnv * request) if (request == NULL) { - log_error1 ("request object is NULL"); - return NULL; + return herror_new("soap_env_new_with_response", + GENERAL_INVALID_PARAM, "request (first param) is NULL"); } if (request->root == NULL) { - log_error1 ("request has no xml"); - return NULL; - } + return herror_new("soap_env_new_with_response", + GENERAL_INVALID_PARAM, "request (first param) has no xml structure"); + } if (!soap_env_find_methodname (request, methodname)) { - return NULL; + return herror_new("soap_env_new_with_response", + GENERAL_INVALID_PARAM, "Method name '%s' not found in request", SAVE_STR(methodname)); } if (!soap_env_find_urn (request, urn)) @@ -148,15 +224,14 @@ soap_env_new_with_response (SoapEnv * request) } sprintf (methodname2, "%sResponse", methodname); - return soap_env_new_with_method (urn, methodname2); + return soap_env_new_with_method (urn, methodname2, out); } -SoapEnv * -soap_env_new_with_method (const char *urn, const char *method) +herror_t +soap_env_new_with_method (const char *urn, const char *method, SoapEnv **out) { xmlDocPtr env; - SoapEnv *call; xmlChar buffer[1054]; @@ -188,19 +263,30 @@ soap_env_new_with_method (const char *urn, const char *method) #endif } - env = xmlParseDoc (buffer); - call = soap_env_new_from_doc (env); + + env = xmlParseDoc (buffer); + if (!env) + return herror_new("soap_env_new_with_method", + XML_ERROR_PARSE, "Can not parse xml"); + + return soap_env_new_from_doc (env, out); - return call; } + + static int _soap_env_xml_io_read(void* ctx, char *buffer, int len) -{ - http_input_stream_t *in = (http_input_stream_t *)ctx; - if(!http_input_stream_is_ready(in)) - return 0; - return http_input_stream_read(in, buffer, len); +{ + int readed; + http_input_stream_t *in = (http_input_stream_t*)ctx; + if(!http_input_stream_is_ready(in)) + return 0; + + readed = http_input_stream_read(in, buffer, len); + if (readed == -1) + return 0; + return readed; } static @@ -210,15 +296,21 @@ int _soap_env_xml_io_close(void *ctx) return 0; } -SoapEnv * -soap_env_new_from_stream(http_input_stream_t *in) + +herror_t +soap_env_new_from_stream(http_input_stream_t *in, SoapEnv **out) { - xmlDocPtr doc; - + xmlDocPtr doc; + herror_t err; + doc = xmlReadIO(_soap_env_xml_io_read, _soap_env_xml_io_close, in, "", NULL, 0); - - return soap_env_new_from_doc (doc); + + if (in->err != H_OK) return in->err; + if (doc == NULL) return herror_new("soap_env_new_from_stream", + XML_ERROR_PARSE, "Trying to parse not valid xml"); + err = soap_env_new_from_doc (doc, out); + return err; } @@ -346,67 +438,6 @@ soap_env_free (SoapEnv * env) } -SoapEnv * -soap_env_new_from_doc (xmlDocPtr doc) -{ - SoapEnv *env; - xmlNodePtr node; - - if (doc == NULL) - { - log_error1 ("Can not create xml document!"); - return NULL; - } - - node = xmlDocGetRootElement (doc); - if (node == NULL) - { - log_error1 ("xml document is empty!"); - return NULL; - } - - env = (SoapEnv *) malloc (sizeof (SoapEnv)); - - /* set root */ - env->root = node; - - /* set method root - set call->cur (current node) to . - xpath: //Envelope/Body/ - */ - node = soap_xml_get_children (env->root); - env->cur = soap_xml_get_children (node); - - return env; -} - - - - -SoapEnv * -soap_env_new_from_buffer (const char *buffer) -{ - xmlDocPtr doc; - SoapEnv *env; - - if (buffer == NULL) - return NULL; - - doc = xmlParseDoc (BAD_CAST buffer); - if (doc == NULL) - return NULL; - - env = soap_env_new_from_doc (doc); - if (env == NULL) - { - xmlFreeDoc (doc); - return NULL; - } - - return env; -} - - xmlNodePtr soap_env_get_body (SoapEnv * env) { diff --git a/libcsoap/soap-env.h b/libcsoap/soap-env.h index 5b3bd7f..58af136 100644 --- a/libcsoap/soap-env.h +++ b/libcsoap/soap-env.h @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-env.h,v 1.7 2004/10/15 13:33:13 snowdrop Exp $ + * $Id: soap-env.h,v 1.8 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -50,8 +50,8 @@ typedef struct _SoapEnv @param faultstring A fault message @param faultactor The fault actor (This can be NULL) @param detail The detail of the error (This can be NULL) - - @returns A Soap envelope object like follows + @param out the result envelope out parameter like follows + @returns H_OK if success
    
 
- */
-SoapEnv *soap_env_new_with_fault(fault_code_t faultcode, 
+ */
+herror_t
+soap_env_new_with_fault(fault_code_t faultcode, 
 				 const char *faultstring,
 				 const char *faultactor,
-				 const char *detail);
+				 const char *detail, SoapEnv **out);
 
 /**
    Creates an envelope with a method to invoke a soap service.
@@ -84,7 +85,8 @@ SoapEnv *soap_env_new_with_fault(fault_code_t faultcode,
    @param urn The urn of the soap service to invoke
    @param method The method name of the soap service
 
-   @returns A Soap envelope object like follows 
+   @param out the result envelope out parameter like follows
+   @returns H_OK if success
 
    
    
 
  */
-SoapEnv *soap_env_new_with_method(const char *urn, const char *method);
+herror_t
+soap_env_new_with_method(const char *urn, const char *method, SoapEnv **out);
 
 
 /**
@@ -115,7 +118,8 @@ SoapEnv *soap_env_new_with_method(const char *urn, const char *method);
    @param req The request object. A response object will be created
     to this request.
 
-   @returns A Soap envelope object like follows 
+   @param out the result envelope out paramter like follows
+   @returns H_OK if success
 
    
    method != HTTP_REQUEST_POST) {
 
@@ -125,10 +126,17 @@ void soap_server_entry(httpd_conn_t *conn, hrequest_t *req)
 		return;
 	}
 
-/*	postdata = httpd_get_postdata(conn, req, &received, -1);*/
-  env = soap_env_new_from_stream(req->in);
 
-	header = hpairnode_new(HEADER_CONTENT_TYPE, "text/xml", NULL);
+	header = hpairnode_new(HEADER_CONTENT_TYPE, "text/xml", NULL);
+
+	err = soap_env_new_from_stream(req->in, &env);
+	if (err != H_OK) 
+	{
+  		_soap_server_send_fault(conn, header, herror_message(err));
+		herror_release(err);
+		return;
+	}
+
 
 	if (env == NULL) {
 
@@ -183,13 +191,22 @@ void soap_server_entry(httpd_conn_t *conn, hrequest_t *req)
 					return;
 				} else {
 
-					log_verbose2("func: %p", service->func);
+					log_verbose2("func: %p", service->func);
+					ctxres = soap_ctx_new(NULL);
 					/* ===================================== */
           /*       CALL SERVICE FUNCTION           */
 					/* ===================================== */
-					ctxres = service->func(ctx);
-					log_verbose2("func returned: (%p)", ctxres);
-					if (ctxres == NULL) {
+					err = service->func(ctx, ctxres);
+					if (err != H_OK) {
+						sprintf(buffer, "Service returned following error message: '%s'",
+							herror_message(err));
+						herror_release(err);
+						_soap_server_send_fault(conn, header, buffer);
+						soap_ctx_free(ctx);
+						return;
+					}
+
+					if (ctxres->env == NULL) {
 
 						sprintf(buffer, "Service '%s' returned no envelope", urn);
 						_soap_server_send_fault(conn, header, buffer);
@@ -271,13 +288,38 @@ static
 void _soap_server_send_fault(httpd_conn_t *conn, hpair_t *header, 
 							 const char* errmsg)
 {
-	SoapEnv *envres;
+	SoapEnv *envres;
+	herror_t err;
+	char buffer[45];
 	httpd_set_headers(conn, header);
-	httpd_send_header(conn, 500, "FAILED");
-	envres = soap_env_new_with_fault(Fault_Server,
+	err = httpd_send_header(conn, 500, "FAILED");
+	if (err != H_OK) {
+		 /* WARNING: unhandled exception !*/
+		log_error4("%s():%s [%d]", herror_func(err), herror_message(err), herror_code(err));
+		return;
+	}
+
+	err = soap_env_new_with_fault(Fault_Server,
 		errmsg?errmsg:"General error",
-		"cSOAP_Server", NULL);
-	_soap_server_send_env(conn->out, envres);
+		"cSOAP_Server", NULL, &envres);
+	 if (err != H_OK) {
+		 log_error1(herror_message(err));
+		http_output_stream_write_string(conn->out, "");
+		http_output_stream_write_string(conn->out, "

Error


"); + http_output_stream_write_string(conn->out, "Error while sending fault object:
Message: "); + http_output_stream_write_string(conn->out, herror_message(err)); + http_output_stream_write_string(conn->out, "
Function: "); + http_output_stream_write_string(conn->out, herror_func(err)); + http_output_stream_write_string(conn->out, "
Error code: "); + sprintf(buffer, "%d", herror_code(err)); + http_output_stream_write_string(conn->out, buffer); + http_output_stream_write_string(conn->out, ""); + return; + + herror_release(err); + } else { + _soap_server_send_env(conn->out, envres); + } } diff --git a/libcsoap/soap-server.h b/libcsoap/soap-server.h index 13abd92..62d136c 100644 --- a/libcsoap/soap-server.h +++ b/libcsoap/soap-server.h @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-server.h,v 1.3 2004/10/15 13:33:13 snowdrop Exp $ + * $Id: soap-server.h,v 1.4 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -19,7 +19,7 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * - * Email: ayaz@jprogrammer.net + * Email: ferhatayaz@yahoo.com ******************************************************************/ #ifndef cSOAP_SERVER_H #define cSOAP_SERVER_H @@ -34,7 +34,9 @@ - + + +
ArgumentDescription
-NHTTPport [port]Port to listen (default: 10000)
-NHTTPport [port]Port to listen (default: 10000)
-NHTTPmaxconn [num]Maximum thread connections
-NHTTPlog [logfilename]logfile
@param argc commandline arg count @@ -42,7 +44,7 @@ @returns 1 if success, 0 otherwise */ -int soap_server_init_args(int argc, char *argv[]); +herror_t soap_server_init_args(int argc, char *argv[]); /** @@ -66,7 +68,7 @@ int soap_server_register_router(SoapRouter *router, const char* context); Enters the server loop and starts to listen to http requests. */ -int soap_server_run(); +herror_t soap_server_run(); /** diff --git a/libcsoap/soap-service.h b/libcsoap/soap-service.h index 7c2855e..c03d7df 100644 --- a/libcsoap/soap-service.h +++ b/libcsoap/soap-service.h @@ -1,5 +1,5 @@ /****************************************************************** - * $Id: soap-service.h,v 1.2 2004/10/15 13:34:02 snowdrop Exp $ + * $Id: soap-service.h,v 1.3 2004/10/28 10:30:46 snowdrop Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -28,7 +28,7 @@ #include #include -typedef SoapCtx* (*SoapServiceFunc)(SoapCtx*); +typedef herror_t (*SoapServiceFunc)(SoapCtx*, SoapCtx*); typedef struct _SoapService -- cgit v1.1-32-gdbae