Skip to content

Commit 9242342

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 de80ed1 commit 9242342

File tree

2 files changed

+66
-14
lines changed

2 files changed

+66
-14
lines changed

src/payment/bolt11.rs

Lines changed: 64 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,38 @@ impl Bolt11Payment {
9393
}
9494
}
9595

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

105130
let payment_secret = Some(*invoice.payment_secret());
@@ -212,13 +237,38 @@ impl Bolt11Payment {
212237
let mut route_params =
213238
RouteParameters::from_payment_params_and_value(payment_params, amount_msat);
214239

215-
if let Some(payment_params) = sending_parameters {
216-
payment_params
217-
.max_total_routing_fee_msat
218-
.map(|fee| route_params.max_total_routing_fee_msat = Some(fee));
219-
payment_params
220-
.max_total_cltv_expiry_delta
221-
.map(|delta| route_params.payment_params.max_total_cltv_expiry_delta = delta);
240+
if let Some(user_set_params) = sending_parameters {
241+
if let Some(mut default_params) =
242+
self.config.sending_parameters_config.as_ref().cloned()
243+
{
244+
default_params.max_total_routing_fee_msat = user_set_params
245+
.max_total_routing_fee_msat
246+
.or(default_params.max_total_routing_fee_msat);
247+
default_params.max_total_cltv_expiry_delta = user_set_params
248+
.max_total_cltv_expiry_delta
249+
.or(default_params.max_total_cltv_expiry_delta);
250+
default_params.max_path_count =
251+
user_set_params.max_path_count.or(default_params.max_path_count);
252+
default_params.max_channel_saturation_power_of_half = user_set_params
253+
.max_channel_saturation_power_of_half
254+
.or(default_params.max_channel_saturation_power_of_half);
255+
256+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
257+
route_params.payment_params.max_total_cltv_expiry_delta =
258+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
259+
route_params.payment_params.max_path_count =
260+
default_params.max_path_count.unwrap_or_default();
261+
route_params.payment_params.max_channel_saturation_power_of_half =
262+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
263+
}
264+
} else if let Some(default_params) = &self.config.sending_parameters_config {
265+
route_params.max_total_routing_fee_msat = default_params.max_total_routing_fee_msat;
266+
route_params.payment_params.max_total_cltv_expiry_delta =
267+
default_params.max_total_cltv_expiry_delta.unwrap_or_default();
268+
route_params.payment_params.max_path_count =
269+
default_params.max_path_count.unwrap_or_default();
270+
route_params.payment_params.max_channel_saturation_power_of_half =
271+
default_params.max_channel_saturation_power_of_half.unwrap_or_default();
222272
}
223273

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

tests/integration_tests_rust.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ fn multi_hop_sending() {
159159
let payment_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)