lnd/lnwire
Olaoluwa Osuntokun f83fde8483
lnwire: ensure we precisely encode the length for onion errors w/ chan updates
In this commit we fix a compatibility issue with other implementations.
Before this commit, when writing out an onion error that includes a
`ChannelUpdate` we would use the `MaxPayloadLength` to get the length to
encode. However, a recent update has modified that to be the max
`brontide` payload length as it's possible to pad out the message with
optional fields we're unaware of. As a result, we would always write out
a length of 65KB or so. This didn't effect our parser as we ignore the
length and decode the channel update directly as we don't need the
length to do that. However, other implementations depended on the length
rather than just reading the channel update, meaning that they weren't
able to decode our onion errors that had channel updates.

In this commit we fix that by introducing a new
`writeOnionErrorChanUpdate` which will write out the precise length
instead of using the max payload size.

Fixes #2450.
2019-01-11 14:21:48 -08:00
..
accept_channel.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
announcement_signatures.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
channel_announcement.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
channel_id_test.go lnwire: fix minor typo in tests 2017-09-18 19:46:16 +02:00
channel_id.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
channel_reestablish.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
channel_update.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
closing_signed.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
commit_sig.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
error.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
features_test.go multi: comprehensive typo fixes across all packages 2018-02-06 19:11:11 -08:00
features.go lnwire/features: add required gq to local features 2018-09-05 18:51:04 -07:00
funding_created.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
funding_locked.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
funding_signed.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
gossip_timestamp_range.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
init_message.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
lnwire_test.go lnwire: when reading node aliases, properly check validity 2019-01-07 12:53:10 -08:00
lnwire.go lnwire: when reading node aliases, properly check validity 2019-01-07 12:53:10 -08:00
message.go lnwire: update tests and message code definitions for new gossip query msgs 2018-05-31 16:30:52 -07:00
msat_test.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
msat.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
netaddress_test.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
netaddress.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
node_announcement_test.go lnwire: add test cases for node alias validation 2019-01-07 12:53:40 -08:00
node_announcement.go lnwire: when reading node aliases, properly check validity 2019-01-07 12:53:10 -08:00
onion_error_test.go lnwire: ensure we precisely encode the length for onion errors w/ chan updates 2019-01-11 14:21:48 -08:00
onion_error.go lnwire: ensure we precisely encode the length for onion errors w/ chan updates 2019-01-11 14:21:48 -08:00
open_channel.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
ping.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
pong.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
query_channel_range.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
query_short_chan_ids.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
README.md multi: fix formatting issues in packge README's 2017-03-27 16:25:25 -07:00
reply_channel_range.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
reply_short_chan_ids_end.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
revoke_and_ack.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
short_channel_id_test.go multi: run all test instances in parallel 2017-06-17 01:00:07 +02:00
short_channel_id.go lnwire: remove pointer receiver from ToUint64 for ShortChannelID 2018-04-06 14:52:02 -07:00
shutdown.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
signature_test.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
signature.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
update_add_htlc.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
update_fail_htlc.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
update_fail_malformed_htlc.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
update_fee.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
update_fulfill_htlc.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00

lnwire

Build Status MIT licensed GoDoc

The lnwire package implements the Lightning Network wire protocol.

This package has intentionally been designed so it can be used as a standalone package for any projects needing to interface with lightning peers at the wire protocol level.

Installation and Updating

$ go get -u github.com/lightningnetwork/lnd/lnwire