From e031ff4a491fa98f65ca2a1928a3da36fa6fdb43 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 25 Apr 2007 19:57:14 +0000 Subject: [PATCH] resolve http://jira.freeswitch.org/browse/MDXMLINT-6 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5016 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/xmlrpc-c/.update | 2 +- libs/xmlrpc-c/include/xmlrpc-c/abyss.h | 2 +- libs/xmlrpc-c/lib/abyss/src/server.c | 28 +++++++++++++++-------- libs/xmlrpc-c/lib/abyss/src/trace.c | 2 +- src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c | 6 ++++- 5 files changed, 27 insertions(+), 13 deletions(-) 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);