From 273690a71e18f429563b1e31c83fe158c4101b3a Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Thu, 12 Dec 2024 13:47:11 +0200 Subject: [PATCH] client: send bridge states for whatsapp initial connect errors --- pkg/connector/client.go | 22 ++++++++++++++++++++++ pkg/connector/handlemeta.go | 8 ++------ pkg/connector/handlewhatsapp.go | 7 +------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 9638c4b..4262ad7 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -255,6 +255,27 @@ func (m *MetaClient) periodicReconnect() { } } +func (m *MetaClient) tryConnectE2EE(fromConnectFailure bool) { + err := m.connectE2EE() + if err != nil { + if m.waState.StateEvent != status.StateBadCredentials && m.waState.StateEvent != status.StateUnknownError { + m.waState = status.BridgeState{ + StateEvent: status.StateUnknownError, + Error: WAConnectError, + Info: map[string]any{ + "go_error": err.Error(), + }, + } + m.UserLogin.BridgeState.Send(m.waState) + } + if fromConnectFailure { + m.UserLogin.Log.Err(err).Msg("Failed to connect to e2ee after 415 error") + } else { + m.UserLogin.Log.Err(err).Msg("Failed to connect to e2ee") + } + } +} + func (m *MetaClient) connectE2EE() error { m.e2eeConnectLock.Lock() defer m.e2eeConnectLock.Unlock() @@ -407,6 +428,7 @@ func (m *MetaClient) FillBridgeState(state status.BridgeState) status.BridgeStat state.StateEvent = copyFrom.StateEvent state.Error = copyFrom.Error state.Message = copyFrom.Message + state.Info = copyFrom.Info } } if m.LoginMeta.LoginUA != "" { diff --git a/pkg/connector/handlemeta.go b/pkg/connector/handlemeta.go index 385a4c8..a316a29 100644 --- a/pkg/connector/handlemeta.go +++ b/pkg/connector/handlemeta.go @@ -24,6 +24,7 @@ const ( WADisconnected status.BridgeStateErrorCode = "wa-transient-disconnect" WAPermanentError status.BridgeStateErrorCode = "wa-unknown-permanent-error" WACATError status.BridgeStateErrorCode = "wa-cat-refresh-error" + WAConnectError status.BridgeStateErrorCode = "wa-unknown-connect-error" MetaConnectionUnauthorized status.BridgeStateErrorCode = "meta-connection-unauthorized" MetaPermanentError status.BridgeStateErrorCode = "meta-unknown-permanent-error" MetaCookieRemoved status.BridgeStateErrorCode = "meta-cookie-removed" @@ -79,12 +80,7 @@ func (m *MetaClient) handleMetaEvent(rawEvt any) { m.incomingTables <- tbl } if m.LoginMeta.Platform.IsMessenger() || m.Main.Config.IGE2EE { - go func() { - err := m.connectE2EE() - if err != nil { - log.Err(err).Msg("Error connecting to e2ee") - } - }() + go m.tryConnectE2EE(false) } m.metaState = status.BridgeState{StateEvent: status.StateConnected} m.UserLogin.BridgeState.Send(m.metaState) diff --git a/pkg/connector/handlewhatsapp.go b/pkg/connector/handlewhatsapp.go index 25550fa..48c7a29 100644 --- a/pkg/connector/handlewhatsapp.go +++ b/pkg/connector/handlewhatsapp.go @@ -94,12 +94,7 @@ func (m *MetaClient) e2eeEventHandler(rawEvt any) { m.E2EEClient = nil } log.Debug().Msg("Reconnecting e2ee client after WhatsApp 415 error") - go func() { - err := m.connectE2EE() - if err != nil { - log.Err(err).Msg("Error connecting to e2ee after 415 error") - } - }() + go m.tryConnectE2EE(true) } }