From fa16a9735a056cfcdfc3514ad209607f66da726d Mon Sep 17 00:00:00 2001 From: muscle_boy Date: Fri, 24 Aug 2018 14:24:54 +0800 Subject: [PATCH] Full node prohibit connect to spv node (#1272) * the transaction output amout prohibit set zero * add network access control api * format import code style * refactor * code refactor * bug fix * the struct node_info add json field * estimate gas support multi-sign * add testcase of estimate gas * add testcase * bug fix * add test case * test case refactor * list-tx,list-address,list-utxo support partition * list-addresses list-tx list-utxo support pagging * refactor pagging * fix save asset * fix save external assets * remove blank * remove useless context * remove redudant web address config * fix bug * remove useless ctx * add spv message struct * remove redundant * refactor message struct * refactor message struct * add filter load message handler * add debug log * bug fix spv * bug fix * bug fix * refactor * refactor * add merkle proof * add merkle flags test case * add multiset * bug fix and refactor * bug fix * remove redundant code * bug fix * bug fix * format code * refactor merkle tree * refactor * refactor * fix bug for make test * bug fix * move merkle tree to bc level * NewMinedBlockMessage not broadcast to the spv node * refactor * refactor * refactor * merkle tree bug fix * merkle tree bug fix * limit the size of filter address * bug fix * refactor * fix full node connect to spv node * format code * bug fix * fix bug --- p2p/switch.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/p2p/switch.go b/p2p/switch.go index d3c49d86..f2afbd08 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -13,6 +13,7 @@ import ( dbm "github.com/tendermint/tmlibs/db" cfg "github.com/bytom/config" + "github.com/bytom/consensus" "github.com/bytom/errors" "github.com/bytom/p2p/connection" "github.com/bytom/p2p/discover" @@ -31,6 +32,7 @@ var ( ErrDuplicatePeer = errors.New("Duplicate peer") ErrConnectSelf = errors.New("Connect self") ErrConnectBannedPeer = errors.New("Connect banned peer") + ErrConnectSpvPeer = errors.New("Outbound connect spv peer") ) // Switch handles peer connections and exposes an API to receive incoming messages @@ -149,6 +151,10 @@ func (sw *Switch) AddPeer(pc *peerConn) error { return err } + if pc.outbound && !peer.ServiceFlag().IsEnable(consensus.SFFullNode) { + return ErrConnectSpvPeer + } + // Start peer if sw.IsRunning() { if err := sw.startInitPeer(peer); err != nil { -- 2.11.0