client: use context rather than separate flag for expected disconnects

This commit is contained in:
Tulir Asokan
2025-12-15 16:23:44 +02:00
parent 4342635b8a
commit 7f17c2728e

View File

@@ -83,7 +83,6 @@ type TelegramClient struct {
clientCancel context.CancelFunc
clientDone *exsync.Event
clientInitialized *exsync.Event
expectDisconnect atomic.Bool
mu sync.Mutex
appConfigLock sync.Mutex
@@ -539,7 +538,6 @@ func (t *TelegramClient) Connect(ctx context.Context) {
t.clientCancel = cancel
t.clientDone.Clear()
t.clientInitialized.Clear()
t.expectDisconnect.Store(false)
go t.runInBackground(ctx)
}
@@ -563,8 +561,8 @@ func (t *TelegramClient) runInBackground(ctx context.Context) {
if err != nil {
log.Err(err).AnErr("ctx_err", ctx.Err()).Msg("Client exited with error")
t.sendBadCredentialsOrUnknownError(err)
} else if !t.expectDisconnect.Load() {
log.Warn().AnErr("ctx_err", ctx.Err()).Msg("Client exited unexpectedly")
} else if ctx.Err() == nil {
log.Warn().Msg("Client exited unexpectedly")
t.sendBadCredentialsOrUnknownError(fmt.Errorf("unexpectedly disconnected from Telegram"))
} else {
log.Debug().AnErr("ctx_err", ctx.Err()).Msg("Client exited without error")
@@ -576,7 +574,6 @@ func (t *TelegramClient) Disconnect() {
defer t.mu.Unlock()
t.userLogin.Log.Debug().Msg("Disconnecting client")
t.expectDisconnect.Store(true)
if t.clientCancel != nil {
t.clientCancel()