mirror of
https://github.com/tulir/mautrix-whatsapp
synced 2024-12-17 19:03:46 +01:00
Handle cases where sync response handling takes too long
This commit is contained in:
parent
18f709f435
commit
36bb15fbd6
1 changed files with 18 additions and 1 deletions
19
crypto.go
19
crypto.go
|
@ -23,6 +23,7 @@ import (
|
|||
"crypto/sha512"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/maulogger/v2"
|
||||
|
@ -207,7 +208,23 @@ type cryptoSyncer struct {
|
|||
}
|
||||
|
||||
func (syncer *cryptoSyncer) ProcessResponse(resp *mautrix.RespSync, since string) error {
|
||||
syncer.ProcessSyncResponse(resp, since)
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
syncer.Log.Error("Processing sync response (%s) panicked: %v\n%s", since, err, debug.Stack())
|
||||
}
|
||||
done <- struct{}{}
|
||||
}()
|
||||
syncer.Log.Trace("Starting sync response handling (%s)", since)
|
||||
syncer.ProcessSyncResponse(resp, since)
|
||||
syncer.Log.Trace("Successfully handled sync response (%s)", since)
|
||||
}()
|
||||
select {
|
||||
case <-done:
|
||||
case <-time.After(30 * time.Second):
|
||||
syncer.Log.Warn("Handling sync response (%s) is taking unusually long", since)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue