Data send over the wire shouldn't be RLPed more then once

This commit is contained in:
obscuren 2014-01-23 22:32:50 +01:00
parent 878e796c0a
commit 233f5200ef
2 changed files with 12 additions and 8 deletions

@ -122,9 +122,10 @@ func (s *Ethereum) InboundPeers() []*Peer {
return inboundPeers[:length]
}
func (s *Ethereum) Broadcast(msgType ethwire.MsgType, data []byte) {
func (s *Ethereum) Broadcast(msgType ethwire.MsgType, data interface{}) {
msg := ethwire.NewMessage(msgType, data)
eachPeer(s.peers, func(p *Peer, e *list.Element) {
p.QueueMessage(ethwire.NewMessage(msgType, data))
p.QueueMessage(msg)
})
}

15
peer.go

@ -170,12 +170,15 @@ out:
// Version message
p.handleHandshake(msg)
case ethwire.MsgBlockTy:
err := p.ethereum.BlockManager.ProcessBlock(ethchain.NewBlock(msg.Data))
if err != nil {
log.Println(err)
}
/*
err := p.ethereum.BlockManager.ProcessBlock(ethchain.NewBlock(msg.Data))
if err != nil {
log.Println(err)
}
*/
case ethwire.MsgTxTy:
p.ethereum.TxPool.QueueTransaction(ethutil.NewTransactionFromData(msg.Data))
//p.ethereum.TxPool.QueueTransaction(ethchain.NewTransactionFromData(msg.Data))
p.ethereum.TxPool.QueueTransaction(ethchain.NewTransactionFromRlpValue(msg.Data.Get(0)))
case ethwire.MsgInvTy:
case ethwire.MsgGetPeersTy:
p.requestedPeerList = true
@ -263,7 +266,7 @@ func (p *Peer) pushPeers() {
}
func (p *Peer) handleHandshake(msg *ethwire.Msg) {
c := ethutil.Conv(msg.Data)
c := msg.Data
// [PROTOCOL_VERSION, NETWORK_ID, CLIENT_ID]
if c.Get(2).AsUint() == p.ethereum.Nonce {
//if msg.Nonce == p.ethereum.Nonce {