diff options
author | Michael Brown <mcb30@ipxe.org> | 2015-07-20 18:17:53 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2015-07-28 15:22:26 +0100 |
commit | f0d594557c737a5fa43cae74985bc4965c1a042b (patch) | |
tree | 58d0e0fdbd9c58eaa2fb709ee53e44254ca2d3c2 /src/net | |
parent | b20d4a1522646f71ec22b541d95f9d603760a58d (diff) | |
download | ipxe-f0d594557c737a5fa43cae74985bc4965c1a042b.zip ipxe-f0d594557c737a5fa43cae74985bc4965c1a042b.tar.gz ipxe-f0d594557c737a5fa43cae74985bc4965c1a042b.tar.bz2 |
[peerdist] Include trimmed range within content information block
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/pccrc.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/net/pccrc.c b/src/net/pccrc.c index 6ea26b3..4cd82cd 100644 --- a/src/net/pccrc.c +++ b/src/net/pccrc.c @@ -747,7 +747,7 @@ int peerdist_info_segment ( const struct peerdist_info *info, if ( ( rc = info->op->segment ( segment ) ) != 0 ) return rc; - DBGC2 ( info, "PCCRC %p segment %d covers [%08zx,%08zx) with %d " + DBGC2 ( info, "PCCRC %p segment %d range [%08zx,%08zx) with %d " "blocks\n", info, segment->index, segment->range.start, segment->range.end, segment->blocks ); DBGC2 ( info, "PCCRC %p segment %d digest %s\n", info, segment->index, @@ -771,6 +771,8 @@ int peerdist_info_block ( const struct peerdist_info_segment *segment, struct peerdist_info_block *block, unsigned int index ) { const struct peerdist_info *info = segment->info; + size_t start; + size_t end; int rc; /* Sanity checks */ @@ -793,11 +795,24 @@ int peerdist_info_block ( const struct peerdist_info_segment *segment, if ( ( rc = info->op->block ( block ) ) != 0 ) return rc; + /* Calculate trimmed range */ + start = block->range.start; + if ( start < info->trim.start ) + start = info->trim.start; + end = block->range.end; + if ( end > info->trim.end ) + end = info->trim.end; + if ( end < start ) + end = start; + block->trim.start = start; + block->trim.end = end; + DBGC2 ( info, "PCCRC %p segment %d block %d hash %s\n", info, segment->index, block->index, peerdist_info_hash_ntoa ( info, block->hash ) ); - DBGC2 ( info, "PCCRC %p segment %d block %d covers [%08zx,%08zx)\n", - info, segment->index, block->index, block->range.start, - block->range.end ); + DBGC2 ( info, "PCCRC %p segment %d block %d range [%08zx,%08zx) covers " + "[%08zx,%08zx)\n", info, segment->index, block->index, + block->range.start, block->range.end, block->trim.start, + block->trim.end ); return 0; } |