Browse Source

channeld: Forward custommsgs to lightningd

travis-debug
Christian Decker 5 years ago
parent
commit
6232b27171
  1. 31
      channeld/channeld.c

31
channeld/channeld.c

@ -1818,6 +1818,27 @@ static void handle_peer_shutdown(struct peer *peer, const u8 *shutdown)
billboard_update(peer);
}
/* Try to handle a custommsg Returns true if it was a custom message and has
* been handled, false if the message was not handled.
*/
static bool channeld_handle_custommsg(const u8 *msg)
{
#if DEVELOPER
enum wire_type type = fromwire_peektype(msg);
if (type % 2 == 1 && !wire_type_is_defined(type)) {
/* The message is not part of the messages we know how to
* handle. Assuming this is a custommsg, we just forward it to the
* master. */
wire_sync_write(MASTER_FD, take(towire_custommsg_in(NULL, msg)));
return true;
} else {
return false;
}
#else
return false;
#endif
}
static void peer_in(struct peer *peer, const u8 *msg)
{
enum wire_type type = fromwire_peektype(msg);
@ -1830,6 +1851,9 @@ static void peer_in(struct peer *peer, const u8 *msg)
return;
}
if (channeld_handle_custommsg(msg))
return;
/* Since LND seems to send errors which aren't actually fatal events,
* we treat errors here as soft. */
if (handle_peer_gossip_or_error(peer->pps, &peer->channel_id, true, msg))
@ -2330,9 +2354,10 @@ static void peer_reconnect(struct peer *peer,
do {
clean_tmpctx();
msg = sync_crypto_read(tmpctx, peer->pps);
} while (handle_peer_gossip_or_error(peer->pps, &peer->channel_id, true,
msg)
|| capture_premature_msg(&premature_msgs, msg));
} while (channeld_handle_custommsg(msg) ||
handle_peer_gossip_or_error(peer->pps, &peer->channel_id, true,
msg) ||
capture_premature_msg(&premature_msgs, msg));
if (peer->channel->option_static_remotekey) {
struct pubkey ignore;

Loading…
Cancel
Save