Lines Matching refs:srv
209 server *srv = calloc(1, sizeof(*srv)); in server_init() local
210 assert(srv); in server_init()
212 srv->x = buffer_init(); in server_init()
221 srv->empty_string = buffer_init_string(""); in server_init()
237 srv->x = array_init(); in server_init()
245 srv->mtime_cache[i].mtime = (time_t)-1; in server_init()
246 srv->mtime_cache[i].str = buffer_init(); in server_init()
250 && 1 == fread(srv->entropy, sizeof(srv->entropy), 1, frandom)) { in server_init()
252 memcpy(&e, srv->entropy, sizeof(e) < sizeof(srv->entropy) ? sizeof(e) : sizeof(srv->entropy)); in server_init()
254 srv->is_real_entropy = 1; in server_init()
258 srv->is_real_entropy = 0; in server_init()
259 for (j = 0; j < sizeof(srv->entropy); j++) in server_init()
260 srv->entropy[j] = rand(); in server_init()
264 srv->cur_ts = time(NULL); in server_init()
265 srv->startup_ts = srv->cur_ts; in server_init()
267 srv->conns = calloc(1, sizeof(*srv->conns)); in server_init()
268 assert(srv->conns); in server_init()
270 srv->joblist = calloc(1, sizeof(*srv->joblist)); in server_init()
271 assert(srv->joblist); in server_init()
273 srv->fdwaitqueue = calloc(1, sizeof(*srv->fdwaitqueue)); in server_init()
274 assert(srv->fdwaitqueue); in server_init()
276 srv->srvconf.modules = array_init(); in server_init()
277 srv->srvconf.modules_dir = buffer_init_string(LIBRARY_DIR); in server_init()
278 srv->srvconf.network_backend = buffer_init(); in server_init()
279 srv->srvconf.upload_tempdirs = array_init(); in server_init()
280 srv->srvconf.reject_expect_100_with_417 = 1; in server_init()
283 srv->errorlog_fd = STDERR_FILENO; in server_init()
284 srv->errorlog_mode = ERRORLOG_FD; in server_init()
286 srv->split_vals = array_init(); in server_init()
288 return srv; in server_init()
292 server_free(server *srv) { in server_free() argument
296 buffer_free(srv->mtime_cache[i].str); in server_free()
300 buffer_free(srv->x); in server_free()
327 fdevent_unregister(srv->ev, srv->fd); in server_free()
329 fdevent_free(srv->ev); in server_free()
331 free(srv->conns); in server_free()
333 if (srv->config_storage) { in server_free()
334 for (i = 0; i < srv->config_context->used; i++) { in server_free()
335 specific_config *s = srv->config_storage[i]; in server_free()
356 free(srv->config_storage); in server_free()
357 srv->config_storage = NULL; in server_free()
361 array_free(srv->x); in server_free()
369 joblist_free(srv, srv->joblist); in server_free()
370 fdwaitqueue_free(srv, srv->fdwaitqueue); in server_free()
372 if (srv->stat_cache) { in server_free()
373 stat_cache_free(srv->stat_cache); in server_free()
376 array_free(srv->srvconf.modules); in server_free()
377 array_free(srv->split_vals); in server_free()
380 if (srv->ssl_is_init) { in server_free()
388 free(srv); in server_free()
392 load_plugins(server *srv) in load_plugins() argument
394 if (HANDLER_GO_ON != plugins_call_init(srv)) { in load_plugins()
395 log_error_write(srv, __FILE__, __LINE__, "s", in load_plugins()
403 set_max_conns(server *srv, int restrict_limit) in set_max_conns() argument
406 if (srv->srvconf.max_conns > srv->max_fds/2) { in set_max_conns()
408 log_error_write(srv, __FILE__, __LINE__, "sdd", in set_max_conns()
410 srv->srvconf.max_conns, srv->max_fds); in set_max_conns()
411 srv->max_conns = srv->max_fds/2; in set_max_conns()
412 } else if (srv->srvconf.max_conns) { in set_max_conns()
414 srv->max_conns = srv->srvconf.max_conns; in set_max_conns()
417 srv->max_conns = srv->max_fds/3; in set_max_conns()
420 srv->max_conns = srv->srvconf.max_conns; in set_max_conns()
425 initialize_fd_framework(server *srv) in initialize_fd_framework() argument
430 if (NULL == (srv->ev = fdevent_init(srv, srv->max_fds + 1, srv->event_handler))) { in initialize_fd_framework()
431 log_error_write(srv, __FILE__, __LINE__, in initialize_fd_framework()
441 if (0 != network_register_fdevents(srv)) { in initialize_fd_framework()
446 if (NULL == (srv->stat_cache = stat_cache_init())) { in initialize_fd_framework()
447 log_error_write(srv, __FILE__, __LINE__, "s", in initialize_fd_framework()
455 if (srv->srvconf.stat_cache_engine == STAT_CACHE_ENGINE_FAM) { in initialize_fd_framework()
456 if (0 != FAMOpen2(srv->stat_cache->fam, "lighttpd")) { in initialize_fd_framework()
457 log_error_write(srv, __FILE__, __LINE__, "s", in initialize_fd_framework()
462 FAMNoExists(srv->stat_cache->fam); in initialize_fd_framework()
465 srv->stat_cache->fam_fcce_ndx = -1; in initialize_fd_framework()
466 …fdevent_register(srv->ev, FAMCONNECTION_GETFD(srv->stat_cache->fam), stat_cache_handle_fdevent, NU… in initialize_fd_framework()
467 …fdevent_event_set(srv->ev, &(srv->stat_cache->fam_fcce_ndx), FAMCONNECTION_GETFD(srv->stat_cache->… in initialize_fd_framework()
473 srv->cur_fds = open("/dev/null", O_RDONLY); in initialize_fd_framework()
474 close(srv->cur_fds); in initialize_fd_framework()
476 for (i = 0; i < srv->srv_sockets.used; i++) { in initialize_fd_framework()
477 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in initialize_fd_framework()
478 if (-1 == fdevent_fcntl_set(srv->ev, srv_socket->fd)) { in initialize_fd_framework()
479 log_error_write(srv, __FILE__, __LINE__, "ss", "fcntl failed:", strerror(errno)); in initialize_fd_framework()
488 set_listen_backlog(server *srv) in set_listen_backlog() argument
490 fprintf(stderr, "Applying listen_backlog: %d\n", srv->srvconf.listen_backlog); in set_listen_backlog()
491 srv->listen_backlog = srv->srvconf.listen_backlog; in set_listen_backlog()
622 server *srv = (server *)svrptr; in start_server() local
623 size_t cpu = srv->cpu; in start_server()
632 srv->mctx = mtcp_create_context(cpu); in start_server()
633 if (!srv->mctx) { in start_server()
639 srv->max_fds = srv->max_conns * 3; in start_server()
647 if (network_init(srv) == -1) in start_server()
650 set_max_conns(srv, 0); in start_server()
652 set_max_conns(srv, 1); in start_server()
654 load_plugins(srv); in start_server()
658 if (-1 == log_error_open(srv)) { in start_server()
659 log_error_write(srv, __FILE__, __LINE__, "s", in start_server()
664 if (HANDLER_GO_ON != plugins_call_set_defaults(srv)) { in start_server()
665 log_error_write(srv, __FILE__, __LINE__, "s", in start_server()
671 initialize_fd_framework(srv); in start_server()
690 switch(r = plugins_call_handle_sighup(srv)) { in start_server()
694 log_error_write(srv, __FILE__, __LINE__, "sd", "sighup-handler return with an error", r); in start_server()
698 if (-1 == log_error_cycle(srv)) { in start_server()
699 log_error_write(srv, __FILE__, __LINE__, "s", "cycling errorlog failed, dying"); in start_server()
704 log_error_write(srv, __FILE__, __LINE__, "sdsd", in start_server()
710 log_error_write(srv, __FILE__, __LINE__, "s", in start_server()
727 if (min_ts != srv->cur_ts) { in start_server()
729 connections *conns = srv->conns; in start_server()
732 switch(r = plugins_call_handle_trigger(srv)) { in start_server()
736 log_error_write(srv, __FILE__, __LINE__, "s", "one of the triggers failed"); in start_server()
739 log_error_write(srv, __FILE__, __LINE__, "d", r); in start_server()
744 srv->cur_ts = min_ts; in start_server()
747 stat_cache_trigger_cleanup(srv); in start_server()
762 if (srv->cur_ts - con->read_idle_ts > con->conf.max_read_idle) { in start_server()
765 log_error_write(srv, __FILE__, __LINE__, "sd", in start_server()
768 connection_set_state(srv, con, CON_STATE_ERROR); in start_server()
772 if (srv->cur_ts - con->read_idle_ts > con->keep_alive_idle) { in start_server()
775 log_error_write(srv, __FILE__, __LINE__, "sd", in start_server()
778 connection_set_state(srv, con, CON_STATE_ERROR); in start_server()
787 if (srv->cur_ts - con->write_request_ts > 60) { in start_server()
788 log_error_write(srv, __FILE__, __LINE__, "sdd", in start_server()
789 … "connection closed - pre-write-request-timeout:", con->fd, srv->cur_ts - con->write_request_ts); in start_server()
793 if (srv->cur_ts - con->write_request_ts > con->conf.max_write_idle) { in start_server()
796 log_error_write(srv, __FILE__, __LINE__, "sbsosds", in start_server()
805 connection_set_state(srv, con, CON_STATE_ERROR); in start_server()
810 …if (con->state == CON_STATE_CLOSE && (srv->cur_ts - con->close_timeout_ts > HTTP_LINGER_TIMEOUT)) { in start_server()
815 if (0 == (t_diff = srv->cur_ts - con->connection_start)) t_diff = 1; in start_server()
827 connection_state_machine(srv, con); in start_server()
849 if (srv->sockets_disabled) { in start_server()
852 if ((srv->cur_fds + srv->want_fds < srv->max_fds * 8 / 10) && /* we have enough unused fds */ in start_server()
853 (srv->conns->used <= srv->max_conns * 9 / 10) && in start_server()
855 for (i = 0; i < srv->srv_sockets.used; i++) { in start_server()
856 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in start_server()
857 fdevent_event_set(srv->ev, &(srv_socket->fde_ndx), srv_socket->fd, FDEVENT_IN); in start_server()
860 log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets enabled again"); in start_server()
862 srv->sockets_disabled = 0; in start_server()
865 if ((srv->cur_fds + srv->want_fds > srv->max_fds * 9 / 10) || /* out of fds */ in start_server()
866 (srv->conns->used >= srv->max_conns) || /* out of connections */ in start_server()
871 for (i = 0; i < srv->srv_sockets.used; i++) { in start_server()
872 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in start_server()
873 fdevent_event_del(srv->ev, &(srv_socket->fde_ndx), srv_socket->fd); in start_server()
882 fdevent_unregister(srv->ev, srv_socket->fd); in start_server()
884 mtcp_close(srv->mctx, srv_socket->fd); in start_server()
892 if (srv->srvconf.pid_file->used && in start_server()
893 srv->srvconf.changeroot->used == 0) { in start_server()
894 if (0 != unlink(srv->srvconf.pid_file->ptr)) { in start_server()
896 log_error_write(srv, __FILE__, __LINE__, "sbds", in start_server()
898 srv->srvconf.pid_file, in start_server()
908 log_error_write(srv, __FILE__, __LINE__, "s", "[note] graceful shutdown started"); in start_server()
909 } else if (srv->conns->used >= srv->max_conns) { in start_server()
910 …log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets disabled, connection limit reached"); in start_server()
912 log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets disabled, out-of-fds"); in start_server()
915 srv->sockets_disabled = 1; in start_server()
919 if (graceful_shutdown && srv->conns->used == 0) { in start_server()
926 if (srv->want_fds) { in start_server()
928 int free_fds = srv->max_fds - srv->cur_fds - 16; in start_server()
931 for (; free_fds > 0 && NULL != (con = fdwaitqueue_unshift(srv, srv->fdwaitqueue)); free_fds--) { in start_server()
932 connection_state_machine(srv, con); in start_server()
934 srv->want_fds--; in start_server()
938 if ((n = fdevent_poll(srv->ev, -1/*1000*/)) > 0) { in start_server()
944 log_error_write(srv, __FILE__, __LINE__, "sd", in start_server()
955 fd_ndx = fdevent_event_next_fdndx (srv->ev, fd_ndx); in start_server()
958 revents = fdevent_event_get_revent (srv->ev, fd_ndx); in start_server()
959 fd = fdevent_event_get_fd (srv->ev, fd_ndx); in start_server()
960 handler = fdevent_get_handler(srv->ev, fd); in start_server()
961 context = fdevent_get_context(srv->ev, fd); in start_server()
965 log_error_write(srv, __FILE__, __LINE__, "sdd", in start_server()
968 switch (r = (*handler)(srv, context, revents)) { in start_server()
979 log_error_write(srv, __FILE__, __LINE__, "d", r); in start_server()
984 log_error_write(srv, __FILE__, __LINE__, "ss", in start_server()
989 for (ndx = 0; ndx < srv->joblist->used; ndx++) { in start_server()
990 connection *con = srv->joblist->ptr[ndx]; in start_server()
993 connection_state_machine(srv, con); in start_server()
995 switch(r = plugins_call_handle_joblist(srv, con)) { in start_server()
1000 log_error_write(srv, __FILE__, __LINE__, "d", r); in start_server()
1007 srv->joblist->used = 0; in start_server()
1012 mtcp_destroy_context(srv->mctx); in start_server()
1228 server *srv = NULL; in main() local
1262 if (NULL == (srv = server_init())) { in main()
1274 srv->srvconf.port = 0; in main()
1275 srv->srvconf.dont_daemonize = 0; in main()
1280 if (srv->config_storage) { in main()
1281 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1284 server_free(srv); in main()
1295 if (config_read(srv, optarg)) { in main()
1296 server_free(srv); in main()
1301 buffer_copy_string(srv->srvconf.modules_dir, optarg); in main()
1314 srv->srvconf.dont_daemonize = 1; break; in main()
1320 server_free(srv); in main()
1326 if (!srv->config_storage) { in main()
1327 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1330 server_free(srv); in main()
1335 data_unset *dc = srv->config_context->data[0]; in main()
1350 server_free(srv); in main()
1358 if (0 != config_set_defaults(srv)) { in main()
1359 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1361 server_free(srv); in main()
1370 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1373 server_free(srv); in main()
1379 if (srv->config_storage[0]->document_root->used <= 1) { in main()
1380 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1383 server_free(srv); in main()
1388 if (plugins_load(srv)) { in main()
1389 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1392 plugins_free(srv); in main()
1393 server_free(srv); in main()
1399 if (srv->srvconf.pid_file->used) { in main()
1400 …if (-1 == (pid_fd = open(srv->srvconf.pid_file->ptr, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, S_IRUS… in main()
1403 log_error_write(srv, __FILE__, __LINE__, "sbs", in main()
1404 "opening pid-file failed:", srv->srvconf.pid_file, strerror(errno)); in main()
1408 if (0 != stat(srv->srvconf.pid_file->ptr, &st)) { in main()
1409 log_error_write(srv, __FILE__, __LINE__, "sbs", in main()
1410 "stating existing pid-file failed:", srv->srvconf.pid_file, strerror(errno)); in main()
1414 log_error_write(srv, __FILE__, __LINE__, "sb", in main()
1415 "pid-file exists and isn't regular file:", srv->srvconf.pid_file); in main()
1419 …if (-1 == (pid_fd = open(srv->srvconf.pid_file->ptr, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWU… in main()
1420 log_error_write(srv, __FILE__, __LINE__, "sbs", in main()
1421 "opening pid-file failed:", srv->srvconf.pid_file, strerror(errno)); in main()
1427 if (srv->event_handler == FDEVENT_HANDLER_SELECT) { in main()
1432 srv->max_fds = FD_SETSIZE - 200; in main()
1434 srv->max_fds = 4096; in main()
1446 log_error_write(srv, __FILE__, __LINE__, in main()
1452 if (use_rlimit && srv->srvconf.max_fds) { in main()
1455 rlim.rlim_cur = srv->srvconf.max_fds; in main()
1456 rlim.rlim_max = srv->srvconf.max_fds; in main()
1459 log_error_write(srv, __FILE__, __LINE__, in main()
1466 if (srv->event_handler == FDEVENT_HANDLER_SELECT) { in main()
1467 srv->max_fds = rlim.rlim_cur < ((int)FD_SETSIZE) - 200 ? rlim.rlim_cur : FD_SETSIZE - 200; in main()
1469 srv->max_fds = rlim.rlim_cur; in main()
1473 if (use_rlimit && srv->srvconf.enable_cores && getrlimit(RLIMIT_CORE, &rlim) == 0) { in main()
1478 if (srv->event_handler == FDEVENT_HANDLER_SELECT) { in main()
1480 if (srv->max_fds > ((int)FD_SETSIZE) - 200) { in main()
1481 log_error_write(srv, __FILE__, __LINE__, "sd", in main()
1491 if (srv->srvconf.username->used) { in main()
1492 if (NULL == (pwd = getpwnam(srv->srvconf.username->ptr))) { in main()
1493 log_error_write(srv, __FILE__, __LINE__, "sb", in main()
1494 "can't find username", srv->srvconf.username); in main()
1499 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1505 if (srv->srvconf.groupname->used) { in main()
1506 if (NULL == (grp = getgrnam(srv->srvconf.groupname->ptr))) { in main()
1507 log_error_write(srv, __FILE__, __LINE__, "sb", in main()
1508 "can't find groupname", srv->srvconf.groupname); in main()
1512 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1522 log_error_write(srv, __FILE__, __LINE__, in main()
1531 if (srv->srvconf.max_fds && srv->srvconf.max_fds < (int)rlim.rlim_cur) { in main()
1534 rlim.rlim_cur = srv->srvconf.max_fds; in main()
1537 log_error_write(srv, __FILE__, __LINE__, in main()
1544 if (srv->event_handler == FDEVENT_HANDLER_SELECT) { in main()
1545 srv->max_fds = rlim.rlim_cur < ((int)FD_SETSIZE) - 200 ? rlim.rlim_cur : FD_SETSIZE - 200; in main()
1547 srv->max_fds = rlim.rlim_cur; in main()
1551 if (srv->srvconf.enable_cores && getrlimit(RLIMIT_CORE, &rlim) == 0) { in main()
1557 if (srv->event_handler == FDEVENT_HANDLER_SELECT) { in main()
1559 if (srv->max_fds > ((int)FD_SETSIZE) - 200) { in main()
1560 log_error_write(srv, __FILE__, __LINE__, "sd", in main()
1571 if (srv->srvconf.dont_daemonize == 0) daemonize(); in main()
1575 set_max_conns(srv, 0); in main()
1578 srv->first_entry = srv; in main()
1581 set_max_conns(srv, 1); in main()
1585 init_server_states(&srv_states, cpus, srv, conf_file); in main()
1635 if (0 != network_init(srv)) { in main()
1636 plugins_free(srv); in main()
1637 server_free(srv); in main()
1652 if (srv->srvconf.username->used) { in main()
1653 initgroups(srv->srvconf.username->ptr, grp->gr_gid); in main()
1658 if (srv->srvconf.changeroot->used) { in main()
1661 if (-1 == chroot(srv->srvconf.changeroot->ptr)) { in main()
1662 log_error_write(srv, __FILE__, __LINE__, "ss", "chroot failed: ", strerror(errno)); in main()
1666 log_error_write(srv, __FILE__, __LINE__, "ss", "chdir failed: ", strerror(errno)); in main()
1681 if (srv->srvconf.enable_cores) { in main()
1689 set_max_conns(srv, 1); in main()
1690 load_plugins(srv); in main()
1696 if (srv->srvconf.dont_daemonize == 0) daemonize(); in main()
1700 srv->gid = getgid(); in main()
1701 srv->uid = getuid(); in main()
1705 buffer_copy_long(srv->tmp_buf, getpid()); in main()
1706 buffer_append_string_len(srv->tmp_buf, CONST_STR_LEN("\n")); in main()
1707 write(pid_fd, srv->tmp_buf->ptr, srv->tmp_buf->used - 1); in main()
1715 if (-1 == log_error_open(srv)) { in main()
1716 log_error_write(srv, __FILE__, __LINE__, "s", "Opening errorlog failed. Going down."); in main()
1718 plugins_free(srv); in main()
1719 network_close(srv); in main()
1720 server_free(srv); in main()
1724 if (HANDLER_GO_ON != plugins_call_set_defaults(srv)) { in main()
1725 log_error_write(srv, __FILE__, __LINE__, "s", "Configuration of plugins failed. Going down."); in main()
1727 plugins_free(srv); in main()
1728 network_close(srv); in main()
1729 server_free(srv); in main()
1735 for (i = 0; i < srv->config_context->used; i++) { in main()
1736 array *config = ((data_config *)srv->config_context->data[i])->value; in main()
1747 if (NULL == array_get_element(srv->config_touched, du->key->ptr)) { in main()
1748 log_error_write(srv, __FILE__, __LINE__, "sbs", in main()
1756 if (srv->config_unsupported) { in main()
1757 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1761 if (srv->config_deprecated) { in main()
1762 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1766 if (srv->config_unsupported || srv->config_deprecated) { in main()
1767 plugins_free(srv); in main()
1768 network_close(srv); in main()
1769 server_free(srv); in main()
1813 log_error_write(srv, __FILE__, __LINE__, "s", "setting timer failed"); in main()
1823 num_childs = srv->srvconf.max_worker; in main()
1856 log_error_cycle(srv); in main()
1889 log_error_close(srv); in main()
1890 network_close(srv); in main()
1891 connections_free(srv); in main()
1892 plugins_free(srv); in main()
1893 server_free(srv); in main()
1900 initialize_fd_framework(srv); in main()
1926 switch(r = plugins_call_handle_sighup(srv)) { in main()
1930 log_error_write(srv, __FILE__, __LINE__, "sd", "sighup-handler return with an error", r); in main()
1934 if (-1 == log_error_cycle(srv)) { in main()
1935 log_error_write(srv, __FILE__, __LINE__, "s", "cycling errorlog failed, dying"); in main()
1940 log_error_write(srv, __FILE__, __LINE__, "sdsd", in main()
1946 log_error_write(srv, __FILE__, __LINE__, "s", in main()
1963 if (min_ts != srv->cur_ts) { in main()
1965 connections *conns = srv->conns; in main()
1968 switch(r = plugins_call_handle_trigger(srv)) { in main()
1972 log_error_write(srv, __FILE__, __LINE__, "s", "one of the triggers failed"); in main()
1975 log_error_write(srv, __FILE__, __LINE__, "d", r); in main()
1980 srv->cur_ts = min_ts; in main()
1983 stat_cache_trigger_cleanup(srv); in main()
1998 if (srv->cur_ts - con->read_idle_ts > con->conf.max_read_idle) { in main()
2001 log_error_write(srv, __FILE__, __LINE__, "sd", in main()
2004 connection_set_state(srv, con, CON_STATE_ERROR); in main()
2008 if (srv->cur_ts - con->read_idle_ts > con->keep_alive_idle) { in main()
2011 log_error_write(srv, __FILE__, __LINE__, "sd", in main()
2014 connection_set_state(srv, con, CON_STATE_ERROR); in main()
2023 if (srv->cur_ts - con->write_request_ts > 60) { in main()
2024 log_error_write(srv, __FILE__, __LINE__, "sdd", in main()
2025 … "connection closed - pre-write-request-timeout:", con->fd, srv->cur_ts - con->write_request_ts); in main()
2029 if (srv->cur_ts - con->write_request_ts > con->conf.max_write_idle) { in main()
2032 log_error_write(srv, __FILE__, __LINE__, "sbsosds", in main()
2041 connection_set_state(srv, con, CON_STATE_ERROR); in main()
2046 …if (con->state == CON_STATE_CLOSE && (srv->cur_ts - con->close_timeout_ts > HTTP_LINGER_TIMEOUT)) { in main()
2051 if (0 == (t_diff = srv->cur_ts - con->connection_start)) t_diff = 1; in main()
2063 connection_state_machine(srv, con); in main()
2085 if (srv->sockets_disabled) { in main()
2088 if ((srv->cur_fds + srv->want_fds < srv->max_fds * 8 / 10) && /* we have enough unused fds */ in main()
2089 (srv->conns->used <= srv->max_conns * 9 / 10) && in main()
2091 for (i = 0; i < srv->srv_sockets.used; i++) { in main()
2092 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in main()
2093 fdevent_event_set(srv->ev, &(srv_socket->fde_ndx), srv_socket->fd, FDEVENT_IN); in main()
2096 log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets enabled again"); in main()
2098 srv->sockets_disabled = 0; in main()
2101 if ((srv->cur_fds + srv->want_fds > srv->max_fds * 9 / 10) || /* out of fds */ in main()
2102 (srv->conns->used >= srv->max_conns) || /* out of connections */ in main()
2107 for (i = 0; i < srv->srv_sockets.used; i++) { in main()
2108 server_socket *srv_socket = srv->srv_sockets.ptr[i]; in main()
2109 fdevent_event_del(srv->ev, &(srv_socket->fde_ndx), srv_socket->fd); in main()
2118 fdevent_unregister(srv->ev, srv_socket->fd); in main()
2124 if (srv->srvconf.pid_file->used && in main()
2125 srv->srvconf.changeroot->used == 0) { in main()
2126 if (0 != unlink(srv->srvconf.pid_file->ptr)) { in main()
2128 log_error_write(srv, __FILE__, __LINE__, "sbds", in main()
2130 srv->srvconf.pid_file, in main()
2140 log_error_write(srv, __FILE__, __LINE__, "s", "[note] graceful shutdown started"); in main()
2141 } else if (srv->conns->used >= srv->max_conns) { in main()
2142 …log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets disabled, connection limit reached"); in main()
2144 log_error_write(srv, __FILE__, __LINE__, "s", "[note] sockets disabled, out-of-fds"); in main()
2147 srv->sockets_disabled = 1; in main()
2151 if (graceful_shutdown && srv->conns->used == 0) { in main()
2158 if (srv->want_fds) { in main()
2160 int free_fds = srv->max_fds - srv->cur_fds - 16; in main()
2163 for (; free_fds > 0 && NULL != (con = fdwaitqueue_unshift(srv, srv->fdwaitqueue)); free_fds--) { in main()
2164 connection_state_machine(srv, con); in main()
2166 srv->want_fds--; in main()
2170 if ((n = fdevent_poll(srv->ev, 1000)) > 0) { in main()
2176 log_error_write(srv, __FILE__, __LINE__, "sd", in main()
2187 fd_ndx = fdevent_event_next_fdndx (srv->ev, fd_ndx); in main()
2190 revents = fdevent_event_get_revent (srv->ev, fd_ndx); in main()
2191 fd = fdevent_event_get_fd (srv->ev, fd_ndx); in main()
2192 handler = fdevent_get_handler(srv->ev, fd); in main()
2193 context = fdevent_get_context(srv->ev, fd); in main()
2197 log_error_write(srv, __FILE__, __LINE__, "sdd", in main()
2200 switch (r = (*handler)(srv, context, revents)) { in main()
2211 log_error_write(srv, __FILE__, __LINE__, "d", r); in main()
2216 log_error_write(srv, __FILE__, __LINE__, "ss", in main()
2221 for (ndx = 0; ndx < srv->joblist->used; ndx++) { in main()
2222 connection *con = srv->joblist->ptr[ndx]; in main()
2225 connection_state_machine(srv, con); in main()
2227 switch(r = plugins_call_handle_joblist(srv, con)) { in main()
2232 log_error_write(srv, __FILE__, __LINE__, "d", r); in main()
2239 srv->joblist->used = 0; in main()
2243 if (srv->srvconf.pid_file->used && in main()
2244 srv->srvconf.changeroot->used == 0 && in main()
2246 if (0 != unlink(srv->srvconf.pid_file->ptr)) { in main()
2248 log_error_write(srv, __FILE__, __LINE__, "sbds", in main()
2250 srv->srvconf.pid_file, in main()
2258 log_error_write(srv, __FILE__, __LINE__, "sdsd", in main()
2264 log_error_write(srv, __FILE__, __LINE__, "s", in main()
2281 srv = srv_states[i]; in main()
2284 log_error_close(srv); in main()
2285 network_close(srv); in main()
2286 connections_free(srv); in main()
2287 plugins_free(srv); in main()
2288 server_free(srv); in main()