From 32282a242f4e97b86164029b280140471a9a0513 Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Tue, 3 Dec 2024 15:27:41 -0700 Subject: [PATCH] login: timeout client after an hour Signed-off-by: Sumner Evans --- pkg/connector/loginphone.go | 5 ++++- pkg/connector/loginqr.go | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/connector/loginphone.go b/pkg/connector/loginphone.go index 1cfccd3b..8a1762d8 100644 --- a/pkg/connector/loginphone.go +++ b/pkg/connector/loginphone.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "time" "github.com/gotd/td/telegram" "github.com/gotd/td/telegram/auth" @@ -58,6 +59,7 @@ func (p *PhoneLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) { } func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]string) (*bridgev2.LoginStep, error) { + log := zerolog.Ctx(ctx).With().Str("component", "telegram_phone_login").Logger() if phone, ok := input[LoginStepIDPhoneNumber]; ok { p.phone = phone p.authClient = telegram.NewClient(p.main.Config.APIID, p.main.Config.APIHash, telegram.Options{ @@ -65,7 +67,8 @@ func (p *PhoneLogin) SubmitUserInput(ctx context.Context, input map[string]strin Logger: zap.New(zerozap.New(zerolog.Ctx(ctx).With().Str("component", "telegram_phone_login_client").Logger())), }) var err error - _, p.authClientCancel, err = connectTelegramClient(context.Background(), p.authClient) + authClientContext, _ := context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour")) + _, p.authClientCancel, err = connectTelegramClient(authClientContext, p.authClient) if err != nil { return nil, err } diff --git a/pkg/connector/loginqr.go b/pkg/connector/loginqr.go index a9c4c0e3..78adff1c 100644 --- a/pkg/connector/loginqr.go +++ b/pkg/connector/loginqr.go @@ -2,7 +2,9 @@ package connector import ( "context" + "errors" "fmt" + "time" "github.com/gotd/td/telegram" "github.com/gotd/td/telegram/auth/qrlogin" @@ -66,7 +68,8 @@ func (q *QRLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) { }) var err error - q.authClientCtx, q.authClientCancel, err = connectTelegramClient(log.WithContext(context.Background()), q.authClient) + authClientContext, _ := context.WithTimeoutCause(log.WithContext(context.Background()), time.Hour, errors.New("phone login took over one hour")) + q.authClientCtx, q.authClientCancel, err = connectTelegramClient(authClientContext, q.authClient) if err != nil { return nil, err }