From 9ae0194ca83cb5bcb397c8acc9863fe4bc76dfd0 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 12 Feb 2025 16:32:14 +0200 Subject: [PATCH] store: return nil in LoadSession on error Fixes #734 --- store/signal.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/store/signal.go b/store/signal.go index 4c06ed4f..d8ef9049 100644 --- a/store/signal.go +++ b/store/signal.go @@ -88,20 +88,23 @@ func (device *Device) ContainsPreKey(preKeyID uint32) bool { func (device *Device) LoadSession(address *protocol.SignalAddress) *record.Session { var rawSess []byte + var err error for i := 0; ; i++ { - var err error rawSess, err = device.Sessions.GetSession(address.String()) if err == nil || !device.handleDatabaseError(i, err, "load session with %s", address.String()) { break } } if rawSess == nil { + if err != nil { + return nil + } return record.NewSession(SignalProtobufSerializer.Session, SignalProtobufSerializer.State) } sess, err := record.NewSessionFromBytes(rawSess, SignalProtobufSerializer.Session, SignalProtobufSerializer.State) if err != nil { device.Log.Errorf("Failed to deserialize session with %s: %v", address.String(), err) - return record.NewSession(SignalProtobufSerializer.Session, SignalProtobufSerializer.State) + return nil } return sess }