Skip to content

Commit 72775c3

Browse files
committed
Refactor bolt11 send methods to use default sending params
Refactored the send methods in Bolt11Payment to combine user-set SendingParameters with default values from Config. If the user sets any parameter to None, the related default value is used.
1 parent 8732628 commit 72775c3

File tree

2 files changed

+66
-14
lines changed

2 files changed

+66
-14
lines changed

src/payment/bolt11.rs

+64-14
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,38 @@ impl Bolt11Payment {
9595
}
9696
}
9797

98-
if let Some(params) = sending_parameters {
99-
params
100-
.max_total_routing_fee_msat
101-
.map(|fee| route_params.max_total_routing_fee_msat = Some(fee));
102-
params
103-
.max_total_cltv_expiry_delta
104-
.map(|delta| route_params.payment_params.max_total_cltv_expiry_delta = delta);
98+
if let Some(user_set_params) = sending_parameters {
99+
if let Some(mut default_params) =
100+
self.config.sending_parameters_config.as_ref().cloned()
101+
{
102+
default_params.max_total_routing_fee_msat = user_set_params
103+
.max_total_routing_fee_msat
104+
.or(default_params.max_total_routing_fee_msat);
105+
default_params.max_total_cltv_expiry_delta = user_set_params
106+
.max_total_cltv_expiry_delta
107+
.or(default_params.max_total_cltv_expiry_delta);
108+
default_params.max_path_count =
109+
user_set_params.max_path_count.or(default_params.max_path_count);
110+
default_params.max_channel_saturation_power_of_half = user_set_params
111+
.max_channel_saturation_power_of_half
112+
.or(default_params.max_channel_saturation_power_of_half);
113+
114+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
115+
route_params.payment_params.max_total_cltv_expiry_delta =
116+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
117+
route_params.payment_params.max_path_count =
118+
default_params.max_path_count.unwrap_or_default();
119+
route_params.payment_params.max_channel_saturation_power_of_half =
120+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
121+
}
122+
} else if let Some(default_params) = &self.config.sending_parameters_config {
123+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
124+
route_params.payment_params.max_total_cltv_expiry_delta =
125+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
126+
route_params.payment_params.max_path_count =
127+
default_params.max_path_count.unwrap_or_default();
128+
route_params.payment_params.max_channel_saturation_power_of_half =
129+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
105130
}
106131

107132
let payment_secret = Some(*invoice.payment_secret());
@@ -216,13 +241,38 @@ impl Bolt11Payment {
216241
let mut route_params =
217242
RouteParameters::from_payment_params_and_value(payment_params, amount_msat);
218243

219-
if let Some(params) = sending_parameters {
220-
params
221-
.max_total_routing_fee_msat
222-
.map(|fee| route_params.max_total_routing_fee_msat = Some(fee));
223-
params
224-
.max_total_cltv_expiry_delta
225-
.map(|delta| route_params.payment_params.max_total_cltv_expiry_delta = delta);
244+
if let Some(user_set_params) = sending_parameters {
245+
if let Some(mut default_params) =
246+
self.config.sending_parameters_config.as_ref().cloned()
247+
{
248+
default_params.max_total_routing_fee_msat = user_set_params
249+
.max_total_routing_fee_msat
250+
.or(default_params.max_total_routing_fee_msat);
251+
default_params.max_total_cltv_expiry_delta = user_set_params
252+
.max_total_cltv_expiry_delta
253+
.or(default_params.max_total_cltv_expiry_delta);
254+
default_params.max_path_count =
255+
user_set_params.max_path_count.or(default_params.max_path_count);
256+
default_params.max_channel_saturation_power_of_half = user_set_params
257+
.max_channel_saturation_power_of_half
258+
.or(default_params.max_channel_saturation_power_of_half);
259+
260+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
261+
route_params.payment_params.max_total_cltv_expiry_delta =
262+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
263+
route_params.payment_params.max_path_count =
264+
default_params.max_path_count.unwrap_or_default();
265+
route_params.payment_params.max_channel_saturation_power_of_half =
266+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
267+
}
268+
} else if let Some(default_params) = &self.config.sending_parameters_config {
269+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
270+
route_params.payment_params.max_total_cltv_expiry_delta =
271+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
272+
route_params.payment_params.max_path_count =
273+
default_params.max_path_count.unwrap_or_default();
274+
route_params.payment_params.max_channel_saturation_power_of_half =
275+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
226276
}
227277

228278
let retry_strategy = Retry::Timeout(LDK_PAYMENT_RETRY_TIMEOUT);

tests/integration_tests_rust.rs

+2
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ fn multi_hop_sending() {
159159
let sending_params = SendingParameters {
160160
max_total_routing_fee_msat: Some(75_000),
161161
max_total_cltv_expiry_delta: Some(1000),
162+
max_path_count: Some(10),
163+
max_channel_saturation_power_of_half: Some(2),
162164
};
163165

164166
let invoice = nodes[4].bolt11_payment().receive(2_500_000, &"asdf", 9217).unwrap();

0 commit comments

Comments
 (0)