@@ -53,7 +53,7 @@ use util::config::UserConfig;
53
53
use util:: events:: { EventHandler , EventsProvider , MessageSendEvent , MessageSendEventsProvider , ClosureReason } ;
54
54
use util:: { byte_utils, events} ;
55
55
use util:: scid_utils:: fake_scid;
56
- use util:: ser:: { BigSize , FixedLengthReader , Readable , ReadableArgs , MaybeReadable , Writeable , Writer } ;
56
+ use util:: ser:: { BigSize , FixedLengthReader , Readable , ReadableArgs , MaybeReadable , Writeable , Writer , VecWriter } ;
57
57
use util:: logger:: { Level , Logger } ;
58
58
use util:: errors:: APIError ;
59
59
@@ -3716,14 +3716,14 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3716
3716
fn get_htlc_temp_fail_err_and_data ( & self , desired_err_code : u16 , chan : & Channel < Signer > ) -> ( u16 , Vec < u8 > ) {
3717
3717
debug_assert_eq ! ( desired_err_code & 0x1000 , 0x1000 ) ;
3718
3718
if let Ok ( upd) = self . get_channel_update_for_unicast ( chan) {
3719
- let enc = if desired_err_code == 0x1000 | 20 {
3720
- let mut res = Vec :: new ( ) ;
3719
+ let mut enc = VecWriter ( Vec :: with_capacity ( upd . serialized_length ( ) + 4 ) ) ;
3720
+ if desired_err_code == 0x1000 | 20 {
3721
3721
// TODO: underspecified, follow https://github.com/lightning/bolts/issues/791
3722
- res . extend_from_slice ( & byte_utils :: be16_to_array ( 0 ) ) ;
3723
- res . extend_from_slice ( & upd . encode_with_len ( ) ) ;
3724
- res
3725
- } else { upd. encode_with_len ( ) } ;
3726
- ( desired_err_code, enc)
3722
+ 0u16 . write ( & mut enc ) . expect ( "Writes cannot fail" ) ;
3723
+ }
3724
+ ( upd . serialized_length ( ) as u16 ) . write ( & mut enc ) . expect ( "Writes cannot fail" ) ;
3725
+ upd. write ( & mut enc ) . expect ( "Writes cannot fail" ) ;
3726
+ ( desired_err_code, enc. 0 )
3727
3727
} else {
3728
3728
// If we fail to get a unicast channel_update, it implies we don't yet have an SCID,
3729
3729
// which means we really shouldn't have gotten a payment to be forwarded over this
0 commit comments