diff options
author | Felföldi Zsolt <zsfelfoldi@gmail.com> | 2019-05-13 19:41:10 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2019-05-13 19:41:10 +0800 |
commit | 40cdcf8c47ff094775aca08fd5d94051f9cf1dbb (patch) | |
tree | 3a9fc715ec501ab0fec8c81004e17477bd136f9f /les/txrelay.go | |
parent | f4fb1a18015d88aa7b424709aac346da59edf410 (diff) | |
download | go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar.gz go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar.bz2 go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar.lz go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar.xz go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.tar.zst go-tangerine-40cdcf8c47ff094775aca08fd5d94051f9cf1dbb.zip |
les, light: implement ODR transaction lookup by hash (#19069)
* les, light: implement ODR transaction lookup by hash
* les: delete useless file
* internal/ethapi: always use backend to find transaction
* les, eth, internal/ethapi: renamed GetCanonicalTransaction to GetTransaction
* light: add canonical header verification to GetTransaction
Diffstat (limited to 'les/txrelay.go')
-rw-r--r-- | les/txrelay.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/les/txrelay.go b/les/txrelay.go index a790bbec9..5ebef1c22 100644 --- a/les/txrelay.go +++ b/les/txrelay.go @@ -17,6 +17,7 @@ package les import ( + "context" "sync" "github.com/ethereum/go-ethereum/common" @@ -36,21 +37,27 @@ type LesTxRelay struct { peerList []*peer peerStartPos int lock sync.RWMutex + stop chan struct{} - reqDist *requestDistributor + retriever *retrieveManager } -func NewLesTxRelay(ps *peerSet, reqDist *requestDistributor) *LesTxRelay { +func NewLesTxRelay(ps *peerSet, retriever *retrieveManager) *LesTxRelay { r := &LesTxRelay{ txSent: make(map[common.Hash]*ltrInfo), txPending: make(map[common.Hash]struct{}), ps: ps, - reqDist: reqDist, + retriever: retriever, + stop: make(chan struct{}), } ps.notify(r) return r } +func (self *LesTxRelay) Stop() { + close(self.stop) +} + func (self *LesTxRelay) registerPeer(p *peer) { self.lock.Lock() defer self.lock.Unlock() @@ -132,7 +139,7 @@ func (self *LesTxRelay) send(txs types.Transactions, count int) { return func() { peer.SendTxs(reqID, cost, enc) } }, } - self.reqDist.queue(rq) + go self.retriever.retrieve(context.Background(), reqID, rq, func(p distPeer, msg *Msg) error { return nil }, self.stop) } } |