diff --git a/mixing/mixclient/blame.go b/mixing/mixclient/blame.go index bdf6a4045..c0dbc186f 100644 --- a/mixing/mixclient/blame.go +++ b/mixing/mixclient/blame.go @@ -65,7 +65,7 @@ func (c *Client) blame(ctx context.Context, sesRun *sessionRun) (err error) { } }() - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + err = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { // Send initial secrets messages from any peers who detected // misbehavior. if !p.triggeredBlame { @@ -88,7 +88,7 @@ func (c *Client) blame(ctx context.Context, sesRun *sessionRun) (err error) { } // Send remaining secrets messages. - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + err = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.triggeredBlame { p.triggeredBlame = false return nil diff --git a/mixing/mixclient/client.go b/mixing/mixclient/client.go index db75ef86e..e136a98e0 100644 --- a/mixing/mixclient/client.go +++ b/mixing/mixclient/client.go @@ -438,7 +438,9 @@ type delayedMsg struct { p *peer } -func (c *Client) sendLocalPeerMsgs(ctx context.Context, s *sessionRun, m func(p *peer) mixing.Message) error { +func (c *Client) sendLocalPeerMsgs(ctx context.Context, s *sessionRun, mayTriggerBlame bool, + m func(p *peer) mixing.Message) error { + msgs := make([]delayedMsg, 0, len(s.peers)) now := time.Now() @@ -447,7 +449,7 @@ func (c *Client) sendLocalPeerMsgs(ctx context.Context, s *sessionRun, m func(p continue } msg := m(p) - if p.triggeredBlame { + if mayTriggerBlame && p.triggeredBlame { msg = p.rs } msgs = append(msgs, delayedMsg{ @@ -1153,7 +1155,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) if err != nil { sesLog.logf("%v", err) } - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + err = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.ke == nil { return nil } @@ -1368,7 +1370,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) if err != nil { sesLog.logf("%v", err) } - err = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + err = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.ct == nil { return nil } @@ -1462,7 +1464,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) sesLog.logf("blaming %x during run (wrong ciphertext count)", []identity(blamed)) return blamed } - sendErr := c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr := c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.sr == nil { return nil } @@ -1549,7 +1551,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) c.testHook(hookBeforePeerDCPublish, sesRun, p) return nil }) - sendErr = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.dc == nil { return nil } @@ -1636,7 +1638,7 @@ func (c *Client) run(ctx context.Context, ps *pairedSessions, madePairing *bool) p.cm = cm return nil }) - sendErr = c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + sendErr = c.sendLocalPeerMsgs(ctx, sesRun, true, func(p *peer) mixing.Message { if p.cm == nil { return nil } @@ -1759,7 +1761,7 @@ func (c *Client) roots(ctx context.Context, seenSRs []chainhash.Hash, }) // Don't wait for these messages to send. go func() { - err := c.sendLocalPeerMsgs(ctx, sesRun, func(p *peer) mixing.Message { + err := c.sendLocalPeerMsgs(ctx, sesRun, false, func(p *peer) mixing.Message { return p.fp }) if ctx.Err() == nil && err != nil {