3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-10 22:19:31 +01:00

Merge pull request #773 from slingamn/issue772_mitigation.1

mitigate #772
This commit is contained in:
Shivaram Lingamneni 2020-02-06 22:32:13 -08:00 committed by GitHub
commit e11f0a3428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 8 deletions

View File

@ -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)

View File

@ -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