lnd/lnwire
Bastien Teinturier 17200afc57
lnwire: explicitly handle empty list when encoding short chan IDs
Before this commit, both writing and reading an encoded empty set of
short channel IDs from the wire would fail. Prior to this commit, we
treated decoding an empty set as a caller error, and failed to write out
the zlib encoding of an empty set in a way that us and the other
implementations were able to read.

To fix this, rather than giving zlib an empty buffer to write out (which
results in an encoding with the zlib header data and the rest), we just
write a blank slice. When decoding, if we have an empty query body, then
we'll return a `nil` slice.

With the above changes, we'll now always write out an empty short
channel ID set as:
```
0001 (1 byte follows) || <encoding_type>
```

A new test has also been added to exercise this case for both known
encoding types.
2020-01-13 20:26:55 -08:00
..
accept_channel_test.go lnwire: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02:00
accept_channel.go lnwire: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02: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 lnwire: fixing buffer size and cleaning up uint16/32 conversion 2019-12-05 16:28:25 +01:00
channel_reestablish.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
channel_update.go lnwire+multi: define HasMaxHtlc helper on msgFlags 2019-01-22 08:42:30 +01:00
closing_signed.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
commit_sig.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07:00
error.go lnwire: rename ErrorCode -> FundingError 2019-09-20 10:55:21 +02:00
features_test.go lnwire+rpcserver: populate feature bits on decodepayreq 2019-12-10 13:09:36 -08:00
features.go feature/default_sets: expose optional mpp and pay_addr features IN9 2019-12-18 23:58:11 -08: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 multi: merge local+global features from remote peer 2019-11-08 05:31:47 -08:00
lnwire_test.go lnwire: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02:00
lnwire.go lnwire: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02: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 routing: use unified policy for path finding 2019-10-25 11:22:28 +02: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 multi: remove dead code 2019-09-10 17:21:59 +02:00
onion_error_test.go lnwire: add FailMPPTimeout message 2019-12-20 13:01:41 +02:00
onion_error.go lnwire: add FailMPPTimeout message 2019-12-20 13:01:41 +02:00
open_channel.go lnwire: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02: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: add LastBlockHeight method to QueryChannelRange 2020-01-06 14:00:16 -08:00
query_short_chan_ids_test.go lnwire/query_short_chan_ids: assert sorted for plain encoding 2019-11-20 01:57:36 -08:00
query_short_chan_ids.go lnwire: explicitly handle empty list when encoding short chan IDs 2020-01-13 20:26:55 -08:00
README.md multi: fix formatting issues in packge README's 2017-03-27 16:25:25 -07:00
reply_channel_range_test.go lnwire: explicitly handle empty list when encoding short chan IDs 2020-01-13 20:26:55 -08:00
reply_channel_range.go lnwire/reply_channel_range: assert sorted encodings 2019-11-20 01:57:59 -08:00
reply_short_chan_ids_end.go lnwire: export ReadElements and WriteElements 2018-12-24 19:58:06 -06:00
revoke_and_ack.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07: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: Add upfront shutdown messages and feature bit 2019-12-03 11:38:21 +02: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 peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07:00
update_fail_htlc.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07:00
update_fail_malformed_htlc.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07:00
update_fee.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07:00
update_fulfill_htlc.go peer+lnwire: add LinkUpdater iface and impl on relevant msgs 2019-09-25 12:00:59 -07: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