Skip to content

Commit c8130df

Browse files
committed
les: using random request IDs
1 parent af8a742 commit c8130df

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

les/fetcher.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ func (f *lightFetcher) request(p *peer, n *fetcherTreeNode, amount uint64) (uint
350350
return 0, false
351351
}
352352

353-
reqID := f.odr.getNextReqID()
353+
reqID := getNextReqID()
354354
n.requested = true
355355
cost := p.GetRequestCost(GetBlockHeadersMsg, int(amount))
356356
p.fcServer.SendRequest(reqID, cost)

les/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,13 +338,13 @@ func (pm *ProtocolManager) handle(p *peer) error {
338338
glog.V(logger.Debug).Infof("LES: register peer %v", p.id)
339339
if pm.lightSync {
340340
requestHeadersByHash := func(origin common.Hash, amount int, skip int, reverse bool) error {
341-
reqID := pm.odr.getNextReqID()
341+
reqID := getNextReqID()
342342
cost := p.GetRequestCost(GetBlockHeadersMsg, amount)
343343
p.fcServer.SendRequest(reqID, cost)
344344
return p.RequestHeadersByHash(reqID, cost, origin, amount, skip, reverse)
345345
}
346346
requestHeadersByNumber := func(origin uint64, amount int, skip int, reverse bool) error {
347-
reqID := pm.odr.getNextReqID()
347+
reqID := getNextReqID()
348348
cost := p.GetRequestCost(GetBlockHeadersMsg, amount)
349349
p.fcServer.SendRequest(reqID, cost)
350350
return p.RequestHeadersByNumber(reqID, cost, origin, amount, skip, reverse)

les/odr.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package les
1818

1919
import (
20+
"crypto/rand"
21+
"encoding/binary"
2022
"sync"
2123
"time"
2224

@@ -50,7 +52,6 @@ type LesOdr struct {
5052
mlock, clock sync.Mutex
5153
sentReqs map[uint64]*sentReq
5254
serverPool odrPeerSelector
53-
lastReqID uint64
5455
}
5556

5657
func NewLesOdr(db ethdb.Database) *LesOdr {
@@ -167,7 +168,7 @@ func (self *LesOdr) networkRequest(ctx context.Context, lreq LesOdrRequest) erro
167168
sentTo: make(map[*peer]chan struct{}),
168169
answered: answered, // reply delivered by any peer
169170
}
170-
reqID := self.getNextReqID()
171+
reqID := getNextReqID()
171172
self.mlock.Lock()
172173
self.sentReqs[reqID] = req
173174
self.mlock.Unlock()
@@ -236,10 +237,8 @@ func (self *LesOdr) Retrieve(ctx context.Context, req light.OdrRequest) (err err
236237
return
237238
}
238239

239-
func (self *LesOdr) getNextReqID() uint64 {
240-
self.clock.Lock()
241-
defer self.clock.Unlock()
242-
243-
self.lastReqID++
244-
return self.lastReqID
240+
func getNextReqID() uint64 {
241+
var rnd [8]byte
242+
rand.Read(rnd[:])
243+
return binary.BigEndian.Uint64(rnd[:])
245244
}

0 commit comments

Comments
 (0)