aboutsummaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2015-07-20 18:17:53 +0100
committerMichael Brown <mcb30@ipxe.org>2015-07-28 15:22:26 +0100
commitf0d594557c737a5fa43cae74985bc4965c1a042b (patch)
tree58d0e0fdbd9c58eaa2fb709ee53e44254ca2d3c2 /src/net
parentb20d4a1522646f71ec22b541d95f9d603760a58d (diff)
downloadipxe-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.c23
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;
}