Skip to content

Commit dc4e657

Browse files
committed
do not write ldk_data_dir to allow dir change
1 parent 71001d2 commit dc4e657

File tree

7 files changed

+20
-48
lines changed

7 files changed

+20
-48
lines changed

lightning-persister/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ impl FilesystemPersister {
6666
ES::Target: EntropySource + Sized,
6767
SP::Target: SignerProvider + Sized
6868
{
69+
let ldk_data_dir = PathBuf::from(&self.path_to_channel_data);
6970
let mut path = PathBuf::from(&self.path_to_channel_data);
7071
path.push("monitors");
7172
if !Path::new(&path).exists() {
@@ -105,7 +106,7 @@ impl FilesystemPersister {
105106

106107
let contents = fs::read(&file.path())?;
107108
let mut buffer = Cursor::new(&contents);
108-
match <(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::Signer>)>::read(&mut buffer, (&*entropy_source, &*signer_provider)) {
109+
match <(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::Signer>)>::read(&mut buffer, (&*entropy_source, &*signer_provider, ldk_data_dir.clone())) {
109110
Ok((blockhash, channel_monitor)) => {
110111
if channel_monitor.get_funding_txo().0.txid != txid || channel_monitor.get_funding_txo().0.index != index {
111112
return Err(std::io::Error::new(std::io::ErrorKind::InvalidData,

lightning/src/chain/channelmonitor.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3774,9 +3774,9 @@ where
37743774

37753775
const MAX_ALLOC_SIZE: usize = 64*1024;
37763776

3777-
impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP)>
3777+
impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP, PathBuf)>
37783778
for (BlockHash, ChannelMonitor<SP::Signer>) {
3779-
fn read<R: io::Read>(reader: &mut R, args: (&'a ES, &'b SP)) -> Result<Self, DecodeError> {
3779+
fn read<R: io::Read>(reader: &mut R, args: (&'a ES, &'b SP, PathBuf)) -> Result<Self, DecodeError> {
37803780
macro_rules! unwrap_obj {
37813781
($key: expr) => {
37823782
match $key {
@@ -3786,7 +3786,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
37863786
}
37873787
}
37883788

3789-
let (entropy_source, signer_provider) = args;
3789+
let (entropy_source, signer_provider, ldk_data_dir) = args;
37903790

37913791
let _ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);
37923792

@@ -3963,7 +3963,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
39633963
}
39643964
}
39653965
let onchain_tx_handler: OnchainTxHandler<SP::Signer> = ReadableArgs::read(
3966-
reader, (entropy_source, signer_provider, channel_value_satoshis, channel_keys_id)
3966+
reader, (entropy_source, signer_provider, channel_value_satoshis, channel_keys_id, ldk_data_dir)
39673967
)?;
39683968

39693969
let lockdown_from_offchain = Readable::read(reader)?;

lightning/src/chain/keysinterface.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -962,18 +962,20 @@ impl Writeable for InMemorySigner {
962962
self.channel_parameters.write(writer)?;
963963
self.channel_value_satoshis.write(writer)?;
964964
self.channel_keys_id.write(writer)?;
965-
self.ldk_data_dir.write(writer)?;
966965

967966
write_tlv_fields!(writer, {});
968967

969968
Ok(())
970969
}
971970
}
972971

973-
impl<ES: Deref> ReadableArgs<ES> for InMemorySigner where ES::Target: EntropySource {
974-
fn read<R: io::Read>(reader: &mut R, entropy_source: ES) -> Result<Self, DecodeError> {
972+
impl<ES: Deref> ReadableArgs<(ES, PathBuf)> for InMemorySigner where ES::Target: EntropySource {
973+
fn read<R: io::Read>(reader: &mut R, args: (ES, PathBuf)) -> Result<Self, DecodeError> {
975974
let _ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);
976975

976+
let entropy_source = args.0;
977+
let ldk_data_dir = args.1;
978+
977979
let funding_key = Readable::read(reader)?;
978980
let revocation_base_key = Readable::read(reader)?;
979981
let payment_key = Readable::read(reader)?;
@@ -987,7 +989,6 @@ impl<ES: Deref> ReadableArgs<ES> for InMemorySigner where ES::Target: EntropySou
987989
InMemorySigner::make_holder_keys(&secp_ctx, &funding_key, &revocation_base_key,
988990
&payment_key, &delayed_payment_base_key, &htlc_base_key);
989991
let keys_id = Readable::read(reader)?;
990-
let ldk_data_dir = Readable::read(reader)?;
991992

992993
read_tlv_fields!(reader, {});
993994

@@ -1384,7 +1385,7 @@ impl SignerProvider for KeysManager {
13841385
}
13851386

13861387
fn read_chan_signer(&self, reader: &[u8]) -> Result<Self::Signer, DecodeError> {
1387-
InMemorySigner::read(&mut io::Cursor::new(reader), self)
1388+
InMemorySigner::read(&mut io::Cursor::new(reader), (self, self.ldk_data_dir.clone()))
13881389
}
13891390

13901391
fn get_destination_script(&self) -> Script {

lightning/src/chain/onchaintx.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,6 @@ impl<ChannelSigner: WriteableEcdsaChannelSigner> OnchainTxHandler<ChannelSigner>
317317

318318
self.channel_transaction_parameters.write(writer)?;
319319

320-
self.ldk_data_dir.write(writer)?;
321-
322320
let mut key_data = VecWriter(Vec::new());
323321
self.signer.write(&mut key_data)?;
324322
assert!(key_data.0.len() < core::usize::MAX);
@@ -358,12 +356,13 @@ impl<ChannelSigner: WriteableEcdsaChannelSigner> OnchainTxHandler<ChannelSigner>
358356
}
359357
}
360358

361-
impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP, u64, [u8; 32])> for OnchainTxHandler<SP::Signer> {
362-
fn read<R: io::Read>(reader: &mut R, args: (&'a ES, &'b SP, u64, [u8; 32])) -> Result<Self, DecodeError> {
359+
impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP, u64, [u8; 32], PathBuf)> for OnchainTxHandler<SP::Signer> {
360+
fn read<R: io::Read>(reader: &mut R, args: (&'a ES, &'b SP, u64, [u8; 32], PathBuf)) -> Result<Self, DecodeError> {
363361
let entropy_source = args.0;
364362
let signer_provider = args.1;
365363
let channel_value_satoshis = args.2;
366364
let channel_keys_id = args.3;
365+
let ldk_data_dir = args.4;
367366

368367
let _ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);
369368

@@ -376,8 +375,6 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
376375

377376
let channel_parameters = Readable::read(reader)?;
378377

379-
let ldk_data_dir = Readable::read(reader)?;
380-
381378
// Read the serialized signer bytes, but don't deserialize them, as we'll obtain our signer
382379
// by re-deriving the private key material.
383380
let keys_len: u32 = Readable::read(reader)?;

lightning/src/ln/channel.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6588,21 +6588,20 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for Channel<Signer> {
65886588
(29, self.temporary_channel_id, option),
65896589
(31, channel_pending_event_emitted, option),
65906590
(33, self.consignment_endpoint, required),
6591-
(35, self.ldk_data_dir, required),
65926591
});
65936592

65946593
Ok(())
65956594
}
65966595
}
65976596

65986597
const MAX_ALLOC_SIZE: usize = 64*1024;
6599-
impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c ChannelTypeFeatures)> for Channel<<SP::Target as SignerProvider>::Signer>
6598+
impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c ChannelTypeFeatures, PathBuf)> for Channel<<SP::Target as SignerProvider>::Signer>
66006599
where
66016600
ES::Target: EntropySource,
66026601
SP::Target: SignerProvider
66036602
{
6604-
fn read<R : io::Read>(reader: &mut R, args: (&'a ES, &'b SP, u32, &'c ChannelTypeFeatures)) -> Result<Self, DecodeError> {
6605-
let (entropy_source, signer_provider, serialized_height, our_supported_features) = args;
6603+
fn read<R : io::Read>(reader: &mut R, args: (&'a ES, &'b SP, u32, &'c ChannelTypeFeatures, PathBuf)) -> Result<Self, DecodeError> {
6604+
let (entropy_source, signer_provider, serialized_height, our_supported_features, ldk_data_dir) = args;
66066605
let ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);
66076606

66086607
// `user_id` used to be a single u64 value. In order to remain backwards compatible with
@@ -6868,7 +6867,6 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68686867
let mut temporary_channel_id: Option<[u8; 32]> = None;
68696868
let mut holder_max_accepted_htlcs: Option<u16> = None;
68706869
let mut consignment_endpoint: Option<RgbTransport> = None;
6871-
let mut ldk_data_dir: Option<PathBuf> = None;
68726870

68736871
read_tlv_fields!(reader, {
68746872
(0, announcement_sigs, option),
@@ -6893,7 +6891,6 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
68936891
(29, temporary_channel_id, option),
68946892
(31, channel_pending_event_emitted, option),
68956893
(33, consignment_endpoint, option),
6896-
(35, ldk_data_dir, option),
68976894
});
68986895

68996896
let (channel_keys_id, holder_signer) = if let Some(channel_keys_id) = channel_keys_id {
@@ -7067,7 +7064,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
70677064

70687065
consignment_endpoint: consignment_endpoint.unwrap(),
70697066

7070-
ldk_data_dir: ldk_data_dir.unwrap(),
7067+
ldk_data_dir,
70717068
})
70727069
}
70737070
}

lightning/src/ln/channelmanager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7559,7 +7559,7 @@ where
75597559
let mut pending_background_events = Vec::new();
75607560
for _ in 0..channel_count {
75617561
let mut channel: Channel<<SP::Target as SignerProvider>::Signer> = Channel::read(reader, (
7562-
&args.entropy_source, &args.signer_provider, best_block_height, &provided_channel_type_features(&args.default_config)
7562+
&args.entropy_source, &args.signer_provider, best_block_height, &provided_channel_type_features(&args.default_config), args.ldk_data_dir.clone(),
75637563
))?;
75647564
let funding_txo = channel.get_funding_txo().ok_or(DecodeError::InvalidValue)?;
75657565
funding_txo_set.insert(funding_txo.clone());

lightning/src/util/ser.rs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ use crate::ln::{PaymentPreimage, PaymentHash, PaymentSecret};
4444

4545
use crate::util::byte_utils::{be48_to_array, slice_to_be48};
4646

47-
use std::path::PathBuf;
48-
4947
/// serialization buffer size
5048
pub const MAX_BUF_SIZE: usize = 64 * 1024;
5149

@@ -1210,28 +1208,6 @@ impl Readable for String {
12101208
}
12111209
}
12121210

1213-
impl Writeable for PathBuf {
1214-
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
1215-
let path_str = self.to_string_lossy();
1216-
(path_str.len() as u16).write(w)?;
1217-
w.write_all(path_str.as_bytes())?;
1218-
Ok(())
1219-
}
1220-
}
1221-
1222-
impl Readable for PathBuf {
1223-
fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError> {
1224-
let sz: usize = <u16 as Readable>::read(r)? as usize;
1225-
let mut path_str_vec = Vec::with_capacity(sz);
1226-
path_str_vec.resize(sz, 0);
1227-
r.read_exact(&mut path_str_vec)?;
1228-
match String::from_utf8(path_str_vec) {
1229-
Ok(s) => return Ok(PathBuf::from(s)),
1230-
Err(_) => return Err(DecodeError::InvalidValue),
1231-
}
1232-
}
1233-
}
1234-
12351211
/// Represents a hostname for serialization purposes.
12361212
/// Only the character set and length will be validated.
12371213
/// The character set consists of ASCII alphanumeric characters, hyphens, and periods.

0 commit comments

Comments
 (0)