Parcourir la source

Merge pull request #2064 from slingamn/issue2063

fix #2063
tags/v2.12.0-rc1
Shivaram Lingamneni il y a 1 an
Parent
révision
bf33fba33a
Aucun compte lié à l'adresse e-mail de l'auteur
2 fichiers modifiés avec 11 ajouts et 5 suppressions
  1. 10
    4
      irc/channel.go
  2. 1
    1
      irctest

+ 10
- 4
irc/channel.go Voir le fichier

1228
 	channel.stateMutex.RLock()
1228
 	channel.stateMutex.RLock()
1229
 	memberData, hasClient := channel.members[client]
1229
 	memberData, hasClient := channel.members[client]
1230
 	channel.stateMutex.RUnlock()
1230
 	channel.stateMutex.RUnlock()
1231
-	clientModes := memberData.modes
1231
+
1232
+	highestMode := func() modes.Mode {
1233
+		if !hasClient {
1234
+			return modes.Mode(0)
1235
+		}
1236
+		return memberData.modes.HighestChannelUserMode()
1237
+	}
1232
 
1238
 
1233
 	if !hasClient && channel.flags.HasMode(modes.NoOutside) {
1239
 	if !hasClient && channel.flags.HasMode(modes.NoOutside) {
1234
 		// TODO: enforce regular +b bans on -n channels?
1240
 		// TODO: enforce regular +b bans on -n channels?
1235
 		return false, modes.NoOutside
1241
 		return false, modes.NoOutside
1236
 	}
1242
 	}
1237
-	if channel.isMuted(client) && clientModes.HighestChannelUserMode() == modes.Mode(0) {
1243
+	if channel.isMuted(client) && highestMode() == modes.Mode(0) {
1238
 		return false, modes.BanMask
1244
 		return false, modes.BanMask
1239
 	}
1245
 	}
1240
-	if channel.flags.HasMode(modes.Moderated) && clientModes.HighestChannelUserMode() == modes.Mode(0) {
1246
+	if channel.flags.HasMode(modes.Moderated) && highestMode() == modes.Mode(0) {
1241
 		return false, modes.Moderated
1247
 		return false, modes.Moderated
1242
 	}
1248
 	}
1243
 	if channel.flags.HasMode(modes.RegisteredOnlySpeak) && client.Account() == "" &&
1249
 	if channel.flags.HasMode(modes.RegisteredOnlySpeak) && client.Account() == "" &&
1244
-		clientModes.HighestChannelUserMode() == modes.Mode(0) {
1250
+		highestMode() == modes.Mode(0) {
1245
 		return false, modes.RegisteredOnlySpeak
1251
 		return false, modes.RegisteredOnlySpeak
1246
 	}
1252
 	}
1247
 	return true, modes.Mode('?')
1253
 	return true, modes.Mode('?')

+ 1
- 1
irctest

1
-Subproject commit 3b7f81e22c317eae885f5a942767ba4f6a30414e
1
+Subproject commit bb8a6b6c3d3e55c1146c3c9f8224983d88a42b17

Chargement…
Annuler
Enregistrer