Skip to content

Commit 03c6f84

Browse files
authored
Merge pull request #116 from TheBlueMatt/2018-08-peer_handler-trace
Add some trace logging in peer_handler
2 parents 5066864 + 4291cb9 commit 03c6f84

File tree

7 files changed

+104
-21
lines changed

7 files changed

+104
-21
lines changed

fuzz/fuzz_targets/channel_target.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ pub fn do_test(data: &[u8]) {
107107
input: &input,
108108
};
109109

110-
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger::new());
110+
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger{});
111111

112112
macro_rules! get_slice {
113113
($len: expr) => {

fuzz/fuzz_targets/full_stack_target.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ pub fn do_test(data: &[u8]) {
174174
Err(_) => return,
175175
};
176176

177-
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger::new());
177+
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger{});
178178
let monitor = Arc::new(TestChannelMonitor{});
179179
let watch = Arc::new(ChainWatchInterfaceUtil::new(Arc::clone(&logger)));
180180
let broadcast = Arc::new(TestBroadcaster{});

fuzz/fuzz_targets/router_target.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ pub fn do_test(data: &[u8]) {
105105
}
106106
}
107107

108-
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger::new());
108+
let logger: Arc<Logger> = Arc::new(test_logger::TestLogger{});
109109

110110
let our_pubkey = get_pubkey!();
111111
let router = Router::new(our_pubkey.clone(), Arc::clone(&logger));

fuzz/fuzz_targets/utils/test_logger.rs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
1-
use lightning::util::logger::{Logger, Level, Record};
1+
use lightning::util::logger::{Logger, Record};
22

3-
pub struct TestLogger {
4-
level: Level,
5-
}
6-
7-
impl TestLogger {
8-
pub fn new() -> TestLogger {
9-
TestLogger {
10-
level: Level::Off,
11-
}
12-
}
13-
pub fn enable(&mut self, level: Level) {
14-
self.level = level;
15-
}
16-
}
3+
pub struct TestLogger {}
174

185
impl Logger for TestLogger {
196
fn log(&self, record: &Record) {

src/ln/peer_handler.rs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
289289

290290
macro_rules! encode_and_send_msg {
291291
($msg: expr, $msg_code: expr) => {
292-
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!($msg, $msg_code)[..]));
292+
{
293+
log_trace!(self, "Encoding and sending message of type {} to {}", $msg_code, log_pubkey!(peer.their_node_id.unwrap()));
294+
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!($msg, $msg_code)[..]));
295+
}
293296
}
294297
}
295298

@@ -396,6 +399,7 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
396399
peer.pending_read_is_header = true;
397400

398401
let msg_type = byte_utils::slice_to_be16(&msg_data[0..2]);
402+
log_trace!(self, "Received message of type {} from {}", msg_type, log_pubkey!(peer.their_node_id.unwrap()));
399403
if msg_type != 16 && peer.their_global_features.is_none() {
400404
// Need an init message as first message
401405
return Err(PeerHandleError{ no_connection_possible: false });
@@ -632,6 +636,9 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
632636
Event::PendingHTLCsForwardable {..} => { /* Hand upstream */ },
633637

634638
Event::SendOpenChannel { ref node_id, ref msg } => {
639+
log_trace!(self, "Handling SendOpenChannel event in peer_handler for node {} for channel {}",
640+
log_pubkey!(node_id),
641+
log_bytes!(msg.temporary_channel_id));
635642
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
636643
//TODO: Drop the pending channel? (or just let it timeout, but that sucks)
637644
});
@@ -640,6 +647,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
640647
continue;
641648
},
642649
Event::SendFundingCreated { ref node_id, ref msg } => {
650+
log_trace!(self, "Handling SendFundingCreated event in peer_handler for node {} for channel {} (which becomes {})",
651+
log_pubkey!(node_id),
652+
log_bytes!(msg.temporary_channel_id),
653+
log_funding_channel_id!(msg.funding_txid, msg.funding_output_index));
643654
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
644655
//TODO: generate a DiscardFunding event indicating to the wallet that
645656
//they should just throw away this funding transaction
@@ -649,6 +660,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
649660
continue;
650661
},
651662
Event::SendFundingLocked { ref node_id, ref msg, ref announcement_sigs } => {
663+
log_trace!(self, "Handling SendFundingLocked event in peer_handler for node {}{} for channel {}",
664+
log_pubkey!(node_id),
665+
if announcement_sigs.is_some() { " with announcement sigs" } else { "" },
666+
log_bytes!(msg.channel_id));
652667
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
653668
//TODO: Do whatever we're gonna do for handling dropped messages
654669
});
@@ -661,6 +676,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
661676
continue;
662677
},
663678
Event::SendHTLCs { ref node_id, ref msgs, ref commitment_msg } => {
679+
log_trace!(self, "Handling SendHTLCs event in peer_handler for node {} with {} HTLCs for channel {}",
680+
log_pubkey!(node_id),
681+
msgs.len(),
682+
log_bytes!(commitment_msg.channel_id));
664683
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
665684
//TODO: Do whatever we're gonna do for handling dropped messages
666685
});
@@ -672,6 +691,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
672691
continue;
673692
},
674693
Event::SendFulfillHTLC { ref node_id, ref msg, ref commitment_msg } => {
694+
log_trace!(self, "Handling SendFulfillHTLCs event in peer_handler for node {} with payment_preimage {} for channel {}",
695+
log_pubkey!(node_id),
696+
log_bytes!(msg.payment_preimage),
697+
log_bytes!(msg.channel_id));
675698
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
676699
//TODO: Do whatever we're gonna do for handling dropped messages
677700
});
@@ -681,6 +704,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
681704
continue;
682705
},
683706
Event::SendFailHTLC { ref node_id, ref msg, ref commitment_msg } => {
707+
log_trace!(self, "Handling SendFailHTLCs event in peer_handler for node {} for HTLC ID {} for channel {}",
708+
log_pubkey!(node_id),
709+
msg.htlc_id,
710+
log_bytes!(msg.channel_id));
684711
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
685712
//TODO: Do whatever we're gonna do for handling dropped messages
686713
});
@@ -690,6 +717,9 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
690717
continue;
691718
},
692719
Event::SendShutdown { ref node_id, ref msg } => {
720+
log_trace!(self, "Handling Shutdown event in peer_handler for node {} for channel {}",
721+
log_pubkey!(node_id),
722+
log_bytes!(msg.channel_id));
693723
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
694724
//TODO: Do whatever we're gonna do for handling dropped messages
695725
});
@@ -698,6 +728,7 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
698728
continue;
699729
},
700730
Event::BroadcastChannelAnnouncement { ref msg, ref update_msg } => {
731+
log_trace!(self, "Handling BroadcastChannelAnnouncement event in peer_handler for short channel id {}", msg.contents.short_channel_id);
701732
if self.message_handler.route_handler.handle_channel_announcement(msg).is_ok() && self.message_handler.route_handler.handle_channel_update(update_msg).is_ok() {
702733
let encoded_msg = encode_msg!(msg, 256);
703734
let encoded_update_msg = encode_msg!(update_msg, 258);
@@ -722,6 +753,7 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
722753
continue;
723754
},
724755
Event::BroadcastChannelUpdate { ref msg } => {
756+
log_trace!(self, "Handling BroadcastChannelUpdate event in peer_handler for short channel id {}", msg.contents.short_channel_id);
725757
if self.message_handler.route_handler.handle_channel_update(msg).is_ok() {
726758
let encoded_msg = encode_msg!(msg, 258);
727759

@@ -739,6 +771,10 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
739771
if let Some(ref action) = *action {
740772
match *action {
741773
msgs::ErrorAction::UpdateFailHTLC { ref msg } => {
774+
log_trace!(self, "Handling UpdateFailHTLC HandleError event in peer_handler for node {} for HTLC ID {} for channel {}",
775+
log_pubkey!(node_id),
776+
msg.htlc_id,
777+
log_bytes!(msg.channel_id));
742778
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
743779
//TODO: Do whatever we're gonna do for handling dropped messages
744780
});
@@ -750,10 +786,15 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
750786
if let Some(mut descriptor) = peers.node_id_to_descriptor.remove(node_id) {
751787
if let Some(mut peer) = peers.peers.remove(&descriptor) {
752788
if let Some(ref msg) = *msg {
789+
log_trace!(self, "Handling DisconnectPeer HandleError event in peer_handler for node {} with message {}",
790+
log_pubkey!(node_id),
791+
msg.data);
753792
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!(msg, 17)));
754793
// This isn't guaranteed to work, but if there is enough free
755794
// room in the send buffer, put the error message there...
756795
Self::do_attempt_write_data(&mut descriptor, &mut peer);
796+
} else {
797+
log_trace!(self, "Handling DisconnectPeer HandleError event in peer_handler for node {} with no message", log_pubkey!(node_id));
757798
}
758799
}
759800
descriptor.disconnect_socket();
@@ -764,13 +805,18 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
764805
continue;
765806
},
766807
msgs::ErrorAction::SendErrorMessage { ref msg } => {
808+
log_trace!(self, "Handling SendErrorMessage HandleError event in peer_handler for node {} with message {}",
809+
log_pubkey!(node_id),
810+
msg.data);
767811
let (mut descriptor, peer) = get_peer_for_forwarding!(node_id, {
768812
//TODO: Do whatever we're gonna do for handling dropped messages
769813
});
770814
peer.pending_outbound_buffer.push_back(peer.channel_encryptor.encrypt_message(&encode_msg!(msg, 17)));
771815
Self::do_attempt_write_data(&mut descriptor, peer);
772816
},
773817
}
818+
} else {
819+
log_error!(self, "Got no-action HandleError Event in peer_handler for node {}, no such events should ever be generated!", log_pubkey!(node_id));
774820
}
775821
continue;
776822
}

src/util/macro_logger.rs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,54 @@
1-
use util::logger::Record;
1+
use chain::transaction::OutPoint;
2+
3+
use bitcoin::util::hash::Sha256dHash;
4+
use secp256k1::key::PublicKey;
5+
6+
use std;
7+
8+
pub(crate) struct DebugPubKey<'a>(pub &'a PublicKey);
9+
impl<'a> std::fmt::Display for DebugPubKey<'a> {
10+
fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
11+
for i in self.0.serialize().iter() {
12+
write!(f, "{:02x}", i)?;
13+
}
14+
Ok(())
15+
}
16+
}
17+
macro_rules! log_pubkey {
18+
($obj: expr) => {
19+
::util::macro_logger::DebugPubKey(&$obj)
20+
}
21+
}
22+
23+
pub(crate) struct DebugBytes<'a>(pub &'a [u8; 32]);
24+
impl<'a> std::fmt::Display for DebugBytes<'a> {
25+
fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
26+
for i in self.0 {
27+
write!(f, "{:02x}", i)?;
28+
}
29+
Ok(())
30+
}
31+
}
32+
macro_rules! log_bytes {
33+
($obj: expr) => {
34+
::util::macro_logger::DebugBytes(&$obj)
35+
}
36+
}
37+
38+
pub(crate) struct DebugFundingChannelId<'a>(pub &'a Sha256dHash, pub u16);
39+
impl<'a> std::fmt::Display for DebugFundingChannelId<'a> {
40+
fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
41+
for i in OutPoint::new(self.0.clone(), self.1).to_channel_id().iter() {
42+
write!(f, "{:02x}", i)?;
43+
}
44+
Ok(())
45+
}
46+
}
47+
macro_rules! log_funding_channel_id {
48+
($funding_txid: expr, $funding_txo: expr) => {
49+
::util::macro_logger::DebugFundingChannelId(&$funding_txid, $funding_txo)
50+
}
51+
}
252

353
macro_rules! log_internal {
454
($self: ident, $lvl:expr, $($arg:tt)+) => (

src/util/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ pub struct TestLogger {
154154
impl TestLogger {
155155
pub fn new() -> TestLogger {
156156
TestLogger {
157-
level: Level::Off,
157+
level: Level::Trace,
158158
}
159159
}
160160
pub fn enable(&mut self, level: Level) {

0 commit comments

Comments
 (0)