diff options
| author | 2006-11-29 11:04:24 +0000 | |
|---|---|---|
| committer | 2006-11-29 11:04:24 +0000 | |
| commit | fd7c2c579f6b10531f1aad4c75ebfadc03652e90 (patch) | |
| tree | d4d3032d83f0e2637c1ccd9bfc840d549c333e39 /libcsoap/soap-nudp.c | |
| parent | 9a0670ad01e00ab01cfb4f308f1b124941968fa2 (diff) | |
| download | csoap-fd7c2c579f6b10531f1aad4c75ebfadc03652e90.tar.gz csoap-fd7c2c579f6b10531f1aad4c75ebfadc03652e90.tar.bz2  | |
Message encryption added
Diffstat (limited to 'libcsoap/soap-nudp.c')
| -rw-r--r-- | libcsoap/soap-nudp.c | 22 | 
1 files changed, 15 insertions, 7 deletions
diff --git a/libcsoap/soap-nudp.c b/libcsoap/soap-nudp.c index 3c0cf70..fb4475d 100644 --- a/libcsoap/soap-nudp.c +++ b/libcsoap/soap-nudp.c @@ -1,5 +1,5 @@  /****************************************************************** -*  $Id: soap-nudp.c,v 1.5 2006/11/26 20:13:05 m0gg Exp $ +*  $Id: soap-nudp.c,v 1.6 2006/11/29 11:04:25 m0gg Exp $  *  * CSOAP Project:  A SOAP client/server library in C  * Copyright (C) 2006 Heiko Ronsdorf @@ -89,6 +89,7 @@ static short _soap_nudp_port = NUDP_DEFAULT_PORT;  static int _soap_nudp_socket;  static pthread_t _soap_nudp_thread;  static pthread_attr_t _soap_nudp_attr; +static volatile int _soap_nudp_running = 0;  static short  _soap_nudp_server_set_port(void) @@ -97,8 +98,8 @@ _soap_nudp_server_set_port(void)    if (!(entry = getservbyname("soap", "udp")))    { -    log_warn1("getservbyname returned NULL"); -    _soap_nudp_port = NUDP_DEFAULT_PORT;   +    log_warn1("getservbyname(\"soap\", \"udp\") returned NULL, please edit services database"); +    _soap_nudp_port = NUDP_DEFAULT_PORT;    }    else    { @@ -259,11 +260,14 @@ soap_nudp_server_run(void *unused)    struct SoapCtx *res;    xmlURI *to; -  for(;;) +  while (_soap_nudp_running)    { +    /* XXX: select with timeout */ +      _soap_nudp_receive_document(_soap_nudp_socket, &doc, &addr, &addr_len); -    xmlDocFormatDump(stdout, doc, 1); +    // log_error1(__FUNCTION__); +    // xmlDocFormatDump(stdout, doc, 1);      req = soap_ctx_new(NULL); @@ -284,6 +288,8 @@ soap_nudp_server_run(void *unused)      soap_ctx_free(req);    } +  close(_soap_nudp_socket); +    return NULL;  } @@ -292,6 +298,8 @@ soap_nudp_server_run_threaded(void)  {    int err; +  _soap_nudp_running = 1; +    if ((err = pthread_create(&_soap_nudp_thread, &_soap_nudp_attr, soap_nudp_server_run, NULL)) < 0)    {      log_error2("pthread_create failed (%s)", strerror(err)); @@ -304,13 +312,13 @@ soap_nudp_server_run_threaded(void)  void  soap_nudp_server_destroy(void)  { +  _soap_nudp_running = 0; -  close(_soap_nudp_socket); +  /* XXX: sleep for timeout, wait for select */    return;  } -  herror_t  soap_nudp_client_init_args(int argc, char **argv)  {  | 
