]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Add an Event for sending revoke_and_ack messages out-of-band
authorMatt Corallo <git@bluematt.me>
Wed, 17 Oct 2018 15:35:26 +0000 (11:35 -0400)
committerMatt Corallo <git@bluematt.me>
Tue, 23 Oct 2018 20:03:30 +0000 (16:03 -0400)
src/ln/peer_handler.rs
src/util/events.rs

index b629e7fa6b01c011350a036f96a10f3227cacf7f..94cdef9e41fe76f7fa568edba784961edaeb8825 100644 (file)
@@ -866,6 +866,17 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
                                                Self::do_attempt_write_data(&mut descriptor, peer);
                                                continue;
                                        },
+                                       Event::SendRevokeAndACK { ref node_id, ref msg } => {
+                                               log_trace!(self, "Handling SendRevokeAndACK event in peer_handler for node {} for channel {}",
+                                                               log_pubkey!(node_id),
+                                                               log_bytes!(msg.channel_id));
+                                               let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
+                                                               //TODO: Do whatever we're gonna do for handling dropped messages
+                                                       });
+                                               peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!(msg, 133)));
+                                               Self::do_attempt_write_data(&mut descriptor, peer);
+                                               continue;
+                                       },
                                        Event::SendShutdown { ref node_id, ref msg } => {
                                                log_trace!(self, "Handling Shutdown event in peer_handler for node {} for channel {}",
                                                                log_pubkey!(node_id),
index 51417c63c75ef0fd7f5e4694d9d35fca7a9d3cfe..e11e4e82c1ccbf2b735c804ab288c4ea215bc13e 100644 (file)
@@ -129,6 +129,15 @@ pub enum Event {
                /// The update messages which should be sent. ALL messages in the struct should be sent!
                updates: msgs::CommitmentUpdate,
        },
+       /// Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
+       ///
+       /// This event is handled by PeerManager::process_events if you are using a PeerManager.
+       SendRevokeAndACK {
+               /// The node_id of the node which should receive this message
+               node_id: PublicKey,
+               /// The message which should be sent.
+               msg: msgs::RevokeAndACK,
+       },
        /// Used to indicate that a shutdown message should be sent to the peer with the given node_id.
        ///
        /// This event is handled by PeerManager::process_events if you are using a PeerManager.