Jelajahi Sumber

Fix #406: reconnect() can be called while still connected (#407)

Erik McClure 7 tahun lalu
induk
melakukan
71ede90b56
1 mengubah file dengan 7 tambahan dan 0 penghapusan
  1. 7 0
      wsapi.go

+ 7 - 0
wsapi.go

@@ -709,6 +709,13 @@ func (s *Session) reconnect() {
 				return
 			}
 
+			// Certain race conditions can call reconnect() twice. If this happens, we
+			// just break out of the reconnect loop
+			if err == ErrWSAlreadyOpen {
+				s.log(LogInformational, "Websocket already exists, no need to reconnect")
+				return
+			}
+
 			s.log(LogError, "error reconnecting to gateway, %s", err)
 
 			<-time.After(wait * time.Second)