Browse Source

fix #1019

tags/v2.1.0-rc1
Shivaram Lingamneni 4 years ago
parent
commit
a397756882
2 changed files with 7 additions and 0 deletions
  1. 5
    0
      irc/client_lookup_set.go
  2. 2
    0
      irc/nickname.go

+ 5
- 0
irc/client_lookup_set.go View File

@@ -233,6 +233,11 @@ func (clients *ClientManager) SetNick(client *Client, session *Session, newNick
233 233
 		currentClient.SetNames("user", realname, true)
234 234
 		// successful reattach!
235 235
 		return newNick, nil
236
+	} else if currentClient == client && currentClient.Nick() == newNick {
237
+		// see #1019: normally no-op nick changes are caught earlier, by performNickChange,
238
+		// but they are not detected there when force-guest-format is enabled (because
239
+		// the proposed nickname is e.g. alice and the current nickname is Guest-alice)
240
+		return "", errNoop
236 241
 	}
237 242
 	// analogous checks for skeletons
238 243
 	skeletonHolder := clients.bySkeleton[newSkeleton]

+ 2
- 0
irc/nickname.go View File

@@ -47,6 +47,8 @@ func performNickChange(server *Server, client *Client, target *Client, session *
47 47
 		rb.Add(nil, server.name, ERR_UNKNOWNERROR, currentNick, "NICK", client.t("You must use your account name as your nickname"))
48 48
 	} else if err == errNickMissing {
49 49
 		rb.Add(nil, server.name, ERR_NONICKNAMEGIVEN, currentNick, client.t("No nickname given"))
50
+	} else if err == errNoop {
51
+		// no message
50 52
 	} else if err != nil {
51 53
 		rb.Add(nil, server.name, ERR_UNKNOWNERROR, currentNick, "NICK", fmt.Sprintf(client.t("Could not set or change nickname: %s"), err.Error()))
52 54
 	}

Loading…
Cancel
Save