src/server/daemon/httplistener.c

changeset 23
a2c8fc23c90e
parent 21
627b09ee74e4
child 25
5dee29c7c530
--- 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 */
 

mercurial