From d95f9da3572131ceeefd245d99c795ab8bc11880 Mon Sep 17 00:00:00 2001 From: m0gg Date: Sun, 31 Dec 2006 17:24:22 +0000 Subject: Addded hooks for Web Service Management --- libcsoap/soap-server.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'libcsoap/soap-server.c') diff --git a/libcsoap/soap-server.c b/libcsoap/soap-server.c index b21688b..34b053f 100644 --- a/libcsoap/soap-server.c +++ b/libcsoap/soap-server.c @@ -1,5 +1,5 @@ /****************************************************************** -* $Id: soap-server.c,v 1.35 2006/11/29 11:04:25 m0gg Exp $ +* $Id: soap-server.c,v 1.36 2006/12/31 17:24:22 m0gg Exp $ * * CSOAP Project: A SOAP client/server library in C * Copyright (C) 2003 Ferhat Ayaz @@ -179,19 +179,30 @@ soap_server_process(struct SoapCtx *request, struct SoapCtx **response) if ((service = soap_router_find_service(router, urn, method))) { log_verbose3("service (%p) found, function (%p)", service, service->func); - if ((err = service->func(request, *response)) == H_OK) + switch (service->status) { - if ((*response)->env == NULL) - { - sprintf(buffer, "Service for \"%s\" returned no envelope", urn); - _soap_server_env_new_with_fault("Internal service error", buffer, &((*response)->env)); - } - } - else - { - sprintf(buffer, "Service returned following error message: \"%s\"", herror_message(err)); - herror_release(err); - _soap_server_env_new_with_fault("Internal service error", buffer, &((*response)->env)); + case CSOAP_SERVICE_UP: + + if ((err = service->func(request, *response)) == H_OK) + { + if ((*response)->env == NULL) + { + sprintf(buffer, "Service for \"%s\" returned no envelope", urn); + _soap_server_env_new_with_fault("Internal service error", buffer, &((*response)->env)); + } + } + else + { + sprintf(buffer, "Service returned following error message: \"%s\"", herror_message(err)); + herror_release(err); + _soap_server_env_new_with_fault("Internal service error", buffer, &((*response)->env)); + } + break; + case CSOAP_SERVICE_DOWN: + default: + sprintf(buffer, "Service for \"%s\" is down", urn); + _soap_server_env_new_with_fault("Internal service error", buffer, &((*response)->env)); + break; } } else -- cgit v1.1-32-gdbae