Fix condition for sending CONNECTED state after TRANSIENT_DISCONNECT
This commit is contained in:
11
user.go
11
user.go
@@ -8,6 +8,7 @@ import (
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
@@ -47,7 +48,8 @@ type User struct {
|
||||
|
||||
Session *discordgo.Session
|
||||
|
||||
BridgeState *bridge.BridgeStateQueue
|
||||
BridgeState *bridge.BridgeStateQueue
|
||||
wasDisconnected atomic.Bool
|
||||
|
||||
markedOpened map[string]time.Time
|
||||
markedOpenedLock sync.Mutex
|
||||
@@ -530,8 +532,8 @@ func (user *User) readyHandler(_ *discordgo.Session, r *discordgo.Ready) {
|
||||
user.DiscordID = r.User.ID
|
||||
user.Update()
|
||||
}
|
||||
user.tryAutomaticDoublePuppeting()
|
||||
user.BridgeState.Send(status.BridgeState{StateEvent: status.StateBackfilling})
|
||||
user.tryAutomaticDoublePuppeting()
|
||||
|
||||
updateTS := time.Now()
|
||||
portalsInSpace := make(map[string]bool)
|
||||
@@ -705,15 +707,14 @@ func (user *User) handleGuild(meta *discordgo.Guild, timestamp time.Time, isInSp
|
||||
|
||||
func (user *User) connectedHandler(_ *discordgo.Session, c *discordgo.Connect) {
|
||||
user.log.Debugln("Connected to discord")
|
||||
|
||||
// FIXME this check can fail if the previous event didn't get sent before reconnecting
|
||||
if user.BridgeState.GetPrev().StateEvent == status.StateTransientDisconnect {
|
||||
if user.wasDisconnected.Swap(false) {
|
||||
user.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
|
||||
}
|
||||
}
|
||||
|
||||
func (user *User) disconnectedHandler(_ *discordgo.Session, d *discordgo.Disconnect) {
|
||||
user.log.Debugln("Disconnected from discord")
|
||||
user.wasDisconnected.Store(true)
|
||||
user.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user