OSDN Git Service

mark tx before validation so it won't be sent to source again (#278)
authorapolloww <32606824+apolloww@users.noreply.github.com>
Sat, 13 Jul 2019 07:10:52 +0000 (15:10 +0800)
committerPaladz <yzhu101@uottawa.ca>
Sat, 13 Jul 2019 07:10:52 +0000 (15:10 +0800)
netsync/chainmgr/handle.go

index 81baace..91f3949 100644 (file)
@@ -253,10 +253,10 @@ func (m *Manager) handleTransactionMsg(peer *peers.Peer, msg *msgs.TransactionMe
                return
        }
 
+       m.peers.MarkTx(peer.ID(), tx.ID)
        if isOrphan, err := m.chain.ValidateTx(tx); err != nil && err != core.ErrDustTx && !isOrphan {
                m.peers.ProcessIllegal(peer.ID(), security.LevelMsgIllegal, "fail on validate tx transaction")
        }
-       m.peers.MarkTx(peer.ID(), tx.ID)
 }
 
 func (m *Manager) handleTransactionsMsg(peer *peers.Peer, msg *msgs.TransactionsMessage) {
@@ -272,11 +272,11 @@ func (m *Manager) handleTransactionsMsg(peer *peers.Peer, msg *msgs.Transactions
        }
 
        for _, tx := range txs {
+               m.peers.MarkTx(peer.ID(), tx.ID)
                if isOrphan, err := m.chain.ValidateTx(tx); err != nil && !isOrphan {
                        m.peers.ProcessIllegal(peer.ID(), security.LevelMsgIllegal, "fail on validate tx transaction")
                        return
                }
-               m.peers.MarkTx(peer.ID(), tx.ID)
        }
 }