diff --git a/blocks/blockstore/blockstore.go b/blocks/blockstore/blockstore.go index dfa35ec413ad27d1833785b3aea00a54d7ecf90d..fb8a0f067ffeb36d37994db0873cba5b89ef3710 100644 --- a/blocks/blockstore/blockstore.go +++ b/blocks/blockstore/blockstore.go @@ -100,12 +100,16 @@ func (bs *blockstore) Get(k *cid.Cid) (blocks.Block, error) { } if bs.rehash { - rb := blocks.NewBlock(bdata) - if !rb.Cid().Equals(k) { + rbcid, err := k.Prefix().Sum(bdata) + if err != nil { + return nil, err + } + + if !rbcid.Equals(k) { return nil, ErrHashMismatch - } else { - return rb, nil } + + return blocks.NewBlockWithCid(bdata, rbcid) } else { return blocks.NewBlockWithCid(bdata, k) } diff --git a/test/sharness/t0084-repo-read-rehash.sh b/test/sharness/t0084-repo-read-rehash.sh index 9be2e95cf9c50a9550f9787a703b92f4983265e4..7a1faa4bd86700d845e4e8a15177163cd9f99372 100755 --- a/test/sharness/t0084-repo-read-rehash.sh +++ b/test/sharness/t0084-repo-read-rehash.sh @@ -43,6 +43,11 @@ test_check_bad_blocks() { test_check_bad_blocks +test_expect_success "can add and cat a raw-leaf file" ' + HASH=$(echo "stuff" | ipfs add -q --raw-leaves) && + ipfs cat $HASH > /dev/null +' + test_launch_ipfs_daemon test_check_bad_blocks test_kill_ipfs_daemon