Skip to content

Commit ab13cd9

Browse files
zsfelfoldikaralabe
authored andcommitted
les: fix invalid delivery handling in retriever (#17727)
1 parent 32c05e8 commit ab13cd9

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

les/retrieve.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,18 @@ func (r *sentReq) stateRequesting() reqStateFn {
212212
// no need to go to stopped state because waiting() already returned false
213213
return nil
214214
}
215-
case rpSoftTimeout, rpDeliveredInvalid:
215+
case rpSoftTimeout:
216216
// last request timed out, try asking a new peer
217217
go r.tryRequest()
218218
r.lastReqQueued = true
219219
return r.stateRequesting
220+
case rpDeliveredInvalid:
221+
// if it was the last sent request (set to nil by update) then start a new one
222+
if !r.lastReqQueued && r.lastReqSentTo == nil {
223+
go r.tryRequest()
224+
r.lastReqQueued = true
225+
}
226+
return r.stateRequesting
220227
case rpDeliveredValid:
221228
r.stop(nil)
222229
return r.stateStopped

0 commit comments

Comments
 (0)