Lines Matching refs:srv
313 server_epoch_secs (server * const srv, unix_time64_t mono_ts_delta) in server_epoch_secs() argument
320 log_error(srv->errh, __FILE__, __LINE__, in server_epoch_secs()
324 config_feature_int(srv, "server.clock-jump-restart", 1800); in server_epoch_secs()
328 log_error(srv->errh, __FILE__, __LINE__, in server_epoch_secs()
330 srv->graceful_expire_ts = log_monotonic_secs + 5; in server_epoch_secs()
341 server *srv = ck_calloc(1, sizeof(*srv)); in server_init() local
343 srv->tmp_buf = buffer_init(); in server_init()
349 srv->startup_ts = log_epoch_secs = TIME64_CAST(time(NULL)); in server_init()
372 srv->errh = log_set_global_errh(NULL, 0); in server_init()
374 config_init(srv); in server_init()
376 srv->request_env = plugins_call_handle_request_env; in server_init()
377 srv->plugins_request_reset = plugins_call_handle_request_reset; in server_init()
379 srv->loadavg[0] = 0.0; in server_init()
380 srv->loadavg[1] = 0.0; in server_init()
381 srv->loadavg[2] = 0.0; in server_init()
382 srv->stdin_fd = -1; in server_init()
383 srv->default_server_tag = &default_server_tag; in server_init()
387 return srv; in server_init()
392 static void server_free(server *srv) { in server_free() argument
395 fdevent_fdnode_event_del(srv->ev, oneshot_fdn); in server_free()
396 fdevent_unregister(srv->ev, oneshot_fdn); in server_free()
404 if (srv->stdin_fd >= 0) { in server_free()
405 close(srv->stdin_fd); in server_free()
408 buffer_free(srv->tmp_buf); in server_free()
410 fdevent_free(srv->ev); in server_free()
412 config_free(srv); in server_free()
419 if (srv->errh != log_set_global_errh(NULL, 0)) in server_free()
420 fdlog_free(srv->errh); in server_free()
421 free(srv); in server_free()
426 static void remove_pid_file(server *srv) { in remove_pid_file() argument
428 if (srv->srvconf.pid_file && 0 <= pid_fd) { in remove_pid_file()
430 log_perror(srv->errh, __FILE__, __LINE__, in remove_pid_file()
431 "ftruncate failed for: %s", srv->srvconf.pid_file->ptr); in remove_pid_file()
438 if (srv->srvconf.pid_file && !srv->srvconf.changeroot) { in remove_pid_file()
439 if (0 != unlink(srv->srvconf.pid_file->ptr)) { in remove_pid_file()
441 log_perror(srv->errh, __FILE__, __LINE__, in remove_pid_file()
442 "unlink failed for: %s", srv->srvconf.pid_file->ptr); in remove_pid_file()
450 static server_socket * server_oneshot_getsock(server *srv, sock_addr *cnt_addr) { in server_oneshot_getsock() argument
452 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in server_oneshot_getsock()
453 srv_socket = srv->srv_sockets.ptr[i]; in server_oneshot_getsock()
465 } else if (srv->srv_sockets.used) { in server_oneshot_getsock()
466 return srv->srv_sockets.ptr[0]; in server_oneshot_getsock()
468 log_error(srv->errh, __FILE__, __LINE__, "no sockets configured"); in server_oneshot_getsock()
489 fdevent_fdnode_event_set(con->srv->ev, oneshot_fdn, n); in server_oneshot_read_cq()
511 fdevent_fdnode_event_set(con->srv->ev, oneshot_fdn, n); in server_oneshot_handle_fdevent()
534 static int server_oneshot_init_pipe(server *srv, int fdin, int fdout) { in server_oneshot_init_pipe() argument
566 log_error(srv->errh, __FILE__, __LINE__, "invalid local addr"); in server_oneshot_init_pipe()
570 srv_socket = server_oneshot_getsock(srv, &cnt_addr); in server_oneshot_init_pipe()
575 log_error(srv->errh, __FILE__, __LINE__, "invalid remote addr"); in server_oneshot_init_pipe()
581 log_perror(srv->errh, __FILE__, __LINE__, "fcntl()"); in server_oneshot_init_pipe()
585 log_perror(srv->errh, __FILE__, __LINE__, "fcntl()"); in server_oneshot_init_pipe()
589 con = connection_accepted(srv, srv_socket, &cnt_addr, fdout); in server_oneshot_init_pipe()
606 fdevent_register(srv->ev, fdin, server_oneshot_handle_fdevent, con); in server_oneshot_init_pipe()
607 fdevent_fdnode_event_set(srv->ev, oneshot_fdn, FDEVENT_RDHUP); in server_oneshot_init_pipe()
615 static int server_oneshot_init(server *srv, int fd) { in server_oneshot_init() argument
623 log_perror(srv->errh, __FILE__, __LINE__, "getsockname()"); in server_oneshot_init()
627 srv_socket = server_oneshot_getsock(srv, &cnt_addr); in server_oneshot_init()
635 log_perror(srv->errh, __FILE__, __LINE__, "getpeername()"); in server_oneshot_init()
641 log_perror(srv->errh, __FILE__, __LINE__, "fcntl()"); in server_oneshot_init()
649 con = connection_accepted(srv, srv_socket, &cnt_addr, fd); in server_oneshot_init()
824 static void server_sockets_save (server *srv) { /* graceful_restart */ in server_sockets_save() argument
825 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) in server_sockets_save()
826 srv->srv_sockets.ptr[i]->srv = NULL; /* srv will shortly be invalid */ in server_sockets_save()
827 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) in server_sockets_save()
828 srv->srv_sockets_inherited.ptr[i]->srv = NULL; /* srv to be invalid */ in server_sockets_save()
829 memcpy(&graceful_sockets, &srv->srv_sockets, sizeof(server_socket_array)); in server_sockets_save()
830 memset(&srv->srv_sockets, 0, sizeof(server_socket_array)); in server_sockets_save()
831 memcpy(&inherited_sockets, &srv->srv_sockets_inherited, sizeof(server_socket_array)); in server_sockets_save()
832 memset(&srv->srv_sockets_inherited, 0, sizeof(server_socket_array)); in server_sockets_save()
837 static void server_sockets_restore (server *srv) { /* graceful_restart */ in server_sockets_restore() argument
838 memcpy(&srv->srv_sockets, &graceful_sockets, sizeof(server_socket_array)); in server_sockets_restore()
840 memcpy(&srv->srv_sockets_inherited, &inherited_sockets, sizeof(server_socket_array)); in server_sockets_restore()
842 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in server_sockets_restore()
843 srv->srv_sockets.ptr[i]->srv = srv; /* update ptr */ in server_sockets_restore()
844 srv->srv_sockets.ptr[i]->sidx= (unsigned short)~0u; in server_sockets_restore()
846 for (uint32_t i = 0; i < srv->srv_sockets_inherited.used; ++i) in server_sockets_restore()
847 srv->srv_sockets_inherited.ptr[i]->srv = srv; /* update ptr */ in server_sockets_restore()
851 static int server_sockets_set_nb_cloexec (server *srv) { in server_sockets_set_nb_cloexec() argument
852 if (srv->sockets_disabled) return 0; /* lighttpd -1 (one-shot mode) */ in server_sockets_set_nb_cloexec()
853 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in server_sockets_set_nb_cloexec()
854 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in server_sockets_set_nb_cloexec()
856 log_perror(srv->errh, __FILE__, __LINE__, "fcntl()"); in server_sockets_set_nb_cloexec()
864 static void server_sockets_set_event (server *srv, int event) { in server_sockets_set_event() argument
865 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in server_sockets_set_event()
866 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in server_sockets_set_event()
867 fdevent_fdnode_event_set(srv->ev, srv_socket->fdn, event); in server_sockets_set_event()
872 static void server_sockets_unregister (server *srv) { in server_sockets_unregister() argument
873 if (2 == srv->sockets_disabled) return; in server_sockets_unregister()
874 srv->sockets_disabled = 2; in server_sockets_unregister()
875 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) in server_sockets_unregister()
876 network_unregister_sock(srv, srv->srv_sockets.ptr[i]); in server_sockets_unregister()
880 static void server_sockets_close (server *srv) { in server_sockets_close() argument
886 if (3 == srv->sockets_disabled) return; in server_sockets_close()
887 for (uint32_t i = 0; i < srv->srv_sockets.used; ++i) { in server_sockets_close()
888 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in server_sockets_close()
890 if (2 != srv->sockets_disabled) network_unregister_sock(srv,srv_socket); in server_sockets_close()
895 srv->sockets_disabled = 3; in server_sockets_close()
911 static int server_graceful_state_bg (server *srv) { in server_graceful_state_bg() argument
918 if (!config_feature_bool(srv, "server.graceful-restart-bg", 0)) return 0; in server_graceful_state_bg()
922 array_get_data_unset(srv->srvconf.feature_flags, in server_graceful_state_bg()
932 char ** const argv = srv->argv; in server_graceful_state_bg()
933 if (0 == srv->srvconf.dont_daemonize in server_graceful_state_bg()
939 plugins_call_handle_sighup(srv); in server_graceful_state_bg()
940 fdlog_files_cycle(srv->errh); /* reopen log files, not pipes */ in server_graceful_state_bg()
964 log_error(srv->errh, __FILE__, __LINE__, in server_graceful_state_bg()
975 network_socket_activation_to_env(srv); in server_graceful_state_bg()
980 if (0 == srv->srvconf.max_worker) { in server_graceful_state_bg()
981 buffer * const tb = srv->tmp_buf; in server_graceful_state_bg()
995 if (0 != srv->srvconf.max_worker) in server_graceful_state_bg()
996 server_sockets_close(srv);/*(close before parent reaps pid in waitpid)*/ in server_graceful_state_bg()
1010 srv->srvconf.pid_file = NULL; in server_graceful_state_bg()
1014 log_error(srv->errh, __FILE__, __LINE__, in server_graceful_state_bg()
1016 (long long)getpid(), srv->srvconf.max_conns - srv->lim_conns); in server_graceful_state_bg()
1018 if (0 == srv->srvconf.max_worker) { in server_graceful_state_bg()
1020 srv->graceful_expire_ts = 0; in server_graceful_state_bg()
1029 static void server_graceful_shutdown_maint (server *srv) { in server_graceful_shutdown_maint() argument
1032 if (!srv->graceful_expire_ts) return; in server_graceful_shutdown_maint()
1033 if (srv->graceful_expire_ts >= log_monotonic_secs) return; in server_graceful_shutdown_maint()
1035 connection_graceful_shutdown_maint(srv); in server_graceful_shutdown_maint()
1040 static void server_graceful_state (server *srv) { in server_graceful_state() argument
1043 if (0 == srv->graceful_expire_ts) { in server_graceful_state()
1044 srv->graceful_expire_ts = in server_graceful_state()
1045 config_feature_int(srv, "server.graceful-shutdown-timeout", 8); in server_graceful_state()
1046 if (srv->graceful_expire_ts) in server_graceful_state()
1047 srv->graceful_expire_ts += log_monotonic_secs; in server_graceful_state()
1049 server_graceful_shutdown_maint(srv); in server_graceful_state()
1052 if (2 == srv->sockets_disabled || 3 == srv->sockets_disabled) { in server_graceful_state()
1057 log_error(srv->errh,__FILE__,__LINE__,"[note] graceful shutdown started"); in server_graceful_state()
1060 if (srv->srvconf.changeroot || oneshot_fd || 2 == graceful_shutdown) in server_graceful_state()
1064 if (!server_graceful_state_bg(srv)) in server_graceful_state()
1065 server_sockets_unregister(srv); in server_graceful_state()
1069 server_sockets_close(srv); in server_graceful_state()
1070 remove_pid_file(srv); in server_graceful_state()
1072 srv->srvconf.pid_file = NULL; in server_graceful_state()
1078 static void server_sockets_enable (server *srv) { in server_sockets_enable() argument
1079 server_sockets_set_event(srv, FDEVENT_IN); in server_sockets_enable()
1080 srv->sockets_disabled = 0; in server_sockets_enable()
1081 log_error(srv->errh, __FILE__, __LINE__, "[note] sockets enabled again"); in server_sockets_enable()
1086 static void server_sockets_disable (server *srv) { in server_sockets_disable() argument
1087 server_sockets_set_event(srv, 0); in server_sockets_disable()
1088 srv->sockets_disabled = 1; in server_sockets_disable()
1089 log_error(srv->errh, __FILE__, __LINE__, in server_sockets_disable()
1090 (0 == srv->lim_conns) in server_sockets_disable()
1096 static void server_overload_check (server *srv) { in server_overload_check() argument
1097 if (srv->cur_fds < srv->max_fds_lowat && 0 != srv->lim_conns) in server_overload_check()
1098 server_sockets_enable(srv); in server_overload_check()
1101 static void server_load_check (server *srv) { in server_load_check() argument
1103 if (srv->cur_fds > srv->max_fds_hiwat || 0 == srv->lim_conns) in server_load_check()
1104 server_sockets_disable(srv); in server_load_check()
1109 static int server_main_setup_workers (server * const srv, const int npids) { in server_main_setup_workers() argument
1144 server_epoch_secs(srv, log_monotonic_secs - mono_ts); in server_main_setup_workers()
1145 if (plugins_call_handle_waitpid(srv, pid, status) in server_main_setup_workers()
1171 server_epoch_secs(srv, log_monotonic_secs - mono_ts); in server_main_setup_workers()
1175 fdlog_files_cycle(srv->errh);/*reopen log files, not pipes*/ in server_main_setup_workers()
1184 plugins_call_handle_trigger(srv); in server_main_setup_workers()
1198 server_graceful_state(srv); in server_main_setup_workers()
1223 srv->srvconf.pid_file = NULL; in server_main_setup_workers()
1226 srv->pid = getpid(); in server_main_setup_workers()
1235 static int server_main_setup (server * const srv, int argc, char **argv) { in server_main_setup() argument
1261 srv->argv = argv; in server_main_setup()
1266 if (srv->config_data_base) { in server_main_setup()
1267 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1271 if (config_read(srv, optarg)) { in server_main_setup()
1276 srv->srvconf.modules_dir = optarg; in server_main_setup()
1282 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1293 case 'D': srv->srvconf.dont_daemonize = 1; break; in server_main_setup()
1304 if (!srv->config_data_base && NULL != getenv("NSSM_SERVICE_NAME")) { in server_main_setup()
1307 log_perror(srv->errh, __FILE__, __LINE__, "chdir %s failed", dir); in server_main_setup()
1310 srv->srvconf.dont_daemonize = 1; in server_main_setup()
1311 srv->srvconf.modules_dir = "modules"; in server_main_setup()
1312 if (config_read(srv, "conf/lighttpd.conf")) return -1; in server_main_setup()
1316 if (!srv->config_data_base) { in server_main_setup()
1317 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1322 if (1 == srv->srvconf.max_worker) in server_main_setup()
1323 srv->srvconf.max_worker = 0; in server_main_setup()
1326 config_print(srv); in server_main_setup()
1327 puts(srv->tmp_buf->ptr); in server_main_setup()
1331 srv->srvconf.pid_file = NULL; in server_main_setup()
1336 srv->srvconf.preflight_check = 1; in server_main_setup()
1337 srv->srvconf.dont_daemonize = 1; in server_main_setup()
1346 if (srv->srvconf.max_conns <= 16 && malloc_top_pad == 524288) in server_main_setup()
1352 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1357 srv->sockets_disabled = 2; in server_main_setup()
1358 srv->srvconf.dont_daemonize = 1; in server_main_setup()
1359 srv->srvconf.pid_file = NULL; in server_main_setup()
1360 if (srv->srvconf.max_worker) { in server_main_setup()
1361 srv->srvconf.max_worker = 0; in server_main_setup()
1362 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1368 log_perror(srv->errh, __FILE__, __LINE__, "fstat()"); in server_main_setup()
1375 log_perror(srv->errh, __FILE__, __LINE__, "dup()"); in server_main_setup()
1382 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1388 …if (srv->srvconf.bindhost && buffer_is_equal_string(srv->srvconf.bindhost, CONST_STR_LEN("/dev/std… in server_main_setup()
1389 if (-1 == srv->stdin_fd) in server_main_setup()
1390 srv->stdin_fd = dup(STDIN_FILENO); in server_main_setup()
1391 if (srv->stdin_fd <= STDERR_FILENO) { in server_main_setup()
1392 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1411 log_perror(srv->errh, __FILE__, __LINE__, in server_main_setup()
1417 log_perror(srv->errh, __FILE__, __LINE__, in server_main_setup()
1432 if (!config_feature_bool(srv, "server.h2-discard-backend-1xx", 0)) in server_main_setup()
1436 if (!config_feature_bool(srv, "server.h1-discard-backend-1xx", 0)) in server_main_setup()
1439 http_range_config_allow_http10(config_feature_bool(srv, "http10.range", 0)); in server_main_setup()
1441 if (0 != config_set_defaults(srv)) { in server_main_setup()
1442 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1447 if (plugins_load(srv)) { in server_main_setup()
1448 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1453 if (HANDLER_GO_ON != plugins_call_init(srv)) { in server_main_setup()
1454 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1461 for (const char *pname = NULL; i < srv->plugins.used; ++i) { in server_main_setup()
1462 plugin *p = ((plugin **)srv->plugins.ptr)[i]; in server_main_setup()
1465 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1476 if (-1 == pid_fd && srv->srvconf.pid_file) { in server_main_setup()
1477 const char *pidfile = srv->srvconf.pid_file->ptr; in server_main_setup()
1481 log_perror(srv->errh, __FILE__, __LINE__, in server_main_setup()
1487 log_perror(srv->errh, __FILE__, __LINE__, in server_main_setup()
1492 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1498 log_perror(srv->errh, __FILE__, __LINE__, in server_main_setup()
1514 log_perror(srv->errh, __FILE__, __LINE__, "getrlimit()"); in server_main_setup()
1521 if (use_rlimit && srv->srvconf.max_fds in server_main_setup()
1522 && (i_am_root || srv->srvconf.max_fds <= rlim.rlim_max)) { in server_main_setup()
1526 rlim.rlim_cur = srv->srvconf.max_fds; in server_main_setup()
1527 if (i_am_root) rlim.rlim_max = srv->srvconf.max_fds; in server_main_setup()
1530 log_perror(srv->errh, __FILE__, __LINE__, "setrlimit()"); in server_main_setup()
1531 …log_error(srv->errh, __FILE__, __LINE__, "setrlimit() may need root to run once: setsebool -P http… in server_main_setup()
1533 if (srv->srvconf.max_fds > rlim_cur) in server_main_setup()
1534 srv->srvconf.max_fds = rlim_cur; in server_main_setup()
1539 if (0 == srv->srvconf.max_fds) in server_main_setup()
1540 srv->srvconf.max_fds = (rlim.rlim_cur <= 4096) in server_main_setup()
1545 if (use_rlimit && srv->srvconf.enable_cores && getrlimit(RLIMIT_CORE, &rlim) == 0) { in server_main_setup()
1553 if (0 != network_init(srv, srv->stdin_fd)) { in server_main_setup()
1556 srv->stdin_fd = -1; in server_main_setup()
1564 if (srv->srvconf.groupname) { in server_main_setup()
1565 if (NULL == (grp = getgrnam(srv->srvconf.groupname->ptr))) { in server_main_setup()
1566 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1567 "can't find groupname %s", srv->srvconf.groupname->ptr); in server_main_setup()
1572 if (srv->srvconf.username) { in server_main_setup()
1573 if (NULL == (pwd = getpwnam(srv->srvconf.username->ptr))) { in server_main_setup()
1574 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1575 "can't find username %s", srv->srvconf.username->ptr); in server_main_setup()
1580 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1586 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1594 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1606 log_perror(srv->errh, __FILE__, __LINE__, "setgid()"); in server_main_setup()
1610 log_perror(srv->errh, __FILE__, __LINE__, "setgroups()"); in server_main_setup()
1613 if (srv->srvconf.username) { in server_main_setup()
1614 initgroups(srv->srvconf.username->ptr, grp->gr_gid); in server_main_setup()
1619 if (srv->srvconf.changeroot) { in server_main_setup()
1622 if (-1 == chroot(srv->srvconf.changeroot->ptr)) { in server_main_setup()
1623 log_perror(srv->errh, __FILE__, __LINE__, "chroot()"); in server_main_setup()
1627 log_perror(srv->errh, __FILE__, __LINE__, "chdir()"); in server_main_setup()
1636 log_perror(srv->errh, __FILE__, __LINE__, "setuid()"); in server_main_setup()
1645 if (srv->srvconf.enable_cores) { in server_main_setup()
1650 if (srv->srvconf.enable_cores) { in server_main_setup()
1659 if (srv->srvconf.enable_cores) { in server_main_setup()
1667 if (0 == srv->srvconf.dont_daemonize && 0 == graceful_restart) { in server_main_setup()
1676 srv->gid = getgid(); in server_main_setup()
1677 srv->uid = getuid(); in server_main_setup()
1678 srv->pid = getpid(); in server_main_setup()
1682 buffer * const tb = srv->tmp_buf; in server_main_setup()
1684 buffer_append_int(tb, srv->pid); in server_main_setup()
1687 log_perror(srv->errh, __FILE__, __LINE__, "Couldn't write pid file"); in server_main_setup()
1698 if (!srv->srvconf.preflight_check) { in server_main_setup()
1699 if (-1 == config_log_error_open(srv)) { in server_main_setup()
1700 log_error(srv->errh, __FILE__, __LINE__, "Opening errorlog failed. Going down."); in server_main_setup()
1704 log_error(srv->errh, __FILE__, __LINE__, "server started (" PACKAGE_DESC ")"); in server_main_setup()
1707 if (HANDLER_GO_ON != plugins_call_set_defaults(srv)) { in server_main_setup()
1708 log_error(srv->errh, __FILE__, __LINE__, "Configuration of plugins failed. Going down."); in server_main_setup()
1712 if (!config_finalize(srv, &default_server_tag)) { in server_main_setup()
1716 if (srv->srvconf.preflight_check) { in server_main_setup()
1727 if (0 == srv->srvconf.dont_daemonize && -1 != parent_pipe_fd) { in server_main_setup()
1732 if (idle_limit && srv->srvconf.max_worker) { in server_main_setup()
1733 srv->srvconf.max_worker = 0; in server_main_setup()
1734 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1739 if (srv->srvconf.max_worker > 0) { in server_main_setup()
1740 int rc = server_main_setup_workers(srv, srv->srvconf.max_worker); in server_main_setup()
1746 srv->max_fds = (int)srv->srvconf.max_fds; in server_main_setup()
1747 if (srv->max_fds < 32) /*(sanity check; not expected)*/ in server_main_setup()
1748 srv->max_fds = 32; /*(server load checks will fail if too low)*/ in server_main_setup()
1749 srv->ev = fdevent_init(srv->srvconf.event_handler, &srv->max_fds, &srv->cur_fds, srv->errh); in server_main_setup()
1750 if (NULL == srv->ev) { in server_main_setup()
1751 log_error(srv->errh, __FILE__, __LINE__, "fdevent_init failed"); in server_main_setup()
1755 srv->max_fds_lowat = srv->max_fds * 8 / 10; in server_main_setup()
1756 srv->max_fds_hiwat = srv->max_fds * 9 / 10; in server_main_setup()
1759 if (srv->srvconf.max_conns > srv->max_fds/2) { in server_main_setup()
1761 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1763 srv->srvconf.max_conns, srv->max_fds); in server_main_setup()
1764 srv->lim_conns = srv->srvconf.max_conns = srv->max_fds/2; in server_main_setup()
1765 } else if (srv->srvconf.max_conns) { in server_main_setup()
1767 srv->lim_conns = srv->srvconf.max_conns; in server_main_setup()
1770 srv->lim_conns = srv->srvconf.max_conns = srv->max_fds/3; in server_main_setup()
1778 if (0 != network_register_fdevents(srv)) { in server_main_setup()
1782 chunkqueue_internal_pipes(config_feature_bool(srv, "chunkqueue.splice", 1)); in server_main_setup()
1785 if (!stat_cache_init(srv->ev, srv->errh)) { in server_main_setup()
1786 log_error(srv->errh, __FILE__, __LINE__, in server_main_setup()
1800 log_perror(srv->errh, __FILE__, __LINE__, "setitimer()"); in server_main_setup()
1810 srv->cur_fds = fd; in server_main_setup()
1815 if (0 != server_sockets_set_nb_cloexec(srv)) { in server_main_setup()
1820 if (HANDLER_GO_ON != plugins_call_worker_init(srv)) in server_main_setup()
1824 if (server_oneshot_init_pipe(srv, oneshot_fd, oneshot_fdout)) { in server_main_setup()
1829 else if (oneshot_fd && server_oneshot_init(srv, oneshot_fd)) { in server_main_setup()
1833 if (0 == srv->srvconf.max_worker) in server_main_setup()
1841 static void server_handle_sighup (server * const srv) { in server_handle_sighup() argument
1845 plugins_call_handle_sighup(srv); in server_handle_sighup()
1846 fdlog_files_cycle(srv->errh); /* reopen log files, not pipes */ in server_handle_sighup()
1848 log_error(srv->errh, __FILE__, __LINE__, in server_handle_sighup()
1853 log_error(srv->errh, __FILE__, __LINE__, in server_handle_sighup()
1859 static void server_handle_sigalrm (server * const srv, unix_time64_t mono_ts, unix_time64_t last_ac… in server_handle_sigalrm() argument
1861 plugins_call_handle_trigger(srv); in server_handle_sigalrm()
1864 log_epoch_secs = server_epoch_secs(srv, 0); in server_handle_sigalrm()
1868 log_error(srv->errh, __FILE__, __LINE__, in server_handle_sigalrm()
1875 server_sockets_close(srv); in server_handle_sigalrm()
1881 if (srv->loadts + 30 < mono_ts) { in server_handle_sigalrm()
1882 if (-1 != getloadavg(srv->loadavg, 3)) { in server_handle_sigalrm()
1883 srv->loadts = mono_ts; in server_handle_sigalrm()
1890 fdlog_flushall(srv->errh); in server_handle_sigalrm()
1895 connections_pool_clear(srv); in server_handle_sigalrm()
1900 if (0 == srv->srvconf.max_worker) in server_handle_sigalrm()
1906 config_reset_config_bytes_sec(srv->config_data_base); in server_handle_sigalrm()
1909 server_graceful_shutdown_maint(srv); in server_handle_sigalrm()
1910 connection_periodic_maint(srv, mono_ts); in server_handle_sigalrm()
1914 static void server_handle_sigchld (server * const srv) { in server_handle_sigchld() argument
1920 if (plugins_call_handle_waitpid(srv, pid, status) != HANDLER_GO_ON) { in server_handle_sigchld()
1923 if (0 == srv->srvconf.max_worker) { in server_handle_sigchld()
1945 static void server_main_loop (server * const srv) { in server_main_loop() argument
1947 log_epoch_secs = server_epoch_secs(srv, 0); in server_main_loop()
1953 server_handle_sighup(srv); in server_main_loop()
1963 server_handle_sigalrm(srv, mono_ts, last_active_ts); in server_main_loop()
1971 server_handle_sigchld(srv); in server_main_loop()
1975 server_graceful_state(srv); in server_main_loop()
1976 if (NULL == srv->conns && graceful_shutdown) { in server_main_loop()
1982 } else if (srv->sockets_disabled) { in server_main_loop()
1983 server_overload_check(srv); in server_main_loop()
1985 server_load_check(srv); in server_main_loop()
1994 if (fdevent_poll(srv->ev, log_con_jqueue != sentinel ? 0 : 1000) > 0) in server_main_loop()
2056 server * const srv = server_init(); in main() local
2059 server_sockets_restore(srv); in main()
2063 rc = server_main_setup(srv, argc, argv); in main()
2066 server_main_loop(srv); in main()
2069 server_graceful_state(srv); in main()
2072 if (NULL == srv->conns) rc = 0; in main()
2074 log_error(srv->errh, __FILE__, __LINE__, in main()
2078 log_error(srv->errh, __FILE__, __LINE__, in main()
2083 log_error(srv->errh, __FILE__, __LINE__, in main()
2091 remove_pid_file(srv); in main()
2092 config_log_error_close(srv); in main()
2094 server_sockets_save(srv); in main()
2096 network_close(srv); in main()
2098 connections_free(srv); in main()
2099 plugins_free(srv); in main()
2100 server_free(srv); in main()