aboutsummaryrefslogtreecommitdiffstats
path: root/les/txrelay.go
diff options
context:
space:
mode:
authorFelföldi Zsolt <zsfelfoldi@gmail.com>2019-05-13 19:41:10 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-05-13 19:41:10 +0800
commit40cdcf8c47ff094775aca08fd5d94051f9cf1dbb (patch)
tree3a9fc715ec501ab0fec8c81004e17477bd136f9f /les/txrelay.go
parentf4fb1a18015d88aa7b424709aac346da59edf410 (diff)
downloadgo-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.go15
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)
}
}