diff -r 73aacbf6e492 -r d680536f8c2f src/server/daemon/httplistener.c --- a/src/server/daemon/httplistener.c Mon Jan 16 14:06:52 2012 +0100 +++ b/src/server/daemon/httplistener.c Sat Jan 21 16:37:35 2012 +0100 @@ -50,24 +50,25 @@ #include "httplistener.h" #include "session.h" - -UcxMap *listener_map = NULL; +#include "configmanager.h" int start_all_listener() { - HttpListener *listener = get_http_listener("default"); - http_listener_start(listener); + ServerConfiguration *conf = cfgmgr_get_server_config(); + UcxList *ls = conf->listeners; + while(ls) { + HttpListener *listener = ls->data; + http_listener_start(listener); + ls = ls->next; + } return 0; } -HttpListener* get_http_listener(char *name) { - return ucx_map_cstr_get(listener_map, name); -} - HttpListener* http_listener_new(ListenerConfig *conf) { HttpListener *listener = malloc(sizeof(HttpListener)); + listener->name = conf->name; listener->session_handler = create_basic_session_handler(); listener->nacceptors = conf->nacceptors; @@ -104,10 +105,6 @@ listener->acceptors[i] = acceptor_new(listener); } - if(listener_map == NULL) { - listener_map = ucx_map_new(8); - } - ucx_map_cstr_put(listener_map, conf->name, listener); return listener; } @@ -123,6 +120,8 @@ for (int i=0;inacceptors;i++) { acceptor_start(listener->acceptors[i]); } + + return 0; } @@ -167,6 +166,7 @@ Connection *conn = malloc(sizeof(Connection)); conn->address = ca; conn->fd = clientfd; + conn->listener = listener; /* enqueue the connection */ listener->session_handler->enqueue_connection(