Skip to content

Commit bd16f18

Browse files
authored
Merge pull request #51 from icon-project/bgkwon-BDT-1014
Fix build proof message
2 parents c3d60b2 + c9dd982 commit bd16f18

File tree

1 file changed

+34
-15
lines changed

1 file changed

+34
-15
lines changed

common/link/link.go

+34-15
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func (l *Link) startReceiverChannel(errCh chan error) error {
140140
}
141141
})
142142

143-
if l.bls.Verifier.Height < rs.Height() {
143+
if l.bls.Verifier.Height < rs.Height() || l.bls.RxSeq < rs.Seq() {
144144
if err = l.handleRelayMessage(); err != nil {
145145
errCh <- err
146146
}
@@ -168,8 +168,10 @@ func (l *Link) startSenderChannel(errCh chan error) error {
168168
select {
169169
case rc := <-rcc:
170170
err := l.result(rc)
171-
l.l.Debugf("SenderChannel error : %+v", err)
172-
errCh <- err
171+
if err != nil {
172+
l.l.Debugf("SenderChannel error : %+v", err)
173+
errCh <- err
174+
}
173175
}
174176
}
175177
}()
@@ -183,7 +185,7 @@ func (l *Link) buildRelayMessage() error {
183185
}
184186

185187
//Get Block
186-
bus, err := l.buildBlockUpdates(l.bls)
188+
bus, err := l.buildBlockUpdates()
187189
if err != nil {
188190
return err
189191
}
@@ -287,13 +289,23 @@ func (l *Link) handleRelayMessage() error {
287289
if err := l.sendRelayMessage(); err != nil {
288290
return err
289291
}
290-
291292
for {
292293
if l.relayState != PENDING &&
293294
len(l.rss) != 0 &&
294-
l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() {
295-
if err := l.buildRelayMessage(); err != nil {
296-
return err
295+
(l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() ||
296+
l.bls.RxSeq < l.rss[len(l.rss)-1].Seq()) {
297+
if l.bls.Verifier.Height < l.rss[len(l.rss)-1].Height() {
298+
if err := l.buildRelayMessage(); err != nil {
299+
return err
300+
}
301+
} else if l.bls.RxSeq < l.rss[len(l.rss)-1].Seq() {
302+
_, err := l.buildProof(nil)
303+
if err != nil {
304+
return err
305+
}
306+
if err = l.appendRelayMessage(); err != nil {
307+
return err
308+
}
297309
}
298310

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

315-
func (l *Link) buildBlockUpdates(bs *types.BMCLinkStatus) ([]BlockUpdate, error) {
327+
func (l *Link) buildBlockUpdates() ([]BlockUpdate, error) {
316328
l.l.Debugf("BuildBlockUpdates (bls height:%d, bls rxSeq:%d)", l.bls.Verifier.Height, l.bls.RxSeq)
317329
for {
318-
bus, err := l.r.BuildBlockUpdate(bs, l.limitSize-l.rmi.size)
330+
bus, err := l.r.BuildBlockUpdate(l.bls, l.limitSize-l.rmi.size)
319331
if err != nil {
320332
return nil, err
321333
}
@@ -331,7 +343,7 @@ func (l *Link) handleUndeliveredRelayMessage() error {
331343
return nil
332344
}
333345
for l.bls.RxSeq < rs.Seq() {
334-
l.l.Debugf("HandleUndeliveredRelayMessage ReceiveStatus(height : %d, seq : %s), BMCLinkStatus(height : %d, seq : %s)",
346+
l.l.Debugf("HandleUndeliveredRelayMessage ReceiveStatus(height : %d, seq : %d), BMCLinkStatus(height : %d, seq : %d)",
335347
rs.Height(), rs.Seq(), l.bls.Verifier.Height, l.bls.RxSeq)
336348
_, err := l.buildProof(nil)
337349
if err != nil {
@@ -350,12 +362,19 @@ func (l *Link) handleUndeliveredRelayMessage() error {
350362
func (l *Link) buildProof(bu BlockUpdate) (int64, error) {
351363
l.l.Debugf("BuildProof (bls height:%d, bls rxSeq:%d)", l.bls.Verifier.Height, l.bls.RxSeq)
352364
var mpLen int64
353-
rs := l.getReceiveStatusForHeight(l.bls.Verifier.Height)
354-
if rs == nil {
355-
return 0, nil
365+
var seq int64
366+
if bu != nil {
367+
rs := l.getReceiveStatusForHeight(l.bls.Verifier.Height)
368+
if rs == nil {
369+
return 0, nil
370+
}
371+
seq = rs.Seq()
372+
} else {
373+
seq = l.rss[len(l.rss)-1].Seq()
356374
}
375+
357376
for {
358-
if rs.Seq() <= l.bls.RxSeq {
377+
if seq <= l.bls.RxSeq {
359378
break
360379
}
361380

0 commit comments

Comments
 (0)