diff --git a/downstream.go b/downstream.go index 6926742..e0d4f40 100644 --- a/downstream.go +++ b/downstream.go @@ -167,11 +167,8 @@ func (c *downstreamConn) handleMessageUnregistered(msg *irc.Message) error { } func (c *downstreamConn) register() error { - c.srv.lock.Lock() - u, ok := c.srv.users[c.username] - c.srv.lock.Unlock() - - if !ok { + u := c.srv.getUser(c.username) + if u == nil { c.messages <- &irc.Message{ Prefix: c.srv.prefix(), Command: irc.ERR_PASSWDMISMATCH, diff --git a/server.go b/server.go index f89177e..3076eb8 100644 --- a/server.go +++ b/server.go @@ -106,6 +106,13 @@ func (s *Server) Run() { } } +func (s *Server) getUser(name string) *user { + s.lock.Lock() + u := s.users[name] + s.lock.Unlock() + return u +} + func (s *Server) Serve(ln net.Listener) error { for { netConn, err := ln.Accept()