From 58c77b9d11a66d7387d43fd24cc4c382cce3ba8a Mon Sep 17 00:00:00 2001 From: Nick Mills-Barrett Date: Mon, 22 Jul 2024 10:34:31 +0100 Subject: [PATCH] Use `BAD_CREDENTIALS` for relevant WhatsApp error codes This is more accurate than `UNKNOWN_ERROR`, even if we do subsequently reconnect by resetting the WA device. --- user.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/user.go b/user.go index 9118d37..abcd54b 100644 --- a/user.go +++ b/user.go @@ -1046,8 +1046,11 @@ func (user *User) e2eeEventHandler(rawEvt any) { user.BridgeState.Send(user.waState) go user.sendMarkdownBridgeAlert(context.TODO(), "Error in WhatsApp connection: %s", evt.PermanentDisconnectDescription()) case events.PermanentDisconnect: + stateEvent := status.StateUnknownError + switch e := evt.(type) { case *events.LoggedOut: + stateEvent = status.StateBadCredentials if e.Reason == events.ConnectFailureLoggedOut && !e.OnConnect && user.canReconnect() { user.resetWADevice() user.log.Debug().Msg("Doing full reconnect after WhatsApp 401 error") @@ -1064,7 +1067,8 @@ func (user *User) e2eeEventHandler(rawEvt any) { user.log.Debug().Msg("Reconnecting e2ee client after WhatsApp 415 error") go user.connectE2EE() } else if e.Reason == events.ConnectFailureReason(418) { - // TODO: what is error 418? + // WA 418 appears to indicate logout/bad credentials + stateEvent = status.StateBadCredentials user.resetWADevice() user.log.Debug().Msg("Doing full reconnect after WhatsApp 418 error") go user.FullReconnect() @@ -1072,7 +1076,7 @@ func (user *User) e2eeEventHandler(rawEvt any) { } user.waState = status.BridgeState{ - StateEvent: status.StateUnknownError, + StateEvent: stateEvent, Error: WAPermanentError, Message: evt.PermanentDisconnectDescription(), }