@@ -5257,6 +5257,13 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
5257
5257
htlc. write ( writer) ?;
5258
5258
}
5259
5259
5260
+ // If the channel type is something other than only-static-remote-key, then we need to have
5261
+ // older clients fail to deserialize this channel at all. If the type is
5262
+ // only-static-remote-key, we simply consider it "default" and don't write the channel type
5263
+ // out at all.
5264
+ let chan_type = if self . channel_type != ChannelTypeFeatures :: only_static_remote_key ( ) {
5265
+ Some ( & self . channel_type ) } else { None } ;
5266
+
5260
5267
write_tlv_fields ! ( writer, {
5261
5268
( 0 , self . announcement_sigs, option) ,
5262
5269
// minimum_depth and counterparty_selected_channel_reserve_satoshis used to have a
@@ -5266,12 +5273,12 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
5266
5273
// and new versions map the default values to None and allow the TLV entries here to
5267
5274
// override that.
5268
5275
( 1 , self . minimum_depth, option) ,
5276
+ ( 2 , chan_type, option) ,
5269
5277
( 3 , self . counterparty_selected_channel_reserve_satoshis, option) ,
5270
5278
( 5 , self . config, required) ,
5271
5279
( 7 , self . shutdown_scriptpubkey, option) ,
5272
5280
( 9 , self . target_closing_feerate_sats_per_kw, option) ,
5273
5281
( 11 , self . monitor_pending_finalized_fulfills, vec_type) ,
5274
- ( 13 , self . channel_type, required) ,
5275
5282
} ) ;
5276
5283
5277
5284
Ok ( ( ) )
@@ -5512,12 +5519,12 @@ impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
5512
5519
read_tlv_fields ! ( reader, {
5513
5520
( 0 , announcement_sigs, option) ,
5514
5521
( 1 , minimum_depth, option) ,
5522
+ ( 2 , channel_type, option) ,
5515
5523
( 3 , counterparty_selected_channel_reserve_satoshis, option) ,
5516
5524
( 5 , config, option) , // Note that if none is provided we will *not* overwrite the existing one.
5517
5525
( 7 , shutdown_scriptpubkey, option) ,
5518
5526
( 9 , target_closing_feerate_sats_per_kw, option) ,
5519
5527
( 11 , monitor_pending_finalized_fulfills, vec_type) ,
5520
- ( 13 , channel_type, option) ,
5521
5528
} ) ;
5522
5529
5523
5530
let chan_features = channel_type. as_ref ( ) . unwrap ( ) ;
0 commit comments