;ConnectIPv4 = yes
# Default user mode(s) to set on new local clients. Please note that
- # only modes can be set that the client could set on itself, you can't
- # set "a" (away) or "o" (IRC Op), for example! Default: none.
+ # only modes can be set that the client could set using regular MODE
+ # commands, you can't set "a" (away) for example! Default: none.
;DefaultUserModes = i
# Do DNS lookups when a client connects to the server.
.TP
\fBDefaultUserModes\fR (string)
Default user mode(s) to set on new local clients. Please note that only modes
-can be set that the client could set on itself, you can't set "a" (away) or
-"o" (IRC Op), for example!
+can be set that the client could set using regular MODE commands, you can't
+set "a" (away) for example!
Default: none.
.TP
\fBDNS\fR (boolean)
_IRC_GET_SENDER_OR_RETURN_(origin, Req, Client)
+ /* Test for "fake" MODE commands injected by this local instance,
+ * for example when handling the "DefaultUserModes" settings.
+ * This doesn't harm real commands, because prefixes of regular
+ * clients are checked in Validate_Prefix() and can't be faked. */
+ if (Req->prefix && Client_Search(Req->prefix) == Client_ThisServer())
+ Client = Client_Search(Req->prefix);
+
/* Channel or user mode? */
cl = NULL; chan = NULL;
if (Client_IsValidNick(Req->argv[0]))
/* Set default user modes */
if (Conf_DefaultUserModes[0]) {
snprintf(modes, sizeof(modes), "+%s", Conf_DefaultUserModes);
- Req.prefix = Client_ThisServer();
+ Req.prefix = Client_ID(Client_ThisServer());
Req.command = "MODE";
Req.argc = 2;
Req.argv[0] = Client_ID(Client);