From fb345a2dd456481c9de07a0b4e2e34d011547155 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Fri, 15 Apr 2016 18:45:05 +1000 Subject: [PATCH] user: Don't parse the second and third params anymore --- CHANGELOG.md | 1 + irc/commands.go | 47 ++++------------------------------------------- irc/server.go | 26 +++----------------------- 3 files changed, 8 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d35f912..f7cd63bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Initial release of Oragono! ### Removed * Gitconfig config format completely removed and replaced with YAML. +* USER: No longer parse out the second and third parameters. ### Fixed * CAP: Registration is now properly suspended during CAP negotiation. diff --git a/irc/commands.go b/irc/commands.go index 5972e1d6..9300e440 100644 --- a/irc/commands.go +++ b/irc/commands.go @@ -270,50 +270,11 @@ type UserCommand struct { realname Text } -// USER -type RFC1459UserCommand struct { - UserCommand - hostname Name - servername Name -} - -// USER -type RFC2812UserCommand struct { - UserCommand - mode uint8 - unused string -} - -func (cmd *RFC2812UserCommand) Flags() []UserMode { - flags := make([]UserMode, 0) - if (cmd.mode & 4) == 4 { - flags = append(flags, WallOps) - } - if (cmd.mode & 8) == 8 { - flags = append(flags, Invisible) - } - return flags -} - func ParseUserCommand(args []string) (Command, error) { - mode, err := strconv.ParseUint(args[1], 10, 8) - if err == nil { - msg := &RFC2812UserCommand{ - mode: uint8(mode), - unused: args[2], - } - msg.username = NewName(args[0]) - msg.realname = NewText(args[3]) - return msg, nil - } - - msg := &RFC1459UserCommand{ - hostname: NewName(args[1]), - servername: NewName(args[2]), - } - msg.username = NewName(args[0]) - msg.realname = NewText(args[3]) - return msg, nil + return &UserCommand{ + username: NewName(args[0]), + realname: NewText(args[3]), + }, nil } // QUIT [ ] diff --git a/irc/server.go b/irc/server.go index dbc66c4b..e8ba0fd0 100644 --- a/irc/server.go +++ b/irc/server.go @@ -372,37 +372,17 @@ func (msg *ProxyCommand) HandleRegServer(server *Server) { msg.Client().hostname = msg.hostname } -func (msg *RFC1459UserCommand) HandleRegServer(server *Server) { +func (msg *UserCommand) HandleRegServer(server *Server) { client := msg.Client() if !client.authorized { client.ErrPasswdMismatch() client.Quit("bad password") return } - msg.setUserInfo(server) -} - -func (msg *RFC2812UserCommand) HandleRegServer(server *Server) { - client := msg.Client() - if !client.authorized { - client.ErrPasswdMismatch() - client.Quit("bad password") - return - } - flags := msg.Flags() - if len(flags) > 0 { - for _, mode := range flags { - client.flags[mode] = true - } - client.RplUModeIs(client) - } - msg.setUserInfo(server) -} - -func (msg *UserCommand) setUserInfo(server *Server) { - client := msg.Client() + // set user info and log client in server.clients.Remove(client) + //TODO(dan): Could there be a race condition here with adding/removing the client? client.username, client.realname = msg.username, msg.realname server.clients.Add(client)