mirror of
https://github.com/tulir/mautrix-whatsapp
synced 2024-11-16 06:52:00 +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"
|
"crypto/sha512"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"runtime/debug"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"maunium.net/go/maulogger/v2"
|
"maunium.net/go/maulogger/v2"
|
||||||
|
@ -207,7 +208,23 @@ type cryptoSyncer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (syncer *cryptoSyncer) ProcessResponse(resp *mautrix.RespSync, since string) error {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue