Browse Source

Merge pull request #2151 from slingamn/modes_forwardport

fix deadlock on channel state mutex
pull/2156/head
Shivaram Lingamneni 3 weeks ago
parent
commit
ca4b9c15c5
No account linked to committer's email address
1 changed files with 5 additions and 3 deletions
  1. 5
    3
      irc/getters.go

+ 5
- 3
irc/getters.go View File

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

Loading…
Cancel
Save