@@ -8409,27 +8409,56 @@ where
8409
8409
msg.your_last_funding_locked_txid
8410
8410
.is_none()
8411
8411
.then(|| ())
8412
+ // The sending node:
8413
+ // - if `my_current_funding_locked` is included:
8414
+ // - if `announce_channel` is set for this channel:
8415
+ // - if it has not received `announcement_signatures` for that transaction:
8416
+ // - MUST retransmit `channel_ready` or `splice_locked` after exchanging `channel_reestablish`.
8417
+ .or_else(|| {
8418
+ self.maybe_get_my_current_funding_locked(their_features)
8419
+ .filter(|funding| !funding.is_splice())
8420
+ .filter(|_| self.context.config.announce_for_forwarding)
8421
+ .filter(|_| self.context.announcement_sigs.is_none())
8422
+ .map(|_| ())
8423
+ })
8412
8424
.and_then(|_| self.get_channel_ready(logger))
8413
8425
} else { None };
8414
8426
8415
- // A receiving node:
8416
- // - if `your_last_funding_locked` is set and it does not match the most recent
8417
- // `splice_locked` it has sent:
8418
- // - MUST retransmit `splice_locked`.
8419
8427
let sent_splice_txid = self
8420
8428
.maybe_get_my_current_funding_locked(their_features)
8421
8429
.filter(|funding| funding.is_splice())
8422
8430
.map(|funding| {
8423
8431
funding.get_funding_txid().expect("Splice funding_txid should always be set")
8424
8432
});
8425
- let splice_locked = msg.your_last_funding_locked_txid.and_then(|last_funding_txid| {
8426
- sent_splice_txid
8427
- .filter(|sent_splice_txid| last_funding_txid != *sent_splice_txid)
8428
- .map(|splice_txid| msgs::SpliceLocked {
8429
- channel_id: self.context.channel_id,
8430
- splice_txid,
8431
- })
8432
- });
8433
+ let splice_locked = msg
8434
+ // A receiving node:
8435
+ // - if `your_last_funding_locked` is set and it does not match the most recent
8436
+ // `splice_locked` it has sent:
8437
+ // - MUST retransmit `splice_locked`.
8438
+ .your_last_funding_locked_txid
8439
+ .and_then(|last_funding_txid| {
8440
+ sent_splice_txid.filter(|sent_splice_txid| last_funding_txid != *sent_splice_txid)
8441
+ })
8442
+ // The sending node:
8443
+ // - if `my_current_funding_locked` is included:
8444
+ // - if `announce_channel` is set for this channel:
8445
+ // - if it has not received `announcement_signatures` for that transaction:
8446
+ // - MUST retransmit `channel_ready` or `splice_locked` after exchanging `channel_reestablish`.
8447
+ .or_else(|| {
8448
+ sent_splice_txid
8449
+ .filter(|_| self.context.config.announce_for_forwarding)
8450
+ .filter(|sent_splice_txid| {
8451
+ if self.funding.get_funding_txid() == Some(*sent_splice_txid) {
8452
+ self.context.announcement_sigs.is_none()
8453
+ } else {
8454
+ true
8455
+ }
8456
+ })
8457
+ })
8458
+ .map(|splice_txid| msgs::SpliceLocked {
8459
+ channel_id: self.context.channel_id,
8460
+ splice_txid,
8461
+ });
8433
8462
8434
8463
let mut commitment_update = None;
8435
8464
let mut tx_signatures = None;
0 commit comments