diff -r adb0bda54e6b -r a2c8fc23c90e src/server/daemon/httplistener.c --- a/src/server/daemon/httplistener.c Thu Feb 16 15:08:38 2012 +0100 +++ b/src/server/daemon/httplistener.c Wed Feb 22 23:20:39 2012 +0100 @@ -52,6 +52,7 @@ #include "session.h" #include "configmanager.h" +UcxMap *listener_map = NULL; int start_all_listener() { ServerConfiguration *conf = cfgmgr_get_server_config(); @@ -67,10 +68,20 @@ HttpListener* http_listener_new(ListenerConfig *conf) { + if(listener_map == NULL) { + listener_map = ucx_map_new(16); + } + + HttpListener *fl = ucx_map_sstr_get(listener_map, conf->name); + if(fl != NULL) { + return fl; + } + HttpListener *listener = malloc(sizeof(HttpListener)); listener->name = conf->name; listener->session_handler = create_basic_session_handler(); listener->nacceptors = conf->nacceptors; + ucx_map_sstr_put(listener_map, listener->name, listener); struct sockaddr_in servaddr; /* server address */