From 71fb3fa353bf92f919476bfa4185d6bef643ef63 Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Wed, 19 Jun 2024 13:26:26 +0000 Subject: [PATCH] always attempt any sends from non-blaming peers before switching to blaming --- mixing/mixclient/client.go | 42 ++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/mixing/mixclient/client.go b/mixing/mixclient/client.go index 75a45e7f0..1f7247708 100644 --- a/mixing/mixclient/client.go +++ b/mixing/mixclient/client.go @@ -1422,7 +1422,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) ctIds := make([]identity, 0, len(cts)) for _, ct := range cts { if len(ct.Ciphertexts) != len(prs) { - // Everyone sees this, can blame now. + // Everyone sees this, can rerun without full blame now. blamedMapMu.Lock() blamedMap[ct.Identity] = struct{}{} blamedMapMu.Unlock() @@ -1456,9 +1456,6 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) c.testHook(hookBeforePeerSRPublish, sesRun, p) return nil }) - if err != nil { - sesLog.logf("%v", err) - } if len(blamedMap) > 0 { for id := range blamedMap { blamed = append(blamed, id) @@ -1466,17 +1463,18 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) sesLog.logf("blaming %x during run (wrong ciphertext count)", []identity(blamed)) return blamed } - if err != nil { - return err - } - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr := c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { if p.sr == nil { return nil } return p.sr }) + if sendErr != nil { + sesLog.logf("%v", sendErr) + } if err != nil { sesLog.logf("%v", err) + return err } // Receive all slot reservation messages @@ -1552,21 +1550,19 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) c.testHook(hookBeforePeerDCPublish, sesRun, p) return nil }) - if errors.Is(err, errTriggeredBlame) { - return err - } - if err != nil { - sesLog.logf("DC-net error: %v", err) - } - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { if p.dc == nil { return nil } return p.dc }) - if err != nil { + if sendErr != nil { sesLog.logf("%v", err) } + if err != nil { + sesLog.logf("DC-net error: %v", err) + return err + } // Receive all DC messages rcv.SRs = nil @@ -1641,20 +1637,18 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) p.cm = cm return nil }) - if errors.Is(err, errTriggeredBlame) { - return err - } - if err != nil { - sesLog.logf("Confirm error: %v", err) - } - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { if p.cm == nil { return nil } return p.cm }) + if sendErr != nil { + sesLog.logf("%v", sendErr) + } if err != nil { - sesLog.logf("%v", err) + sesLog.logf("Confirm error: %v", err) + return err } // Receive all CM messages