Skip to content

Commit be6b7a5

Browse files
committed
f - only emit SpliceFailed when initiator
1 parent bc71a7a commit be6b7a5

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

lightning/src/ln/channel.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,6 +1734,7 @@ where
17341734
.pending_splice
17351735
.as_mut()
17361736
.and_then(|pending_splice| pending_splice.funding_negotiation.take())
1737+
.filter(|funding_negotiation| funding_negotiation.is_initiator())
17371738
.map(|funding_negotiation| {
17381739
let funding = funding_negotiation.as_funding();
17391740
SpliceFundingFailed {
@@ -1989,6 +1990,7 @@ where
19891990
interactive_tx_constructor,
19901991
} = funding_negotiation
19911992
{
1993+
let is_initiator = interactive_tx_constructor.is_initiator();
19921994
let signing_session = interactive_tx_constructor.into_signing_session();
19931995
let commitment_signed = chan.context.funding_tx_constructed(
19941996
&mut funding,
@@ -1999,7 +2001,7 @@ where
19992001
)?;
20002002

20012003
pending_splice.funding_negotiation =
2002-
Some(FundingNegotiation::AwaitingSignatures { funding });
2004+
Some(FundingNegotiation::AwaitingSignatures { funding, is_initiator });
20032005

20042006
return Ok(commitment_signed);
20052007
} else {
@@ -2600,12 +2602,14 @@ enum FundingNegotiation {
26002602
},
26012603
AwaitingSignatures {
26022604
funding: FundingScope,
2605+
is_initiator: bool,
26032606
},
26042607
}
26052608

26062609
impl_writeable_tlv_based_enum_upgradable!(FundingNegotiation,
26072610
(0, AwaitingSignatures) => {
26082611
(1, funding, required),
2612+
(3, is_initiator, required),
26092613
},
26102614
unread_variants: AwaitingAck, ConstructingTransaction
26112615
);
@@ -2615,7 +2619,17 @@ impl FundingNegotiation {
26152619
match self {
26162620
FundingNegotiation::AwaitingAck { .. } => None,
26172621
FundingNegotiation::ConstructingTransaction { funding, .. } => Some(funding),
2618-
FundingNegotiation::AwaitingSignatures { funding } => Some(funding),
2622+
FundingNegotiation::AwaitingSignatures { funding, .. } => Some(funding),
2623+
}
2624+
}
2625+
2626+
fn is_initiator(&self) -> bool {
2627+
match self {
2628+
FundingNegotiation::AwaitingAck { context } => context.is_initiator,
2629+
FundingNegotiation::ConstructingTransaction { interactive_tx_constructor, .. } => {
2630+
interactive_tx_constructor.is_initiator()
2631+
},
2632+
FundingNegotiation::AwaitingSignatures { is_initiator, .. } => *is_initiator,
26192633
}
26202634
}
26212635
}
@@ -8672,7 +8686,7 @@ where
86728686

86738687
if let Some(pending_splice) = self.pending_splice.as_mut() {
86748688
self.context.channel_state.clear_quiescent();
8675-
if let Some(FundingNegotiation::AwaitingSignatures { mut funding }) =
8689+
if let Some(FundingNegotiation::AwaitingSignatures { mut funding, .. }) =
86768690
pending_splice.funding_negotiation.take()
86778691
{
86788692
funding.funding_transaction = Some(funding_tx);
@@ -9589,7 +9603,7 @@ where
95899603
.as_ref()
95909604
.and_then(|pending_splice| pending_splice.funding_negotiation.as_ref())
95919605
.and_then(|funding_negotiation| {
9592-
if let FundingNegotiation::AwaitingSignatures { funding } = &funding_negotiation {
9606+
if let FundingNegotiation::AwaitingSignatures { funding, .. } = &funding_negotiation {
95939607
Some(funding)
95949608
} else {
95959609
None

lightning/src/ln/interactivetxs.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,6 +1916,7 @@ impl InteractiveTxInput {
19161916

19171917
pub(super) struct InteractiveTxConstructor {
19181918
state_machine: StateMachine,
1919+
is_initiator: bool,
19191920
initiator_first_message: Option<InteractiveTxMessageSend>,
19201921
channel_id: ChannelId,
19211922
inputs_to_contribute: Vec<(SerialId, InputOwned)>,
@@ -2090,6 +2091,7 @@ impl InteractiveTxConstructor {
20902091

20912092
let mut constructor = Self {
20922093
state_machine,
2094+
is_initiator,
20932095
initiator_first_message: None,
20942096
channel_id,
20952097
inputs_to_contribute,
@@ -2102,6 +2104,10 @@ impl InteractiveTxConstructor {
21022104
Ok(constructor)
21032105
}
21042106

2107+
pub fn is_initiator(&self) -> bool {
2108+
self.is_initiator
2109+
}
2110+
21052111
pub fn take_initiator_first_message(&mut self) -> Option<InteractiveTxMessageSend> {
21062112
self.initiator_first_message.take()
21072113
}

0 commit comments

Comments
 (0)