diff --git a/exchange/bitswap/message/message.go b/exchange/bitswap/message/message.go index 1914f6c389b779cc40aab810f482f9571efb5568..d39ff821d2d342945925ae645e8a354aa0fe28dc 100644 --- a/exchange/bitswap/message/message.go +++ b/exchange/bitswap/message/message.go @@ -26,15 +26,15 @@ type Exportable interface { ToNet(p peer.Peer) (nm.NetMessage, error) } -// message wraps a proto message for convenience type impl struct { wantlist map[u.Key]struct{} - blocks []blocks.Block + blocks map[u.Key]blocks.Block } func New() BitSwapMessage { return &impl{ wantlist: make(map[u.Key]struct{}), + blocks: make(map[u.Key]blocks.Block), } } @@ -61,7 +61,11 @@ func (m *impl) Wantlist() []u.Key { // TODO(brian): convert these into blocks func (m *impl) Blocks() []blocks.Block { - return m.blocks + bs := make([]blocks.Block, 0) + for _, block := range m.blocks { + bs = append(bs, block) + } + return bs } func (m *impl) AddWanted(k u.Key) { @@ -69,7 +73,7 @@ func (m *impl) AddWanted(k u.Key) { } func (m *impl) AppendBlock(b blocks.Block) { - m.blocks = append(m.blocks, b) + m.blocks[b.Key()] = b } func FromNet(nmsg netmsg.NetMessage) (BitSwapMessage, error) {