src/server/daemon/httplistener.c

changeset 23
a2c8fc23c90e
parent 21
627b09ee74e4
child 25
5dee29c7c530
equal deleted inserted replaced
22:adb0bda54e6b 23:a2c8fc23c90e
50 #include "httplistener.h" 50 #include "httplistener.h"
51 51
52 #include "session.h" 52 #include "session.h"
53 #include "configmanager.h" 53 #include "configmanager.h"
54 54
55 UcxMap *listener_map = NULL;
55 56
56 int start_all_listener() { 57 int start_all_listener() {
57 ServerConfiguration *conf = cfgmgr_get_server_config(); 58 ServerConfiguration *conf = cfgmgr_get_server_config();
58 UcxList *ls = conf->listeners; 59 UcxList *ls = conf->listeners;
59 while(ls) { 60 while(ls) {
65 return 0; 66 return 0;
66 } 67 }
67 68
68 69
69 HttpListener* http_listener_new(ListenerConfig *conf) { 70 HttpListener* http_listener_new(ListenerConfig *conf) {
71 if(listener_map == NULL) {
72 listener_map = ucx_map_new(16);
73 }
74
75 HttpListener *fl = ucx_map_sstr_get(listener_map, conf->name);
76 if(fl != NULL) {
77 return fl;
78 }
79
70 HttpListener *listener = malloc(sizeof(HttpListener)); 80 HttpListener *listener = malloc(sizeof(HttpListener));
71 listener->name = conf->name; 81 listener->name = conf->name;
72 listener->session_handler = create_basic_session_handler(); 82 listener->session_handler = create_basic_session_handler();
73 listener->nacceptors = conf->nacceptors; 83 listener->nacceptors = conf->nacceptors;
84 ucx_map_sstr_put(listener_map, listener->name, listener);
74 85
75 struct sockaddr_in servaddr; /* server address */ 86 struct sockaddr_in servaddr; /* server address */
76 87
77 /* init address structure */ 88 /* init address structure */
78 memset(&servaddr, 0, sizeof(servaddr)); 89 memset(&servaddr, 0, sizeof(servaddr));

mercurial