mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
gossip: Change gossip_store message length to u32
Since we now store additional data along with the original messages they exceed the length of the peer wire protocol messages. Signed-off-by: Christian Decker <decker.christian@gmail.com>
This commit is contained in:
parent
b5602a0973
commit
6894f20927
@ -46,20 +46,20 @@ struct gossip_store *gossip_store_new(const tal_t *ctx)
|
||||
|
||||
void gossip_store_append(struct gossip_store *gs, const u8 *msg)
|
||||
{
|
||||
u16 msglen = tal_len(msg);
|
||||
beint16_t belen = cpu_to_be16(msglen);
|
||||
u32 msglen = tal_len(msg);
|
||||
beint32_t belen = cpu_to_be32(msglen);
|
||||
|
||||
if (pwrite(gs->fd, &belen, sizeof(belen), gs->write_pos) != 2 ||
|
||||
pwrite(gs->fd, msg, msglen, gs->write_pos + 2) != msglen) {
|
||||
if (pwrite(gs->fd, &belen, sizeof(belen), gs->write_pos) != sizeof(belen) ||
|
||||
pwrite(gs->fd, msg, msglen, gs->write_pos + sizeof(belen)) != msglen) {
|
||||
return;
|
||||
} else
|
||||
gs->write_pos += 2 + msglen;
|
||||
gs->write_pos += sizeof(belen) + msglen;
|
||||
}
|
||||
|
||||
const u8 *gossip_store_read_next(const tal_t *ctx, struct gossip_store *gs)
|
||||
{
|
||||
beint16_t belen;
|
||||
u16 msglen;
|
||||
beint32_t belen;
|
||||
u32 msglen;
|
||||
u8 *msg;
|
||||
|
||||
/* Did we already reach the end of the gossip_store? */
|
||||
@ -67,15 +67,15 @@ const u8 *gossip_store_read_next(const tal_t *ctx, struct gossip_store *gs)
|
||||
return NULL;
|
||||
|
||||
/* Can we read one message? */
|
||||
if (pread(gs->fd, &belen, sizeof(belen), gs->read_pos) != 2) {
|
||||
if (pread(gs->fd, &belen, sizeof(belen), gs->read_pos) != sizeof(belen)) {
|
||||
gs->read_pos = -1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
msglen = be16_to_cpu(belen);
|
||||
msglen = be32_to_cpu(belen);
|
||||
msg = tal_arr(ctx, u8, msglen);
|
||||
|
||||
if (!pread(gs->fd, msg, msglen, gs->read_pos + 2)) {
|
||||
if (!pread(gs->fd, msg, msglen, gs->read_pos + sizeof(belen))) {
|
||||
status_trace("Short read from gossip-store, expected lenght %d",
|
||||
msglen);
|
||||
|
||||
@ -85,7 +85,7 @@ const u8 *gossip_store_read_next(const tal_t *ctx, struct gossip_store *gs)
|
||||
gs->read_pos = -1;
|
||||
ftruncate(gs->fd, gs->write_pos);
|
||||
} else
|
||||
gs->read_pos += 2 + msglen;
|
||||
gs->read_pos += sizeof(belen) + msglen;
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user