Skip to content

Commit

Permalink
Merge pull request #51 from icon-project/bgkwon-BDT-1014
Browse files Browse the repository at this point in the history
Fix build proof message
  • Loading branch information
kornery authored Apr 18, 2024
2 parents c3d60b2 + c9dd982 commit bd16f18
Showing 1 changed file with 34 additions and 15 deletions.
49 changes: 34 additions & 15 deletions common/link/link.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ func (l *Link) startReceiverChannel(errCh chan error) error {
}
})

if l.bls.Verifier.Height < rs.Height() {
if l.bls.Verifier.Height < rs.Height() || l.bls.RxSeq < rs.Seq() {
if err = l.handleRelayMessage(); err != nil {
errCh <- err
}
Expand Down Expand Up @@ -168,8 +168,10 @@ func (l *Link) startSenderChannel(errCh chan error) error {
select {
case rc := <-rcc:
err := l.result(rc)
l.l.Debugf("SenderChannel error : %+v", err)
errCh <- err
if err != nil {
l.l.Debugf("SenderChannel error : %+v", err)
errCh <- err
}
}
}
}()
Expand All @@ -183,7 +185,7 @@ func (l *Link) buildRelayMessage() error {
}

//Get Block
bus, err := l.buildBlockUpdates(l.bls)
bus, err := l.buildBlockUpdates()
if err != nil {
return err
}
Expand Down Expand Up @@ -287,13 +289,23 @@ func (l *Link) handleRelayMessage() error {
if err := l.sendRelayMessage(); err != nil {
return err
}

for {
if l.relayState != PENDING &&
len(l.rss) != 0 &&
l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() {
if err := l.buildRelayMessage(); err != nil {
return err
(l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() ||
l.bls.RxSeq < l.rss[len(l.rss)-1].Seq()) {
if l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() {
if err := l.buildRelayMessage(); err != nil {
return err
}
} else if l.bls.RxSeq < l.rss[len(l.rss)-1].Seq() {
_, err := l.buildProof(nil)
if err != nil {
return err
}
if err = l.appendRelayMessage(); err != nil {
return err
}
}

if err := l.sendRelayMessage(); err != nil {
Expand All @@ -312,10 +324,10 @@ func (l *Link) handleRelayMessage() error {
return nil
}

func (l *Link) buildBlockUpdates(bs *types.BMCLinkStatus) ([]BlockUpdate, error) {
func (l *Link) buildBlockUpdates() ([]BlockUpdate, error) {
l.l.Debugf("BuildBlockUpdates (bls height:%d, bls rxSeq:%d)", l.bls.Verifier.Height, l.bls.RxSeq)
for {
bus, err := l.r.BuildBlockUpdate(bs, l.limitSize-l.rmi.size)
bus, err := l.r.BuildBlockUpdate(l.bls, l.limitSize-l.rmi.size)
if err != nil {
return nil, err
}
Expand All @@ -331,7 +343,7 @@ func (l *Link) handleUndeliveredRelayMessage() error {
return nil
}
for l.bls.RxSeq < rs.Seq() {
l.l.Debugf("HandleUndeliveredRelayMessage ReceiveStatus(height : %d, seq : %s), BMCLinkStatus(height : %d, seq : %s)",
l.l.Debugf("HandleUndeliveredRelayMessage ReceiveStatus(height : %d, seq : %d), BMCLinkStatus(height : %d, seq : %d)",
rs.Height(), rs.Seq(), l.bls.Verifier.Height, l.bls.RxSeq)
_, err := l.buildProof(nil)
if err != nil {
Expand All @@ -350,12 +362,19 @@ func (l *Link) handleUndeliveredRelayMessage() error {
func (l *Link) buildProof(bu BlockUpdate) (int64, error) {
l.l.Debugf("BuildProof (bls height:%d, bls rxSeq:%d)", l.bls.Verifier.Height, l.bls.RxSeq)
var mpLen int64
rs := l.getReceiveStatusForHeight(l.bls.Verifier.Height)
if rs == nil {
return 0, nil
var seq int64
if bu != nil {
rs := l.getReceiveStatusForHeight(l.bls.Verifier.Height)
if rs == nil {
return 0, nil
}
seq = rs.Seq()
} else {
seq = l.rss[len(l.rss)-1].Seq()
}

for {
if rs.Seq() <= l.bls.RxSeq {
if seq <= l.bls.RxSeq {
break
}

Expand Down

0 comments on commit bd16f18

Please sign in to comment.