From baecd7d3777f9ff1add5d67e1e6e932567990913 Mon Sep 17 00:00:00 2001 From: CocoaHuke Date: Thu, 21 Jun 2018 22:06:19 -0700 Subject: [PATCH] Update TxStatusRequest --- core/rawdb/accessors_indexes.go | 10 ++++++++++ eth/api_backend.go | 1 + les/odr_requests.go | 7 ++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index 4ff7e5bd35..fcb06a3a52 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -57,6 +57,16 @@ func WriteTxLookupEntries(db DatabaseWriter, block *types.Block) { } } +func WriteTxLookupEntry(db DatabaseWriter, entry *TxLookupEntry, txHash common.Hash) { + data, err := rlp.EncodeToBytes(entry) + if err != nil { + log.Crit("Failed to encode transaction lookup entry", "err", err) + } + if err := db.Put(txLookupKey(txHash), data); err != nil { + log.Crit("Failed to store transaction lookup entry", "err", err) + } +} + // DeleteTxLookupEntry removes all transaction data associated with a hash. func DeleteTxLookupEntry(db DatabaseDeleter, hash common.Hash) { db.Delete(txLookupKey(hash)) diff --git a/eth/api_backend.go b/eth/api_backend.go index 8edace8fa9..68b5bbddfa 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -17,6 +17,7 @@ package eth import ( + "errors" "context" "math/big" diff --git a/les/odr_requests.go b/les/odr_requests.go index 51cdf7a566..7900929434 100644 --- a/les/odr_requests.go +++ b/les/odr_requests.go @@ -68,6 +68,8 @@ func LesRequest(req light.OdrRequest) LesOdrRequest { return (*ChtRequest)(r) case *light.BloomRequest: return (*BloomRequest)(r) + case *light.TxStatusRequest: + return (*TxStatusRequest)(r) default: return nil } @@ -575,7 +577,10 @@ func (r *TxStatusRequest) GetCost(peer *peer) uint64 { // CanSend tells if a certain peer is suitable for serving the given request func (r *TxStatusRequest) CanSend(peer *peer) bool { - if peer.version == lpv1 { + peer.lock.RLock() + defer peer.lock.RUnlock() + + if peer.version < lpv2 { return false } return true