src/server/daemon/config.c

changeset 392
0aef555055ee
parent 388
30d29ef5b79a
child 393
79e542cc20a9
equal deleted inserted replaced
391:80ee93a7d257 392:0aef555055ee
193 ServerConfiguration *serverconfig = mgr->cfg; 193 ServerConfiguration *serverconfig = mgr->cfg;
194 194
195 // init logfile first 195 // init logfile first
196 UcxList *list; 196 UcxList *list;
197 197
198 log_ereport(LOG_DEBUG, "apply config: LogFile");
198 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("LogFile")); 199 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("LogFile"));
199 if(list) { 200 if(list) {
200 ConfigNode *logobj = list->data; 201 ConfigNode *logobj = list->data;
201 if(!logobj) { 202 if(!logobj) {
202 // error 203 // error
213 return NULL; 214 return NULL;
214 } 215 }
215 ucx_list_free(list); 216 ucx_list_free(list);
216 217
217 218
218 219 log_ereport(LOG_DEBUG, "apply config: Threadpool");
219 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Threadpool")); 220 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Threadpool"));
220 UCX_FOREACH(elm, list) { 221 UCX_FOREACH(elm, list) {
221 if(cfg_handle_threadpool(serverconfig, elm->data)) { 222 if(cfg_handle_threadpool(serverconfig, elm->data)) {
222 return NULL; 223 return NULL;
223 } 224 }
227 if(check_thread_pool_cfg() != 0) { 228 if(check_thread_pool_cfg() != 0) {
228 /* critical error */ 229 /* critical error */
229 return NULL; 230 return NULL;
230 } 231 }
231 232
233 log_ereport(LOG_DEBUG, "apply config: EventHandler");
232 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("EventHandler")); 234 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("EventHandler"));
233 UCX_FOREACH(elm, list) { 235 UCX_FOREACH(elm, list) {
234 if(cfg_handle_eventhandler( 236 if(cfg_handle_eventhandler(
235 serverconfig, elm->data)) { 237 serverconfig, elm->data)) {
236 // error 238 // error
242 /* critical error */ 244 /* critical error */
243 return NULL; 245 return NULL;
244 } 246 }
245 ucx_list_free(list); 247 ucx_list_free(list);
246 248
249 log_ereport(LOG_DEBUG, "apply config: AccessLog");
247 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("AccessLog")); 250 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("AccessLog"));
248 UCX_FOREACH(elm, list) { 251 UCX_FOREACH(elm, list) {
249 ConfigNode *scfgobj = elm->data; 252 ConfigNode *scfgobj = elm->data;
250 if(cfg_handle_accesslog(serverconfig, scfgobj)) { 253 if(cfg_handle_accesslog(serverconfig, scfgobj)) {
251 return NULL; 254 return NULL;
252 } 255 }
253 } 256 }
254 ucx_list_free(list); 257 ucx_list_free(list);
255 258
259 log_ereport(LOG_DEBUG, "apply config: AuthDB");
256 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("AuthDB")); 260 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("AuthDB"));
257 UCX_FOREACH(elm, list) { 261 UCX_FOREACH(elm, list) {
258 ConfigNode *scfgobj = elm->data; 262 ConfigNode *scfgobj = elm->data;
259 if(cfg_handle_authdb(serverconfig, scfgobj)) { 263 if(cfg_handle_authdb(serverconfig, scfgobj)) {
260 return NULL; 264 return NULL;
261 } 265 }
262 } 266 }
263 ucx_list_free(list); 267 ucx_list_free(list);
264 268
269 log_ereport(LOG_DEBUG, "apply config: Listener");
265 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Listener")); 270 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Listener"));
266 UCX_FOREACH(elm, list) { 271 UCX_FOREACH(elm, list) {
267 ConfigNode *scfgobj = elm->data; 272 ConfigNode *scfgobj = elm->data;
268 if(cfg_handle_listener(serverconfig, scfgobj)) { 273 if(cfg_handle_listener(serverconfig, scfgobj)) {
269 return NULL; 274 return NULL;
270 } 275 }
271 } 276 }
272 ucx_list_free(list); 277 ucx_list_free(list);
273 278
279 log_ereport(LOG_DEBUG, "apply config: VirtualServer");
274 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("VirtualServer")); 280 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("VirtualServer"));
275 UCX_FOREACH(elm, list) { 281 UCX_FOREACH(elm, list) {
276 ConfigNode *scfgobj = elm->data; 282 ConfigNode *scfgobj = elm->data;
277 if(cfg_handle_vs(serverconfig, scfgobj)) { 283 if(cfg_handle_vs(serverconfig, scfgobj)) {
278 return NULL; 284 return NULL;
279 } 285 }
280 } 286 }
281 ucx_list_free(list); 287 ucx_list_free(list);
282 288
289 log_ereport(LOG_DEBUG, "apply config: ResourcePool");
283 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("ResourcePool")); 290 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("ResourcePool"));
284 UCX_FOREACH(elm, list) { 291 UCX_FOREACH(elm, list) {
285 ConfigNode *scfgobj = elm->data; 292 ConfigNode *scfgobj = elm->data;
286 if(cfg_handle_resourcepool(serverconfig, scfgobj)) { 293 if(cfg_handle_resourcepool(serverconfig, scfgobj)) {
287 return NULL; 294 return NULL;
288 } 295 }
289 } 296 }
290 297
298 log_ereport(LOG_DEBUG, "apply config: Dav");
291 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Dav")); 299 list = serverconfig_get_node_list(serverconf->root, CONFIG_NODE_OBJECT, SC("Dav"));
292 UCX_FOREACH(elm, list) { 300 UCX_FOREACH(elm, list) {
293 ConfigNode *scfgobj = elm->data; 301 ConfigNode *scfgobj = elm->data;
294 if(cfg_handle_dav(serverconfig, scfgobj)) { 302 if(cfg_handle_dav(serverconfig, scfgobj)) {
295 return NULL; 303 return NULL;
367 375
368 int cfg_handle_logfile(ServerConfiguration *cfg, ConfigNode *obj) { 376 int cfg_handle_logfile(ServerConfiguration *cfg, ConfigNode *obj) {
369 scstr_t file = serverconfig_directive_value(obj, SC("File")); 377 scstr_t file = serverconfig_directive_value(obj, SC("File"));
370 scstr_t lvl = serverconfig_directive_value(obj, SC("Level")); 378 scstr_t lvl = serverconfig_directive_value(obj, SC("Level"));
371 379
372 if(file.ptr == NULL || lvl.ptr == NULL) { 380 int err = 0;
373 /* missing log file parameters */ 381 if(file.ptr == NULL) {
382 err = 1;
383 log_ereport(LOG_MISCONFIG, "LogFile: parameter missing: File");
384 }
385 if(lvl.ptr == NULL) {
386 err = 1;
387 log_ereport(LOG_MISCONFIG, "LogFile: parameter missing: Level");
388 }
389 if(err) {
374 return -1; 390 return -1;
375 } 391 }
376 392
377 LogConfig logcfg; 393 LogConfig logcfg;
378 logcfg.file = file.ptr; 394 logcfg.file = file.ptr;
948 // add the type for each extension to the map 964 // add the type for each extension to the map
949 UCX_FOREACH(xl, d->exts) { 965 UCX_FOREACH(xl, d->exts) {
950 sstr_t ext = sstr(xl->data); 966 sstr_t ext = sstr(xl->data);
951 sstr_t value = sstrdup(d->type); 967 sstr_t value = sstrdup(d->type);
952 if(ucx_map_sstr_put(map, ext, value.ptr)) { 968 if(ucx_map_sstr_put(map, ext, value.ptr)) {
969 log_ereport(LOG_CATASTROPHE, "OOM");
953 ret = -1; 970 ret = -1;
954 break; 971 break;
955 } 972 }
956 } 973 }
957 if(ret) { 974 if(ret) {
959 } 976 }
960 } 977 }
961 978
962 cfg->mimetypes = mimemap; 979 cfg->mimetypes = mimemap;
963 } else { 980 } else {
981 log_ereport(LOG_CATASTROPHE, "OOM");
964 ret = -1; 982 ret = -1;
965 } 983 }
966 984
967 free_mime_config(mimecfg); 985 free_mime_config(mimecfg);
968 return ret; 986 return ret;

mercurial