diff options
author | Zsolt Felfoldi <zsfelfoldi@gmail.com> | 2016-12-06 13:16:53 +0800 |
---|---|---|
committer | Zsolt Felfoldi <zsfelfoldi@gmail.com> | 2016-12-10 16:53:25 +0800 |
commit | c8130df1d9dcc504244a49cbb12aa4c2848e5de2 (patch) | |
tree | 172e9af96668feb822d67fedc28771d7671c9e7d /les/odr.go | |
parent | af8a742d00f9d47b832f6f2d50a8e1c89bbf8441 (diff) | |
download | go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar.gz go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar.bz2 go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar.lz go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar.xz go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.tar.zst go-tangerine-c8130df1d9dcc504244a49cbb12aa4c2848e5de2.zip |
les: using random request IDs
Diffstat (limited to 'les/odr.go')
-rw-r--r-- | les/odr.go | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/les/odr.go b/les/odr.go index 10ef928df..4bfbdcb4d 100644 --- a/les/odr.go +++ b/les/odr.go @@ -17,6 +17,8 @@ package les import ( + "crypto/rand" + "encoding/binary" "sync" "time" @@ -50,7 +52,6 @@ type LesOdr struct { mlock, clock sync.Mutex sentReqs map[uint64]*sentReq serverPool odrPeerSelector - lastReqID uint64 } func NewLesOdr(db ethdb.Database) *LesOdr { @@ -167,7 +168,7 @@ func (self *LesOdr) networkRequest(ctx context.Context, lreq LesOdrRequest) erro sentTo: make(map[*peer]chan struct{}), answered: answered, // reply delivered by any peer } - reqID := self.getNextReqID() + reqID := getNextReqID() self.mlock.Lock() self.sentReqs[reqID] = req self.mlock.Unlock() @@ -236,10 +237,8 @@ func (self *LesOdr) Retrieve(ctx context.Context, req light.OdrRequest) (err err return } -func (self *LesOdr) getNextReqID() uint64 { - self.clock.Lock() - defer self.clock.Unlock() - - self.lastReqID++ - return self.lastReqID +func getNextReqID() uint64 { + var rnd [8]byte + rand.Read(rnd[:]) + return binary.BigEndian.Uint64(rnd[:]) } |