--- lbbs/src/net_server.c 2025/05/09 11:21:11 1.19 +++ lbbs/src/net_server.c 2025/05/10 15:23:42 1.21 @@ -23,9 +23,12 @@ #include "log.h" #include "io.h" #include "fork.h" -#include "tcplib.h" #include "menu.h" +#include +#include +#include #include +#include #include #include #include @@ -108,7 +111,15 @@ int net_server(const char *hostaddr, in_ } } - if (SYS_menu_reload) + if (SYS_server_exit && SYS_child_exit_count == 0) + { + if (kill(0, SIGTERM) < 0) + { + log_error("Send SIGTERM signal failed (%d)\n", errno); + } + } + + if (SYS_menu_reload && !SYS_server_exit) { if (reload_menu(&bbs_menu) < 0) { @@ -125,10 +136,10 @@ int net_server(const char *hostaddr, in_ FD_ZERO(&testfds); FD_SET(socket_server, &testfds); - - timeout.tv_sec = 1; - timeout.tv_usec = 0; - + + timeout.tv_sec = 0; + timeout.tv_usec = 100 * 1000; // 0.1 second + ret = select(FD_SETSIZE, &testfds, NULL, NULL, &timeout); if (ret < 0)