Explorar o código

Even better checking that we don't close nil/closed chans.

Bruce Marriner %!s(int64=9) %!d(string=hai) anos
pai
achega
2469147d8a
Modificáronse 1 ficheiros con 16 adicións e 4 borrados
  1. 16 4
      discord.go

+ 16 - 4
discord.go

@@ -125,12 +125,24 @@ func (s *Session) Close() {
 
 	s.DataReady = false
 
-	if s.listenChan != nil {
-		close(s.listenChan)
+	if s.heartbeatChan != nil {
+		select {
+		case <-s.heartbeatChan:
+			break
+		default:
+			close(s.heartbeatChan)
+		}
+		s.heartbeatChan = nil
 	}
 
-	if s.heartbeatChan != nil {
-		close(s.heartbeatChan)
+	if s.listenChan != nil {
+		select {
+		case <-s.listenChan:
+			break
+		default:
+			close(s.listenChan)
+		}
+		s.listenChan = nil
 	}
 
 	if s.wsConn != nil {