From 90e35e137daa94c9b448c5a8b243a2f434e557d6 Mon Sep 17 00:00:00 2001 From: kcwu Date: Mon, 25 May 2009 17:21:08 +0000 Subject: - revise flag_checkload. it should not bypass out of service. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4485 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/mbbsd.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'mbbsd') diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c index 7218228f..1e9a9ea7 100644 --- a/mbbsd/mbbsd.c +++ b/mbbsd/mbbsd.c @@ -1456,7 +1456,7 @@ bind_port(int port) static int shell_login(char *argv0, struct ProgramOption *option); static int daemon_login(char *argv0, struct ProgramOption *option); -static int check_ban_and_load(int fd); +static int check_ban_and_load(int fd, struct ProgramOption *option); static int check_banip(char *host); static void init(void) @@ -1684,11 +1684,9 @@ shell_login(char *argv0, struct ProgramOption *option) } init_tty(); - if (option->flag_checkload) { - if (check_ban_and_load(0)) { - sleep(10); - return 0; - } + if (check_ban_and_load(0, option)) { + sleep(10); + return 0; } #ifdef DETECT_CLIENT FNV1A_CHAR(123, client_code); @@ -1773,7 +1771,7 @@ daemon_login(char *argv0, struct ProgramOption *option) continue; } - overloading = check_ban_and_load(csock); + overloading = check_ban_and_load(csock, option); #if OVERLOADBLOCKFDS if( (!overloading && nblocked) || (overloading && nblocked == OVERLOADBLOCKFDS) ){ @@ -1828,7 +1826,7 @@ daemon_login(char *argv0, struct ProgramOption *option) * permitted, return 0; else return -1; approriate message is output to fd. */ static int -check_ban_and_load(int fd) +check_ban_and_load(int fd, struct ProgramOption *option) { FILE *fp; static time4_t chkload_time = 0; @@ -1864,6 +1862,9 @@ check_ban_and_load(int fd) chkload_time = time(0); } + if (!option->flag_checkload) + overload = 0; + if(overload == 1) write(fd, "系統過載, 請稍後再來\r\n", 22); else if(overload == 2) -- cgit v1.2.3