@@ -219,6 +219,9 @@ func (sr *subroundEndRound) doEndRoundJob(_ context.Context) bool {
219219 return false
220220 }
221221
222+ sr .mutProcessingEndRound .Lock ()
223+ defer sr .mutProcessingEndRound .Unlock ()
224+
222225 return sr .doEndRoundJobByNode ()
223226}
224227
@@ -240,14 +243,16 @@ func (sr *subroundEndRound) commitBlock() error {
240243}
241244
242245func (sr * subroundEndRound ) doEndRoundJobByNode () bool {
243- if ! sr .waitForSignalSync () {
244- return false
246+ if sr .shouldSendProof () {
247+ if ! sr .waitForSignalSync () {
248+ return false
249+ }
245250 }
246251
247- sr .mutProcessingEndRound . Lock ()
248- defer sr . mutProcessingEndRound . Unlock ()
249-
250- proof := sr . sendProof ()
252+ proof , ok := sr .sendProof ()
253+ if ! ok {
254+ return false
255+ }
251256
252257 err := sr .commitBlock ()
253258 if err != nil {
@@ -277,41 +282,42 @@ func (sr *subroundEndRound) doEndRoundJobByNode() bool {
277282 return true
278283}
279284
280- func (sr * subroundEndRound ) sendProof () data.HeaderProofHandler {
285+ func (sr * subroundEndRound ) sendProof () ( data.HeaderProofHandler , bool ) {
281286 if ! sr .shouldSendProof () {
282- return nil
287+ return nil , true
283288 }
284289
285290 bitmap := sr .GenerateBitmap (bls .SrSignature )
286291 err := sr .checkSignaturesValidity (bitmap )
287292 if err != nil {
288293 log .Debug ("sendProof.checkSignaturesValidity" , "error" , err .Error ())
289- return nil
294+ return nil , false
290295 }
291296
292297 // Aggregate signatures, handle invalid signers and send final info if needed
293298 bitmap , sig , err := sr .aggregateSigsAndHandleInvalidSigners (bitmap )
294299 if err != nil {
295300 log .Debug ("sendProof.aggregateSigsAndHandleInvalidSigners" , "error" , err .Error ())
296- return nil
301+ return nil , false
297302 }
298303
299304 ok := sr .ScheduledProcessor ().IsProcessedOKWithTimeout ()
300305 // placeholder for subroundEndRound.doEndRoundJobByLeader script
301306 if ! ok {
302- return nil
307+ return nil , false
303308 }
304309
305310 roundHandler := sr .RoundHandler ()
306311 if roundHandler .RemainingTime (roundHandler .TimeStamp (), roundHandler .TimeDuration ()) < 0 {
307312 log .Debug ("sendProof: time is out -> cancel broadcasting final info and header" ,
308313 "round time stamp" , roundHandler .TimeStamp (),
309314 "current time" , time .Now ())
310- return nil
315+ return nil , false
311316 }
312317
313318 // broadcast header proof
314- return sr .createAndBroadcastProof (sig , bitmap )
319+ proof , err := sr .createAndBroadcastProof (sig , bitmap )
320+ return proof , err == nil
315321}
316322
317323func (sr * subroundEndRound ) shouldSendProof () bool {
@@ -519,7 +525,7 @@ func (sr *subroundEndRound) computeAggSigOnValidNodes() ([]byte, []byte, error)
519525 return bitmap , sig , nil
520526}
521527
522- func (sr * subroundEndRound ) createAndBroadcastProof (signature []byte , bitmap []byte ) * block.HeaderProof {
528+ func (sr * subroundEndRound ) createAndBroadcastProof (signature []byte , bitmap []byte ) ( * block.HeaderProof , error ) {
523529 headerProof := & block.HeaderProof {
524530 PubKeysBitmap : bitmap ,
525531 AggregatedSignature : signature ,
@@ -531,14 +537,14 @@ func (sr *subroundEndRound) createAndBroadcastProof(signature []byte, bitmap []b
531537
532538 err := sr .BroadcastMessenger ().BroadcastEquivalentProof (headerProof , []byte (sr .SelfPubKey ()))
533539 if err != nil {
534- return nil
540+ return nil , err
535541 }
536542
537543 log .Debug ("step 3: block header proof has been sent" ,
538544 "PubKeysBitmap" , bitmap ,
539545 "AggregateSignature" , signature )
540546
541- return headerProof
547+ return headerProof , nil
542548}
543549
544550func (sr * subroundEndRound ) createAndBroadcastInvalidSigners (invalidSigners []byte ) {
@@ -710,7 +716,7 @@ func (sr *subroundEndRound) waitForSignalSync() bool {
710716 case <- timerBetweenStatusChecks .C :
711717 if sr .IsSubroundFinished (sr .Current ()) {
712718 log .Trace ("subround already finished" , "subround" , sr .Name ())
713- return false
719+ return true
714720 }
715721
716722 if sr .checkReceivedSignatures () {
0 commit comments