Stop voice re-connection on manual disconnection

This commit is contained in:
Carson Hoffman 2020-05-19 23:06:59 -04:00
parent 69edfdf4ac
commit a7305dd7b7
No known key found for this signature in database
GPG key ID: 05B660CB452C657F

View file

@ -346,6 +346,25 @@ func (v *VoiceConnection) wsListen(wsConn *websocket.Conn, close <-chan struct{}
for { for {
_, message, err := v.wsConn.ReadMessage() _, message, err := v.wsConn.ReadMessage()
if err != nil { if err != nil {
// 4014 indicates a manual disconnection by someone in the guild;
// we shouldn't reconnect.
if websocket.IsCloseError(err, 4014) {
v.log(LogInformational, "received 4014 manual disconnection")
// Abandon the voice WS connection
v.Lock()
v.wsConn = nil
v.Unlock()
v.session.Lock()
delete(v.session.VoiceConnections, v.GuildID)
v.session.Unlock()
v.Close()
return
}
// Detect if we have been closed manually. If a Close() has already // Detect if we have been closed manually. If a Close() has already
// happened, the websocket we are listening on will be different to the // happened, the websocket we are listening on will be different to the
// current session. // current session.