register.c文件
new_register() 函数中,
{
...
allocid = getnewuserid2(newuser.userid);
if (allocid > MAXUSERS || allocid <= 0) {
prints("抱歉, 由于某些系统原因, 无法注册新的帐号.\n\r");
oflush();
sleep(2);
exit(1);
}
newbbslog(BBSLOG_USIES, "APPLY: %s uid %d from %s", newuser.userid, allocid, getSession()->fromhost);
update_user(&newuser, allocid, 1);
...
}
其中update_user()函数 实现的是 把newuser 结构体 所存储的新用户的 信息 copy 到内存中uidshm->passwd[allocid-1] 的位置,
所以,allocid 是存储新注册用户 id 的位置参数。
而它是通过getnewuserid2 函数获得的,而getnewuserid2调用了getnewuserid3函数,其中是通过返回一个select(m_socket + 1, &rfds, NULL, NULL, &tv); 获得的。
但是我不明白,为什么新注册用户的 存储位置 是和socket 产生,而不是 从passwds 文件中 信息 去获得。 请研究过的 大侠 给与指教。小弟感激不尽...
--
FROM 222.28.73.*