diff options
Diffstat (limited to 'mbbsd/user.c')
-rw-r--r-- | mbbsd/user.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mbbsd/user.c b/mbbsd/user.c index e67d4c68..b8fc5d77 100644 --- a/mbbsd/user.c +++ b/mbbsd/user.c @@ -200,11 +200,12 @@ void kick_all(char *user) { userinfo_t *ui; - int num = searchuser(user, NULL); - while(!(ui = (userinfo_t *) search_ulist(num))) + int num = searchuser(user, NULL), i=1; + while((ui = (userinfo_t *) search_ulistn(num, i))>0) { - if(ui == currutmp) continue; - kill(ui->pid, SIGHUP); + if(ui == currutmp) i++; + if ((ui->pid <= 0 || kill(ui->pid, SIGHUP) == -1)) + purge_utmp(ui); log_usies("KICK ALL", user); } } |