src/server/daemon/webserver.c

changeset 556
b036ccad4b49
parent 461
9b20b8f3582b
equal deleted inserted replaced
555:66b0accda0a8 556:b036ccad4b49
246 tmp_priv.ptr, 246 tmp_priv.ptr,
247 strerror(errno)); 247 strerror(errno));
248 return -1; 248 return -1;
249 } 249 }
250 } 250 }
251 free(tmp_priv.ptr);
251 252
252 253
253 // create srvctrl unix domain socket 254 // create srvctrl unix domain socket
254 // this socket is used for stop, reconfigure and other operations 255 // this socket is used for stop, reconfigure and other operations
255 if(srvctrl_init(cfg)) { 256 if(srvctrl_init(cfg)) {
277 278
278 void webserver_shutdown() { 279 void webserver_shutdown() {
279 log_ereport(LOG_INFORM, "webserver shutdown"); 280 log_ereport(LOG_INFORM, "webserver shutdown");
280 281
281 srvctrl_shutdown(); 282 srvctrl_shutdown();
282 283 }
284
285 void webserver_end() {
283 // execute restart callbacks 286 // execute restart callbacks
284 RestartCallback *re = atrestart; 287 RestartCallback *re = atrestart;
285 while(re) { 288 while(re) {
286 re->func(re->data); 289 re->func(re->data);
287 re = re->next; 290 re = re->next;
288 } 291 }
292
293 shutdown_threadpools();
294
295 shutdown_eventhandlers_wait();
296
297 webserver_destroy();
289 } 298 }
290 299
291 int webserver_reconfig() { 300 int webserver_reconfig() {
292 CfgManager mgr; 301 CfgManager mgr;
293 if(cfgmgr_load_config(&mgr) != 0) { 302 if(cfgmgr_load_config(&mgr) != 0) {
324 } else { 333 } else {
325 atrestart = cb; 334 atrestart = cb;
326 } 335 }
327 } 336 }
328 337
338 void webserver_destroy() {
339 // free some stuff
340 // this is not necessary, because the whole process will exit
341 // however it will result in a nicer valgrind output with less
342 // memory leaks
343 pool_destroy(cfg_get_init_pool());
344 }
345
329 int nsapi_runtime_version() { 346 int nsapi_runtime_version() {
330 return 303; 347 return 303;
331 } 348 }
332 349
333 350

mercurial