client: use context rather than separate flag for expected disconnects
This commit is contained in:
@@ -83,7 +83,6 @@ type TelegramClient struct {
|
|||||||
clientCancel context.CancelFunc
|
clientCancel context.CancelFunc
|
||||||
clientDone *exsync.Event
|
clientDone *exsync.Event
|
||||||
clientInitialized *exsync.Event
|
clientInitialized *exsync.Event
|
||||||
expectDisconnect atomic.Bool
|
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
|
|
||||||
appConfigLock sync.Mutex
|
appConfigLock sync.Mutex
|
||||||
@@ -539,7 +538,6 @@ func (t *TelegramClient) Connect(ctx context.Context) {
|
|||||||
t.clientCancel = cancel
|
t.clientCancel = cancel
|
||||||
t.clientDone.Clear()
|
t.clientDone.Clear()
|
||||||
t.clientInitialized.Clear()
|
t.clientInitialized.Clear()
|
||||||
t.expectDisconnect.Store(false)
|
|
||||||
go t.runInBackground(ctx)
|
go t.runInBackground(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -563,8 +561,8 @@ func (t *TelegramClient) runInBackground(ctx context.Context) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).AnErr("ctx_err", ctx.Err()).Msg("Client exited with error")
|
log.Err(err).AnErr("ctx_err", ctx.Err()).Msg("Client exited with error")
|
||||||
t.sendBadCredentialsOrUnknownError(err)
|
t.sendBadCredentialsOrUnknownError(err)
|
||||||
} else if !t.expectDisconnect.Load() {
|
} else if ctx.Err() == nil {
|
||||||
log.Warn().AnErr("ctx_err", ctx.Err()).Msg("Client exited unexpectedly")
|
log.Warn().Msg("Client exited unexpectedly")
|
||||||
t.sendBadCredentialsOrUnknownError(fmt.Errorf("unexpectedly disconnected from Telegram"))
|
t.sendBadCredentialsOrUnknownError(fmt.Errorf("unexpectedly disconnected from Telegram"))
|
||||||
} else {
|
} else {
|
||||||
log.Debug().AnErr("ctx_err", ctx.Err()).Msg("Client exited without error")
|
log.Debug().AnErr("ctx_err", ctx.Err()).Msg("Client exited without error")
|
||||||
@@ -576,7 +574,6 @@ func (t *TelegramClient) Disconnect() {
|
|||||||
defer t.mu.Unlock()
|
defer t.mu.Unlock()
|
||||||
|
|
||||||
t.userLogin.Log.Debug().Msg("Disconnecting client")
|
t.userLogin.Log.Debug().Msg("Disconnecting client")
|
||||||
t.expectDisconnect.Store(true)
|
|
||||||
|
|
||||||
if t.clientCancel != nil {
|
if t.clientCancel != nil {
|
||||||
t.clientCancel()
|
t.clientCancel()
|
||||||
|
|||||||
Reference in New Issue
Block a user