mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-02 18:35:00 +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,
|
take(towire_channel_dev_memleak_reply(NULL,
|
||||||
found_leak)));
|
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 */
|
#endif /* DEVELOPER */
|
||||||
|
|
||||||
static void req_in(struct peer *peer, const u8 *msg)
|
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) {
|
switch ((enum common_wire_type)t) {
|
||||||
#if DEVELOPER
|
#if DEVELOPER
|
||||||
case WIRE_CUSTOMMSG_OUT:
|
case WIRE_CUSTOMMSG_OUT:
|
||||||
/* TODO(cdecker) Add handling of custom messages. */
|
channeld_send_custommsg(peer, msg);
|
||||||
return;
|
return;
|
||||||
#else
|
#else
|
||||||
case WIRE_CUSTOMMSG_OUT:
|
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.'):
|
with pytest.raises(RpcError, match=r'Cannot send messages of type 18 .WIRE_PING.'):
|
||||||
l2.rpc.dev_sendcustommsg(l2.info['id'], r'0012')
|
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.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.rpc.dev_sendcustommsg(l4.info['id'], msg)
|
||||||
l2.daemon.wait_for_log(
|
l2.daemon.wait_for_log(
|
||||||
r'{peer_id}-openingd-chan#[0-9]: \[OUT\] {serialized}'.format(
|
r'{peer_id}-{owner}-chan#[0-9]: \[OUT\] {serialized}'.format(
|
||||||
serialized=serialized, peer_id=l4.info['id']
|
owner='openingd', serialized=serialized, peer_id=l4.info['id']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
l4.daemon.wait_for_log(r'\[IN\] {}'.format(serialized))
|
l4.daemon.wait_for_log(r'\[IN\] {}'.format(serialized))
|
||||||
|
|
Loading…
Add table
Reference in a new issue