Skip to content

Commit 4361b30

Browse files
committed
Add error handling for resharing session init
1 parent be16f2c commit 4361b30

4 files changed

Lines changed: 25 additions & 10 deletions

File tree

pkg/eventconsumer/event_consumer.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,11 +637,19 @@ func (ec *eventConsumer) consumeReshareEvent() error {
637637
ctx := context.Background()
638638
var wg sync.WaitGroup
639639
if oldSession != nil {
640-
oldSession.Init()
640+
err := oldSession.Init()
641+
if err != nil {
642+
ec.handleReshareSessionError(walletID, keyType, msg.NewThreshold, err, "Failed to init old reshare session", natMsg)
643+
return
644+
}
641645
oldSession.ListenToIncomingMessageAsync()
642646
}
643647
if newSession != nil {
644-
newSession.Init()
648+
err := newSession.Init()
649+
if err != nil {
650+
ec.handleReshareSessionError(walletID, keyType, msg.NewThreshold, err, "Failed to init new reshare session", natMsg)
651+
return
652+
}
645653
newSession.ListenToIncomingMessageAsync()
646654
}
647655

pkg/mpc/ecdsa_resharing_session.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818

1919
type ReshareSession interface {
2020
Session
21-
Init()
21+
Init() error
2222
Reshare(done func())
2323
GetPubKeyResult() []byte
2424
}
@@ -99,7 +99,7 @@ func NewECDSAReshareSession(
9999
}
100100
}
101101

102-
func (s *ecdsaReshareSession) Init() {
102+
func (s *ecdsaReshareSession) Init() error {
103103
logger.Infof("Initializing resharing session with partyID: %s, newPartyIDs %s", s.selfPartyID, s.partyIDs)
104104
var share keygen.LocalPartySaveData
105105

@@ -110,15 +110,15 @@ func (s *ecdsaReshareSession) Init() {
110110
} else {
111111
err := s.loadOldShareDataGeneric(s.walletID, s.GetVersion(), &share)
112112
if err != nil {
113-
s.ErrCh <- err
114-
return
113+
return fmt.Errorf("failed to load old share data ecdsa: %w", err)
115114
}
116115
}
117116

118117
s.party = resharing.NewLocalParty(s.reshareParams, share, s.outCh, s.endCh)
119118

120119
logger.Infof("[INITIALIZED] Initialized resharing session successfully partyID: %s, peerIDs %s, walletID %s, oldThreshold = %d, newThreshold = %d",
121120
s.selfPartyID, s.partyIDs, s.walletID, s.threshold, s.reshareParams.NewThreshold())
121+
return nil
122122
}
123123

124124
func (s *ecdsaReshareSession) Reshare(done func()) {

pkg/mpc/eddsa_resharing_session.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func NewEDDSAReshareSession(
9191
}
9292
}
9393

94-
func (s *eddsaReshareSession) Init() {
94+
func (s *eddsaReshareSession) Init() error {
9595
logger.Infof("Initializing resharing session with partyID: %s, peerIDs %s", s.selfPartyID, s.partyIDs)
9696
var share keygen.LocalPartySaveData
9797
if s.isNewParty {
@@ -100,13 +100,14 @@ func (s *eddsaReshareSession) Init() {
100100
} else {
101101
err := s.loadOldShareDataGeneric(s.walletID, s.GetVersion(), &share)
102102
if err != nil {
103-
s.ErrCh <- err
104-
return
103+
return fmt.Errorf("failed to load old share data eddsa: %w", err)
105104
}
106105
}
107106
s.party = resharing.NewLocalParty(s.reshareParams, share, s.outCh, s.endCh)
108107
logger.Infof("[INITIALIZED] Initialized resharing session successfully partyID: %s, peerIDs %s, walletID %s, oldThreshold = %d, newThreshold = %d",
109108
s.selfPartyID, s.partyIDs, s.walletID, s.threshold, s.reshareParams.NewThreshold())
109+
110+
return nil
110111
}
111112

112113
func (s *eddsaReshareSession) Reshare(done func()) {

pkg/mpc/session.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,18 @@ func (s *session) loadOldShareDataGeneric(walletID string, version int, dest int
242242
if version > 0 {
243243
key = s.composeKey(walletIDWithVersion(walletID, version))
244244
keyData, err = s.kvstore.Get(key)
245+
if err != nil {
246+
return err
247+
}
245248
}
246249

247250
// If version == 0 or previous key not found, fall back to unversioned key
248-
if err != nil || version == 0 {
251+
if version == 0 {
249252
key = s.composeKey(walletID)
250253
keyData, err = s.kvstore.Get(key)
254+
if err != nil {
255+
return err
256+
}
251257
}
252258

253259
if err != nil {

0 commit comments

Comments
 (0)