Revision: 1919
http://undernet-ircu.svn.sourceforge.net/undernet-ircu/?rev=1919&view=rev
Author: entrope
Date: 2009-07-31 02:04:15 +0000 (Fri, 31 Jul 2009)
Log Message:
-----------
Fix usermodes harder when they are set early during registration.
IAuth and /user can both set usermodes before registration is
complete, and we do not want to count unregistered clients as
invisible or as opers, so register_user() _must_ update UserStats when
it registers a client. Default usermodes must not be applied between
where the client is marked as registered and that point, because that
would update UserStats too, so move the setting of default usermodes
before the SetUser() call that marks the client as a registered user.
Fixes SourceForge bugs #2824908 and #2829936.
Modified Paths:
--------------
ircu2/branches/u2_10_12_branch/ChangeLog
ircu2/branches/u2_10_12_branch/ircd/s_user.c
Modified: ircu2/branches/u2_10_12_branch/ChangeLog
===================================================================
--- ircu2/branches/u2_10_12_branch/ChangeLog 2009-07-06 02:36:29 UTC (rev
1918)
+++ ircu2/branches/u2_10_12_branch/ChangeLog 2009-07-31 02:04:15 UTC (rev
1919)
@@ -1,3 +1,10 @@
+2009-07-30 Michael Poole <[email protected]>
+
+ * ircd/s_user.c (register_user): Move the default-usermodes call
+ to set_user_mode() to before SetUser(), so that the former does
+ not increment the UserStats fields. Add back the explicit
+ adjustments to UserStats for invisible and opered clients.
+
2009-07-05 Michael Poole <[email protected]>
* ircd/s_user.c (register_user): Use correct parc for
Modified: ircu2/branches/u2_10_12_branch/ircd/s_user.c
===================================================================
--- ircu2/branches/u2_10_12_branch/ircd/s_user.c 2009-07-06 02:36:29 UTC
(rev 1918)
+++ ircu2/branches/u2_10_12_branch/ircd/s_user.c 2009-07-31 02:04:15 UTC
(rev 1919)
@@ -355,6 +355,16 @@
Count_unknownbecomesclient(sptr, UserStats);
+ /*
+ * Set user's initial modes
+ */
+ tmpstr = (char*)client_get_default_umode(sptr);
+ if (tmpstr) {
+ char *umodev[] = { NULL, NULL, NULL, NULL };
+ umodev[2] = tmpstr;
+ set_user_mode(cptr, sptr, 3, umodev, ALLOWMODES_ANY);
+ }
+
SetUser(sptr);
cli_handler(sptr) = CLIENT_HANDLER;
SetLocalNumNick(sptr);
@@ -385,15 +395,6 @@
cli_info(sptr), NumNick(cptr) /* two %s's */);
IPcheck_connect_succeeded(sptr);
- /*
- * Set user's initial modes
- */
- tmpstr = (char*)client_get_default_umode(sptr);
- if (tmpstr) {
- char *umodev[] = { NULL, NULL, NULL, NULL };
- umodev[2] = tmpstr;
- set_user_mode(cptr, sptr, 3, umodev, ALLOWMODES_ANY);
- }
}
else {
struct Client *acptr = user->server;
@@ -438,6 +439,10 @@
*/
if (HasHiddenHost(sptr))
hide_hostmask(sptr, FLAG_HIDDENHOST);
+ if (IsInvisible(sptr))
+ ++UserStats.inv_clients;
+ if (IsOper(sptr))
+ ++UserStats.opers;
tmpstr = umode_str(sptr);
/* Send full IP address to IPv6-grokking servers. */
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches