aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2024-12-08 10:58:12 +0800
committerRunxi Yu <me@runxiyu.org>2024-12-08 10:58:12 +0800
commitc4d1135bf4d321dbed6ab3a94f87029e87f22a5d (patch)
tree4352b0da2d7ffb18485fa1157250ca74f4af434f
parentPong should return server name as 1st argument (diff)
downloadmeseircd-c4d1135bf4d321dbed6ab3a94f87029e87f22a5d.tar.gz
meseircd-c4d1135bf4d321dbed6ab3a94f87029e87f22a5d.tar.zst
meseircd-c4d1135bf4d321dbed6ab3a94f87029e87f22a5d.zip
USER: Don't allow reregistration
-rw-r--r--cmd_user.go10
-rw-r--r--numerics.go1
2 files changed, 8 insertions, 3 deletions
diff --git a/cmd_user.go b/cmd_user.go
index 99d9027..3db56c7 100644
--- a/cmd_user.go
+++ b/cmd_user.go
@@ -13,10 +13,14 @@ func handleClientUser(msg RMsg, client *Client) bool {
client.Send(MakeMsg(self, ERR_NEEDMOREPARAMS, "USER", "Not enough parameters"))
return true
}
- client.Ident = "~" + msg.Params[0]
- client.Gecos = msg.Params[3]
- if client.State == ClientStatePreRegistration {
+ switch (client.State) {
+ case ClientStatePreRegistration:
+ client.Ident = "~" + msg.Params[0]
+ client.Gecos = msg.Params[3]
client.checkRegistration()
+ case ClientStateRegistered:
+ client.Send(MakeMsg(self, ERR_ALREADYREGISTERED, client.Nick, "You may not reregister"))
+ case ClientStateRemote:
}
return true
}
diff --git a/numerics.go b/numerics.go
index c8a351b..8877306 100644
--- a/numerics.go
+++ b/numerics.go
@@ -9,4 +9,5 @@ const (
ERR_INPUTTOOLONG = "417"
ERR_NEEDMOREPARAMS = "461"
ERR_NICKNAMEINUSE = "433"
+ ERR_ALREADYREGISTERED = "462"
)