summaryrefslogtreecommitdiffstats
path: root/mbbsd/register.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/register.c')
-rw-r--r--mbbsd/register.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/mbbsd/register.c b/mbbsd/register.c
index 9d0b6852..1eb745a7 100644
--- a/mbbsd/register.c
+++ b/mbbsd/register.c
@@ -86,8 +86,10 @@ compute_user_value(const userec_t * urec, time4_t clock)
value = (clock - urec->lastlogin) / 60; /* minutes */
/* new user should register in 30 mins */
+ // XXX 目前 new acccount 並不會在 utmp 裡放 str_new...
if (strcmp(urec->userid, str_new) == 0)
return 30 - value;
+
#if 0
if (!urec->numlogins) /* 未 login 成功者,不保留 */
return -1;
@@ -132,6 +134,13 @@ setupnewuser(const userec_t *user)
clock = now;
+ // XXX race condition...
+ if (dosearchuser(user->userid, NULL))
+ {
+ vmsg("手腳不夠快,別人已經搶走了!");
+ exit(1);
+ }
+
/* Lazy method : 先找尋已經清除的過期帳號 */
if ((uid = dosearchuser("", NULL)) == 0) {
/* 每 1 個小時,清理 user 帳號一次 */
@@ -206,6 +215,7 @@ new_register(void)
vmsg("請輸入 y表示接受, n表示不接受");
}
#endif
+
memset(&newuser, 0, sizeof(newuser));
more("etc/register", NA);
try = 0;
@@ -235,6 +245,8 @@ new_register(void)
break;
}
+ // XXX 記得最後 create account 前還要再檢查一次 acc
+
try = 0;
while (1) {
if (++try >= 6) {
@@ -266,6 +278,7 @@ new_register(void)
newuser.firstlogin = newuser.lastlogin = now;
newuser.money = 0;
newuser.pager = PAGER_ON;
+ strlcpy(newuser.lasthost, fromhost, sizeof(newuser.lasthost));
#ifdef DBCSAWARE
if(u_detectDBCSAwareEvilClient())