Sleep before reconnecting after pair success

This commit is contained in:
Tulir Asokan 2023-08-24 21:51:58 +03:00
parent 2b1f046e75
commit 8fcb4283a9
2 changed files with 7 additions and 2 deletions

View file

@ -90,10 +90,10 @@ metrics:
google_messages: google_messages:
# OS name to tell the phone. This is the name that shows up in the paired devices list. # OS name to tell the phone. This is the name that shows up in the paired devices list.
os: Android (mautrix) os: mautrix-gmessages
# Browser type to tell the phone. This decides which icon is shown. # Browser type to tell the phone. This decides which icon is shown.
# Valid types: OTHER, CHROME, FIREFOX, SAFARI, OPERA, IE, EDGE # Valid types: OTHER, CHROME, FIREFOX, SAFARI, OPERA, IE, EDGE
browser: CHROME browser: OTHER
# Device type to tell the phone. This also affects the icon, as well as how many sessions are allowed simultaneously. # Device type to tell the phone. This also affects the icon, as well as how many sessions are allowed simultaneously.
# One web, two tablets and one PWA should be able to connect at the same time. # One web, two tablets and one PWA should be able to connect at the same time.
# Valid types: WEB, TABLET, PWA # Valid types: WEB, TABLET, PWA

View file

@ -4,6 +4,7 @@ import (
"crypto/x509" "crypto/x509"
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"time"
"github.com/google/uuid" "github.com/google/uuid"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
@ -60,6 +61,10 @@ func (c *Client) completePairing(data *gmproto.PairedData) {
c.triggerEvent(&events.PairSuccessful{PairedData: data}) c.triggerEvent(&events.PairSuccessful{PairedData: data})
go func() { go func() {
// Sleep for a bit to let the phone save the pair data. If we reconnect too quickly,
// the phone won't recognize the session the bridge will get unpaired.
time.Sleep(2 * time.Second)
err := c.Reconnect() err := c.Reconnect()
if err != nil { if err != nil {
c.triggerEvent(&events.ListenFatalError{Error: fmt.Errorf("failed to reconnect after pair success: %w", err)}) c.triggerEvent(&events.ListenFatalError{Error: fmt.Errorf("failed to reconnect after pair success: %w", err)})