mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-01 17:47:30 +01:00
channeld: Send messages if instructed to by lightningd
This commit is contained in:
parent
3c88d5c8c4
commit
e9fc9aef34
2 changed files with 23 additions and 3 deletions
|
@ -2852,6 +2852,14 @@ static void handle_dev_memleak(struct peer *peer, const u8 *msg)
|
|||
take(towire_channel_dev_memleak_reply(NULL,
|
||||
found_leak)));
|
||||
}
|
||||
|
||||
/* We were told to send a custommsg to the peer by `lightningd`. All the
|
||||
* verification is done on the side of `lightningd` so we should be good to
|
||||
* just forward it here. */
|
||||
static void channeld_send_custommsg(struct peer *peer, const u8 *msg)
|
||||
{
|
||||
sync_crypto_write(peer->pps, take(msg));
|
||||
}
|
||||
#endif /* DEVELOPER */
|
||||
|
||||
static void req_in(struct peer *peer, const u8 *msg)
|
||||
|
@ -2917,7 +2925,7 @@ static void req_in(struct peer *peer, const u8 *msg)
|
|||
switch ((enum common_wire_type)t) {
|
||||
#if DEVELOPER
|
||||
case WIRE_CUSTOMMSG_OUT:
|
||||
/* TODO(cdecker) Add handling of custom messages. */
|
||||
channeld_send_custommsg(peer, msg);
|
||||
return;
|
||||
#else
|
||||
case WIRE_CUSTOMMSG_OUT:
|
||||
|
|
|
@ -2096,11 +2096,23 @@ def test_sendcustommsg(node_factory):
|
|||
with pytest.raises(RpcError, match=r'Cannot send messages of type 18 .WIRE_PING.'):
|
||||
l2.rpc.dev_sendcustommsg(l2.info['id'], r'0012')
|
||||
|
||||
# This should work since the peer is currently owned by `channeld`
|
||||
l2.rpc.dev_sendcustommsg(l1.info['id'], msg)
|
||||
l2.daemon.wait_for_log(
|
||||
r'{peer_id}-{owner}-chan#[0-9]: \[OUT\] {serialized}'.format(
|
||||
owner='channeld', serialized=serialized, peer_id=l1.info['id']
|
||||
)
|
||||
)
|
||||
l1.daemon.wait_for_log(r'\[IN\] {}'.format(serialized))
|
||||
l1.daemon.wait_for_log(
|
||||
r'Got a custom message {serialized} from peer {peer_id}'.format(
|
||||
serialized=serialized, peer_id=l2.info['id']))
|
||||
|
||||
# This should work since the peer is currently owned by `openingd`
|
||||
l2.rpc.dev_sendcustommsg(l4.info['id'], msg)
|
||||
l2.daemon.wait_for_log(
|
||||
r'{peer_id}-openingd-chan#[0-9]: \[OUT\] {serialized}'.format(
|
||||
serialized=serialized, peer_id=l4.info['id']
|
||||
r'{peer_id}-{owner}-chan#[0-9]: \[OUT\] {serialized}'.format(
|
||||
owner='openingd', serialized=serialized, peer_id=l4.info['id']
|
||||
)
|
||||
)
|
||||
l4.daemon.wait_for_log(r'\[IN\] {}'.format(serialized))
|
||||
|
|
Loading…
Add table
Reference in a new issue