projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Limit TLV stream decoding to type ranges
[rust-lightning]
/
lightning
/
src
/
util
/
events.rs
diff --git
a/lightning/src/util/events.rs
b/lightning/src/util/events.rs
index 0e04442c5f0827f51ea5d612b93a69dff7103828..a9687d28802266dfe0aa89868d1cf9aef61e845d 100644
(file)
--- a/
lightning/src/util/events.rs
+++ b/
lightning/src/util/events.rs
@@
-24,7
+24,7
@@
use crate::ln::msgs;
use crate::ln::msgs::DecodeError;
use crate::ln::{PaymentPreimage, PaymentHash, PaymentSecret};
use crate::routing::gossip::NetworkUpdate;
use crate::ln::msgs::DecodeError;
use crate::ln::{PaymentPreimage, PaymentHash, PaymentSecret};
use crate::routing::gossip::NetworkUpdate;
-use crate::util::ser::{BigSize, FixedLengthReader, Writeable, Writer, MaybeReadable, Readable,
VecReadWrapper, VecWriteWrapper
, OptionDeserWrapper};
+use crate::util::ser::{BigSize, FixedLengthReader, Writeable, Writer, MaybeReadable, Readable,
WithoutLength
, OptionDeserWrapper};
use crate::routing::router::{RouteHop, RouteParameters};
use bitcoin::{PackedLockTime, Transaction};
use crate::routing::router::{RouteHop, RouteParameters};
use bitcoin::{PackedLockTime, Transaction};
@@
-409,8
+409,8
@@
pub enum Event {
/// provide failure information for each MPP part in the payment.
///
/// This event is provided once there are no further pending HTLCs for the payment and the
/// provide failure information for each MPP part in the payment.
///
/// This event is provided once there are no further pending HTLCs for the payment and the
- /// payment is no longer retryable
, either due to a several-block timeout or because
- ///
[`ChannelManager::abandon_payment`] was previously
called for the corresponding payment.
+ /// payment is no longer retryable
due to [`ChannelManager::abandon_payment`] having been
+ /// called for the corresponding payment.
///
/// [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
PaymentFailed {
///
/// [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
PaymentFailed {
@@
-449,9
+449,14
@@
pub enum Event {
/// Indicates an outbound HTLC we sent failed. Probably some intermediary node dropped
/// something. You may wish to retry with a different route.
///
/// Indicates an outbound HTLC we sent failed. Probably some intermediary node dropped
/// something. You may wish to retry with a different route.
///
+ /// If you have given up retrying this payment and wish to fail it, you MUST call
+ /// [`ChannelManager::abandon_payment`] at least once for a given [`PaymentId`] or memory
+ /// related to payment tracking will leak.
+ ///
/// Note that this does *not* indicate that all paths for an MPP payment have failed, see
/// [`Event::PaymentFailed`] and [`all_paths_failed`].
///
/// Note that this does *not* indicate that all paths for an MPP payment have failed, see
/// [`Event::PaymentFailed`] and [`all_paths_failed`].
///
+ /// [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
/// [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
PaymentPathFailed {
/// The id returned by [`ChannelManager::send_payment`] and used with
/// [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
PaymentPathFailed {
/// The id returned by [`ChannelManager::send_payment`] and used with
@@
-780,7
+785,7
@@
impl Writeable for Event {
(1, network_update, option),
(2, payment_failed_permanently, required),
(3, all_paths_failed, required),
(1, network_update, option),
(2, payment_failed_permanently, required),
(3, all_paths_failed, required),
- (5, path, vec_type),
+ (5,
*
path, vec_type),
(7, short_channel_id, option),
(9, retry, option),
(11, payment_id, option),
(7, short_channel_id, option),
(9, retry, option),
(11, payment_id, option),
@@
-794,7
+799,7
@@
impl Writeable for Event {
&Event::SpendableOutputs { ref outputs } => {
5u8.write(writer)?;
write_tlv_fields!(writer, {
&Event::SpendableOutputs { ref outputs } => {
5u8.write(writer)?;
write_tlv_fields!(writer, {
- (0,
VecWriteWrapper
(outputs), required),
+ (0,
WithoutLength
(outputs), required),
});
},
&Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
});
},
&Event::PaymentForwarded { fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id } => {
@@
-826,7
+831,7
@@
impl Writeable for Event {
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, option),
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, option),
- (4, path, vec_type)
+ (4,
*
path, vec_type)
})
},
&Event::PaymentFailed { ref payment_id, ref payment_hash } => {
})
},
&Event::PaymentFailed { ref payment_id, ref payment_hash } => {
@@
-854,7
+859,7
@@
impl Writeable for Event {
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, required),
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, required),
- (4, path, vec_type)
+ (4,
*
path, vec_type)
})
},
&Event::ProbeFailed { ref payment_id, ref payment_hash, ref path, ref short_channel_id } => {
})
},
&Event::ProbeFailed { ref payment_id, ref payment_hash, ref path, ref short_channel_id } => {
@@
-862,7
+867,7
@@
impl Writeable for Event {
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, required),
write_tlv_fields!(writer, {
(0, payment_id, required),
(2, payment_hash, required),
- (4, path, vec_type),
+ (4,
*
path, vec_type),
(6, short_channel_id, option),
})
},
(6, short_channel_id, option),
})
},
@@
-1002,7
+1007,7
@@
impl MaybeReadable for Event {
4u8 => Ok(None),
5u8 => {
let f = || {
4u8 => Ok(None),
5u8 => {
let f = || {
- let mut outputs =
VecReadWrapper
(Vec::new());
+ let mut outputs =
WithoutLength
(Vec::new());
read_tlv_fields!(reader, {
(0, outputs, required),
});
read_tlv_fields!(reader, {
(0, outputs, required),
});