Ver código fonte

fix deadlock on channel state mutex

pull/2151/head
Shivaram Lingamneni 1 semana atrás
pai
commit
6abb291290
1 arquivos alterados com 5 adições e 3 exclusões
  1. 5
    3
      irc/getters.go

+ 5
- 3
irc/getters.go Ver arquivo

@@ -612,9 +612,11 @@ func (channel *Channel) Founder() string {
612 612
 
613 613
 func (channel *Channel) HighestUserMode(client *Client) (result modes.Mode) {
614 614
 	channel.stateMutex.RLock()
615
-	clientModes := channel.members[client].modes
616
-	channel.stateMutex.RUnlock()
617
-	return clientModes.HighestChannelUserMode()
615
+	defer channel.stateMutex.RUnlock()
616
+	if clientData, ok := channel.members[client]; ok {
617
+		return clientData.modes.HighestChannelUserMode()
618
+	}
619
+	return
618 620
 }
619 621
 
620 622
 func (channel *Channel) Settings() (result ChannelSettings) {

Carregando…
Cancelar
Salvar