diff --git a/irc/client.go b/irc/client.go index c2fb1f7b..06fde3dd 100644 --- a/irc/client.go +++ b/irc/client.go @@ -955,6 +955,10 @@ func (client *Client) updateNick(nick, nickCasefolded, skeleton string) { // updateNickMaskNoMutex updates the casefolded nickname and nickmask, not acquiring any mutexes. func (client *Client) updateNickMaskNoMutex() { + if client.nick == "*" { + return // pre-registration, don't bother generating the hostname + } + client.hostname = client.getVHostNoMutex() if client.hostname == "" { client.hostname = client.cloakedHostname @@ -963,10 +967,6 @@ func (client *Client) updateNickMaskNoMutex() { } } - if client.hostname == "" { - return // pre-registration, don't bother generating the hostname - } - cfhostname := strings.ToLower(client.hostname) client.nickMaskString = fmt.Sprintf("%s!%s@%s", client.nick, client.username, client.hostname) client.nickMaskCasefolded = fmt.Sprintf("%s!%s@%s", client.nickCasefolded, strings.ToLower(client.username), cfhostname) diff --git a/irc/server.go b/irc/server.go index 0194583e..abf6f530 100644 --- a/irc/server.go +++ b/irc/server.go @@ -331,6 +331,12 @@ func (server *Server) tryRegister(c *Client, session *Session) (exiting bool) { return true } + // we have the final value of the IP address: do the hostname lookup + // (nickmask will be set below once nickname assignment succeeds) + if session.rawHostname == "" { + session.client.lookupHostname(session, false) + } + rb := NewResponseBuffer(session) nickAssigned := performNickChange(server, c, c, session, c.preregNick, rb) rb.Send(true) @@ -339,10 +345,6 @@ func (server *Server) tryRegister(c *Client, session *Session) (exiting bool) { return } - // we have nickname, username, and the final value of the IP address: - // do the hostname lookup and set the nickmask - session.client.lookupHostname(session, false) - if session.client != c { // reattached, bail out. // we'll play the reg burst later, on the new goroutine associated with