version 1.15, 2019/05/08 20:00:25 |
version 1.16, 2019/05/08 21:30:11 |
|
|
* Symmetrises blk_send_ack(). |
* Symmetrises blk_send_ack(). |
*/ |
*/ |
void |
void |
blk_recv_ack(struct sess *sess, char buf[20], |
blk_recv_ack(char buf[20], const struct blkset *blocks, int32_t idx) |
const struct blkset *blocks, int32_t idx) |
|
{ |
{ |
size_t pos = 0, sz; |
size_t pos = 0, sz; |
|
|
|
|
sizeof(int32_t); /* block remainder */ |
sizeof(int32_t); /* block remainder */ |
assert(sz == 20); |
assert(sz == 20); |
|
|
io_buffer_int(sess, buf, &pos, sz, idx); |
io_buffer_int(buf, &pos, sz, idx); |
io_buffer_int(sess, buf, &pos, sz, blocks->blksz); |
io_buffer_int(buf, &pos, sz, blocks->blksz); |
io_buffer_int(sess, buf, &pos, sz, blocks->len); |
io_buffer_int(buf, &pos, sz, blocks->len); |
io_buffer_int(sess, buf, &pos, sz, blocks->csum); |
io_buffer_int(buf, &pos, sz, blocks->csum); |
io_buffer_int(sess, buf, &pos, sz, blocks->rem); |
io_buffer_int(buf, &pos, sz, blocks->rem); |
assert(pos == sz); |
assert(pos == sz); |
} |
} |
|
|
|
|
return 0; |
return 0; |
} |
} |
|
|
if (!io_unbuffer_size(sess, buf, &pos, sz, &p->blksz)) |
if (!io_unbuffer_size(buf, &pos, sz, &p->blksz)) |
ERRX1("io_unbuffer_size"); |
ERRX1("io_unbuffer_size"); |
else if (!io_unbuffer_size(sess, buf, &pos, sz, &p->len)) |
else if (!io_unbuffer_size(buf, &pos, sz, &p->len)) |
ERRX1("io_unbuffer_size"); |
ERRX1("io_unbuffer_size"); |
else if (!io_unbuffer_size(sess, buf, &pos, sz, &p->csum)) |
else if (!io_unbuffer_size(buf, &pos, sz, &p->csum)) |
ERRX1("io_unbuffer_size"); |
ERRX1("io_unbuffer_size"); |
else if (!io_unbuffer_size(sess, buf, &pos, sz, &p->rem)) |
else if (!io_unbuffer_size(buf, &pos, sz, &p->rem)) |
ERRX1("io_unbuffer_size"); |
ERRX1("io_unbuffer_size"); |
else if (p->len && p->rem >= p->len) |
else if (p->len && p->rem >= p->len) |
ERRX1("non-zero length is less than remainder"); |
ERRX1("non-zero length is less than remainder"); |
|
|
return 0; |
return 0; |
} |
} |
|
|
io_buffer_int(sess, buf, &pos, sz, idx); |
io_buffer_int(buf, &pos, sz, idx); |
io_buffer_int(sess, buf, &pos, sz, p->blksz); |
io_buffer_int(buf, &pos, sz, p->blksz); |
io_buffer_int(sess, buf, &pos, sz, p->len); |
io_buffer_int(buf, &pos, sz, p->len); |
io_buffer_int(sess, buf, &pos, sz, p->csum); |
io_buffer_int(buf, &pos, sz, p->csum); |
io_buffer_int(sess, buf, &pos, sz, p->rem); |
io_buffer_int(buf, &pos, sz, p->rem); |
|
|
for (i = 0; i < p->blksz; i++) { |
for (i = 0; i < p->blksz; i++) { |
io_buffer_int(sess, buf, &pos, |
io_buffer_int(buf, &pos, |
sz, p->blks[i].chksum_short); |
sz, p->blks[i].chksum_short); |
io_buffer_buf(sess, buf, &pos, sz, |
io_buffer_buf(buf, &pos, sz, p->blks[i].chksum_long, p->csum); |
p->blks[i].chksum_long, p->csum); |
|
} |
} |
|
|
assert(pos == sz); |
assert(pos == sz); |