Skip to content

Commit b24ee4c

Browse files
committed
Revert & honor request_full_sync.
1 parent 6892a87 commit b24ee4c

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

lightning/src/ln/peer_handler.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,6 +1867,8 @@ mod tests {
18671867
fn test_do_attempt_write_data() {
18681868
// Create 2 peers with custom TestRoutingMessageHandlers and connect them.
18691869
let cfgs = create_peermgr_cfgs(2);
1870+
cfgs[0].routing_handler.request_full_sync.store(true, Ordering::Release);
1871+
cfgs[1].routing_handler.request_full_sync.store(true, Ordering::Release);
18701872
let peers = create_network(2, &cfgs);
18711873

18721874
// By calling establish_connect, we trigger do_attempt_write_data between
@@ -1908,6 +1910,8 @@ mod tests {
19081910
// Tests that we time out a peer still waiting on handshake completion after a full timer
19091911
// tick.
19101912
let cfgs = create_peermgr_cfgs(2);
1913+
cfgs[0].routing_handler.request_full_sync.store(true, Ordering::Release);
1914+
cfgs[1].routing_handler.request_full_sync.store(true, Ordering::Release);
19111915
let peers = create_network(2, &cfgs);
19121916

19131917
let secp_ctx = Secp256k1::new();

lightning/src/util/test_utils.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,14 @@ use io;
4444
use prelude::*;
4545
use core::time::Duration;
4646
use sync::{Mutex, Arc};
47-
use core::sync::atomic::{AtomicUsize, Ordering};
47+
use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
4848
use core::{cmp, mem};
4949
use bitcoin::bech32::u5;
5050
use chain::keysinterface::{InMemorySigner, Recipient, KeyMaterial};
5151

52+
#[cfg(feature = "std")]
53+
use std::time::{SystemTime, UNIX_EPOCH};
54+
5255
pub struct TestVecWriter(pub Vec<u8>);
5356
impl Writer for TestVecWriter {
5457
fn write_all(&mut self, buf: &[u8]) -> Result<(), io::Error> {
@@ -342,6 +345,7 @@ pub struct TestRoutingMessageHandler {
342345
pub chan_upds_recvd: AtomicUsize,
343346
pub chan_anns_recvd: AtomicUsize,
344347
pending_events: Mutex<Vec<events::MessageSendEvent>>,
348+
pub request_full_sync: AtomicBool,
345349
}
346350

347351
impl TestRoutingMessageHandler {
@@ -350,6 +354,7 @@ impl TestRoutingMessageHandler {
350354
chan_upds_recvd: AtomicUsize::new(0),
351355
chan_anns_recvd: AtomicUsize::new(0),
352356
pending_events: Mutex::new(vec![]),
357+
request_full_sync: AtomicBool::new(false),
353358
}
354359
}
355360
}
@@ -384,13 +389,31 @@ impl msgs::RoutingMessageHandler for TestRoutingMessageHandler {
384389
Vec::new()
385390
}
386391

387-
fn peer_connected(&self, their_node_id: &PublicKey, _init_msg: &msgs::Init) {
392+
fn peer_connected(&self, their_node_id: &PublicKey, init_msg: &msgs::Init) {
393+
if !init_msg.features.supports_gossip_queries() {
394+
return ();
395+
}
396+
397+
let should_request_full_sync = self.request_full_sync.load(Ordering::Acquire);
398+
399+
#[allow(unused_mut, unused_assignments)]
400+
let mut gossip_start_time = 0;
401+
#[cfg(feature = "std")]
402+
{
403+
gossip_start_time = SystemTime::now().duration_since(UNIX_EPOCH).expect("Time must be > 1970").as_secs();
404+
if should_request_full_sync {
405+
gossip_start_time -= 60 * 60 * 24 * 7 * 2; // 2 weeks ago
406+
} else {
407+
gossip_start_time -= 60 * 60; // an hour ago
408+
}
409+
}
410+
388411
let mut pending_events = self.pending_events.lock().unwrap();
389412
pending_events.push(events::MessageSendEvent::SendGossipTimestampFilter {
390413
node_id: their_node_id.clone(),
391414
msg: msgs::GossipTimestampFilter {
392415
chain_hash: genesis_block(Network::Testnet).header.block_hash(),
393-
first_timestamp: 0,
416+
first_timestamp: gossip_start_time as u32,
394417
timestamp_range: u32::max_value(),
395418
},
396419
});

0 commit comments

Comments
 (0)