diff --git a/libs/xmlrpc-c/.update b/libs/xmlrpc-c/.update index 7fa0702043..61d9732fd3 100644 --- a/libs/xmlrpc-c/.update +++ b/libs/xmlrpc-c/.update @@ -1 +1 @@ -Fri Mar 16 17:21:00 EDT 2007 +Wed Apr 25 16:05:00 EDT 2007 diff --git a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h index e7dc4eb8c4..4a4fed1a09 100644 --- a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h +++ b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h @@ -634,7 +634,7 @@ abyss_bool ServerCreate(TServer *srv, void ServerFree(TServer *srv); -void ServerInit(TServer *srv); +int ServerInit(TServer *srv); void ServerRun(TServer *srv); void ServerRunOnce(TServer *srv); void ServerRunOnce2(TServer * const srv, diff --git a/libs/xmlrpc-c/lib/abyss/src/server.c b/libs/xmlrpc-c/lib/abyss/src/server.c index 297a8efc6b..3752d16249 100644 --- a/libs/xmlrpc-c/lib/abyss/src/server.c +++ b/libs/xmlrpc-c/lib/abyss/src/server.c @@ -711,20 +711,30 @@ ServerFunc(TConn * c) { SocketClose(&(c->socket)); } -void ServerInit(TServer *srv) +int ServerInit(TServer *srv) { /********* Must check errors from these functions *************/ - if (!SocketInit()) - TraceExit("Can't initialize TCP sockets\n");; + if (!SocketInit()) { + TraceMsg("Can't initialize TCP sockets\n"); + return FALSE; + } - if (!SocketCreate(&srv->listensock)) - TraceExit("Can't create a socket\n");; + if (!SocketCreate(&srv->listensock)) { + TraceMsg("Can't create a socket\n"); + return FALSE; + } - if (!SocketBind(&srv->listensock,NULL,srv->port)) - TraceExit("Can't bind\n"); + if (!SocketBind(&srv->listensock,NULL,srv->port)) { + TraceMsg("Can't bind\n"); + return FALSE; + } - if (!SocketListen(&srv->listensock,MAX_CONN)) - TraceExit("Can't listen\n"); + if (!SocketListen(&srv->listensock,MAX_CONN)) { + TraceMsg("Can't listen\n"); + return FALSE; + } + + return TRUE; } /* With pthread configuration, our connections run as threads of a diff --git a/libs/xmlrpc-c/lib/abyss/src/trace.c b/libs/xmlrpc-c/lib/abyss/src/trace.c index 010c9c8c18..1d1174c6d4 100644 --- a/libs/xmlrpc-c/lib/abyss/src/trace.c +++ b/libs/xmlrpc-c/lib/abyss/src/trace.c @@ -63,5 +63,5 @@ void TraceExit(char *fmt,...) va_start(argptr,fmt); TraceVMsg(fmt,argptr); va_end(argptr); - exit(1); + abort(); } diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c index c6dcd2c99e..5eab533264 100644 --- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c +++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c @@ -304,7 +304,11 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_runtime(void) xmlrpc_server_abyss_set_handler(&env, &abyssServer, "/RPC2", registryP); - ServerInit(&abyssServer); + if (ServerInit(&abyssServer) != TRUE) { + globals.running = 0; + return SWITCH_STATUS_FALSE; + } + ServerAddHandler(&abyssServer, HandleHook); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Starting HTTP Port %d, DocRoot [%s]\n", globals.port, SWITCH_GLOBAL_dirs.htdocs_dir);