Added missing GetTx (0x16) wire message
This commit is contained in:
parent
60fd2f3521
commit
b888652201
@ -207,7 +207,7 @@ func (pool *TxPool) QueueTransaction(tx *Transaction) {
|
|||||||
pool.queueChan <- tx
|
pool.queueChan <- tx
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pool *TxPool) Flush() []*Transaction {
|
func (pool *TxPool) CurrentTransactions() []*Transaction {
|
||||||
pool.mutex.Lock()
|
pool.mutex.Lock()
|
||||||
defer pool.mutex.Unlock()
|
defer pool.mutex.Unlock()
|
||||||
|
|
||||||
@ -221,6 +221,12 @@ func (pool *TxPool) Flush() []*Transaction {
|
|||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return txList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pool *TxPool) Flush() []*Transaction {
|
||||||
|
txList := pool.CurrentTransactions()
|
||||||
|
|
||||||
// Recreate a new list all together
|
// Recreate a new list all together
|
||||||
// XXX Is this the fastest way?
|
// XXX Is this the fastest way?
|
||||||
pool.pool = list.New()
|
pool.pool = list.New()
|
||||||
|
@ -32,6 +32,7 @@ const (
|
|||||||
MsgBlockTy = 0x13
|
MsgBlockTy = 0x13
|
||||||
MsgGetChainTy = 0x14
|
MsgGetChainTy = 0x14
|
||||||
MsgNotInChainTy = 0x15
|
MsgNotInChainTy = 0x15
|
||||||
|
MsgGetTxsTy = 0x16
|
||||||
|
|
||||||
MsgTalkTy = 0xff
|
MsgTalkTy = 0xff
|
||||||
)
|
)
|
||||||
@ -46,6 +47,7 @@ var msgTypeToString = map[MsgType]string{
|
|||||||
MsgTxTy: "Transactions",
|
MsgTxTy: "Transactions",
|
||||||
MsgBlockTy: "Blocks",
|
MsgBlockTy: "Blocks",
|
||||||
MsgGetChainTy: "Get chain",
|
MsgGetChainTy: "Get chain",
|
||||||
|
MsgGetTxsTy: "Get Txs",
|
||||||
MsgNotInChainTy: "Not in chain",
|
MsgNotInChainTy: "Not in chain",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
peer.go
18
peer.go
@ -334,8 +334,8 @@ func (p *Peer) HandleInbound() {
|
|||||||
// in the TxPool where it will undergo validation and
|
// in the TxPool where it will undergo validation and
|
||||||
// processing when a new block is found
|
// processing when a new block is found
|
||||||
for i := 0; i < msg.Data.Len(); i++ {
|
for i := 0; i < msg.Data.Len(); i++ {
|
||||||
//p.ethereum.TxPool().QueueTransaction(ethchain.NewTransactionFromData(msg.Data.Get(i).Encode()))
|
tx := ethchain.NewTransactionFromValue(msg.Data.Get(i))
|
||||||
p.ethereum.TxPool().QueueTransaction(ethchain.NewTransactionFromValue(msg.Data.Get(i)))
|
p.ethereum.TxPool().QueueTransaction(tx)
|
||||||
}
|
}
|
||||||
case ethwire.MsgGetPeersTy:
|
case ethwire.MsgGetPeersTy:
|
||||||
// Flag this peer as a 'requested of new peers' this to
|
// Flag this peer as a 'requested of new peers' this to
|
||||||
@ -398,6 +398,16 @@ func (p *Peer) HandleInbound() {
|
|||||||
case ethwire.MsgNotInChainTy:
|
case ethwire.MsgNotInChainTy:
|
||||||
ethutil.Config.Log.Infof("Not in chain %x\n", msg.Data)
|
ethutil.Config.Log.Infof("Not in chain %x\n", msg.Data)
|
||||||
// TODO
|
// TODO
|
||||||
|
case ethwire.MsgGetTxsTy:
|
||||||
|
// Get the current transactions of the pool
|
||||||
|
txs := p.ethereum.TxPool().CurrentTransactions()
|
||||||
|
// Get the RlpData values from the txs
|
||||||
|
txsInterface := make([]interface{}, len(txs))
|
||||||
|
for i, tx := range txs {
|
||||||
|
txsInterface[i] = tx.RlpData()
|
||||||
|
}
|
||||||
|
// Broadcast it back to the peer
|
||||||
|
p.QueueMessage(ethwire.NewMessage(ethwire.MsgTxTy, txsInterface))
|
||||||
|
|
||||||
// Unofficial but fun nonetheless
|
// Unofficial but fun nonetheless
|
||||||
case ethwire.MsgTalkTy:
|
case ethwire.MsgTalkTy:
|
||||||
@ -562,6 +572,10 @@ func (p *Peer) CatchupWithPeer() {
|
|||||||
p.QueueMessage(msg)
|
p.QueueMessage(msg)
|
||||||
|
|
||||||
ethutil.Config.Log.Debugf("Requesting blockchain %x...\n", p.ethereum.BlockChain().CurrentBlock.Hash()[:4])
|
ethutil.Config.Log.Debugf("Requesting blockchain %x...\n", p.ethereum.BlockChain().CurrentBlock.Hash()[:4])
|
||||||
|
|
||||||
|
msg = ethwire.NewMessage(ethwire.MsgGetTxsTy, []interface{}{})
|
||||||
|
p.QueueMessage(msg)
|
||||||
|
ethutil.Config.Log.Debugln("Requested transactions")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user