mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 07:04:22 +01:00
common: handle peer input before gossipd input (for closingd, openingd)
Similar to the previous "handle peer input before gossip input", this fixes similar potential deadlock for closingd and openingd which use peer_or_gossip_sync_read. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
6e4d9acac3
commit
c9a907cd71
@@ -26,18 +26,18 @@ u8 *peer_or_gossip_sync_read(const tal_t *ctx,
|
||||
select(peer_fd > gossip_fd ? peer_fd + 1 : gossip_fd + 1,
|
||||
&readfds, NULL, NULL, NULL);
|
||||
|
||||
if (FD_ISSET(gossip_fd, &readfds)) {
|
||||
msg = wire_sync_read(ctx, gossip_fd);
|
||||
if (!msg)
|
||||
status_failed(STATUS_FAIL_GOSSIP_IO,
|
||||
"Error reading gossip msg: %s",
|
||||
strerror(errno));
|
||||
*from_gossipd = true;
|
||||
if (FD_ISSET(peer_fd, &readfds)) {
|
||||
msg = sync_crypto_read(ctx, cs, peer_fd);
|
||||
*from_gossipd = false;
|
||||
return msg;
|
||||
}
|
||||
|
||||
msg = sync_crypto_read(ctx, cs, peer_fd);
|
||||
*from_gossipd = false;
|
||||
msg = wire_sync_read(ctx, gossip_fd);
|
||||
if (!msg)
|
||||
status_failed(STATUS_FAIL_GOSSIP_IO,
|
||||
"Error reading gossip msg: %s",
|
||||
strerror(errno));
|
||||
*from_gossipd = true;
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user