Commit graph

2536 commits

Author SHA1 Message Date
Matt Corallo
2f6205bfb0
Merge pull request #948 from TheBlueMatt/2021-06-p2p-fixes
Clean up message forwarding and relay gossip messages
2021-06-21 20:23:39 +00:00
Matt Corallo
895d1a8504 [peer_handler] Drop unused return from get_peer_for_forwarding!()
This avoids a now-unnecessary SocketDescriptor clone() call in
addition to cleaning up the callsite code somewhat.
2021-06-21 19:45:17 +00:00
Matt Corallo
f76e14c425 Somewhat simplify message handling error mapping in peer_handler 2021-06-21 19:45:17 +00:00
Matt Corallo
ae39b2ce19 Drop peers_needing_send tracking and try to write for each peer
We do a lot of work to track which peers have buffers which need
to be flushed, when we could instead just try to flush ever peer's
buffer.
2021-06-21 19:45:17 +00:00
Matt Corallo
0426d6e7a9 Skip forwarding gossip messages to peers if their buffer is over-full 2021-06-21 19:45:17 +00:00
Matt Corallo
c56cd1ef3a Forward gossip msgs 2021-06-21 16:02:18 +00:00
Matt Corallo
9de22ae6fc Refactor message broadcasting out into a utility method
This will allow us to broadcast messages received in the next
commit.
2021-06-21 16:02:18 +00:00
Matt Corallo
a6463ec6cd Fix bogus reentrancy from read_event -> do_attempt_write_data
`Julian Knutsen <julianknutsen@users.noreply.github.com>` pointed
out in a previous discussion that `read_event` can reenter user
code despite the documentation stating explicitly that it will not.

This was addressed in #456 by simply codifying the reentrancy, but
its somewhat simpler to just drop the `do_attempt_write_data` call.

Ideally we could land most of Julian's work, but its still in need
of substantial git history cleanup to get it in a reviewable state
and this solves the immediate issue.
2021-06-21 16:02:18 +00:00
Matt Corallo
f4323d98b8 Drop unused "peer gone" handling in get_peer_for_forwarding!()
We can never assume that messages were reliably delivered whether
we placed them in the socket or not, so there isn't a lot of use in
explicitly handling the case that a peer was not connected when we
went to send it a message.

Two TODOs are left for the generation of a `FundingAbandoned` (or
similar) event, though it ultimately belongs in `ChannelManager`.
2021-06-21 16:02:18 +00:00
Matt Corallo
94528f00f5
Merge pull request #947 from GeneFerneau/hash
Use hashbrown replacements for std equivalents
2021-06-20 02:20:19 +00:00
Gene Ferneau
da7a851d47
Use hashbrown replacements for std equivalents 2021-06-18 21:54:21 +00:00
Matt Corallo
4d1c1a32f2
Merge pull request #956 from jkczyz/2021-06-validate-pub
Increase poll::Validate visibility to pub
2021-06-18 18:06:45 +00:00
Matt Corallo
244ad8349e
Merge pull request #955 from TheBlueMatt/2021-06-rustc-bugz
Fix trivial doc warnings and make CI use old rustc
2021-06-18 15:24:21 +00:00
Jeffrey Czyz
7302c8c38a
Remove unnecessary spaces 2021-06-18 00:26:36 -05:00
Jeffrey Czyz
8cc026b406
Increase poll::Validate visibility to pub
Previously, poll::Validate was pub(crate) to force external implementors
of Poll to define their implementation in terms of ChainPoller. This was
because ChainPoller::look_up_previous_header checks for consistency
between headers and any errors would be checked at that level rather
than by the caller. Otherwise, if performed by the caller, a Poll
implementation would not be aware if the underlying BlockSource was
providing bad data and therefore couldn't react accordingly.

Widening the visibility to pub relaxes this requirement, although it's
still encourage to use ChainPoller to implement Poll. This permits
either copying or moving lightning-block-sync's test utilities to a
separate crate since they use poll::Validate.
2021-06-18 00:26:33 -05:00
Matt Corallo
f875579311 Clarify invoice comment noting the relevant final-cltv-expiry vals 2021-06-17 20:17:24 +00:00
Matt Corallo
84ac66e80f Make links in message signing docs rustdoc links
Latest rustc warns that "this URL is not a hyperlink" and notes that
"bare URLs are not automatically turned into clickable links". This
resolves those warnings.

Thanks to Joshua Nelson for pointing out the correct syntax for
this.
2021-06-17 16:58:59 +00:00
Matt Corallo
e7974dac84 Expose doc-linked constants in lightning-invoice
These constants are generally useful, and are linked from
documentation, so should be exposed in any case.
2021-06-17 15:48:20 +00:00
Matt Corallo
27d9feda58 Only check docs on rustc 1.52 as rustc stable now crashes 2021-06-17 15:41:16 +00:00
Matt Corallo
294009969a
Merge pull request #944 from TheBlueMatt/2021-06-0.0.99
0.0.98
2021-06-11 17:02:11 +00:00
Matt Corallo
7b4b753010
Merge pull request #946 from jkczyz/2021-06-get-route-interface
Align get_route's interface with ChannelManager and Invoice
2021-06-11 16:51:48 +00:00
Jeffrey Czyz
d0355b7b45
Fix type name in docs 2021-06-11 08:44:35 -07:00
Jeffrey Czyz
200f3d155c
Accept multi-hop route hints in get_route
Lightning invoices allow for zero or more multi-hop route hints. Update
get_route's interface to accept such hints, although only the last hop
from each is used for the time being.

Moves RouteHint from lightning-invoice crate to lightning crate. Adds a
PrivateRoute wrapper around RouteHint for use in lightning-invoice.
2021-06-11 08:44:32 -07:00
Jeffrey Czyz
c9d1ed5c14
Add find_all_extract macro to lightning-invoice
Used for extracting more than one field of the same type.
2021-06-10 12:54:55 -07:00
Matt Corallo
9c9081dfcb Bump versions to 0.0.98, lightning-invoice to 0.6.0 2021-06-08 21:08:29 +00:00
Matt Corallo
a8038a8234
Merge pull request #940 from TheBlueMatt/2021-06-fix-docs
Clean up docs on public chan_utils methods to be more useful
2021-06-08 02:28:46 +00:00
Matt Corallo
1d4f9c8dec
Merge pull request #936 from TheBlueMatt/2021-05-spendable-event-locktime-delay
Delay DelayedPaymentOutput spendable events until the CSV delay
2021-06-08 01:53:03 +00:00
Matt Corallo
0e101417a5
Merge pull request #943 from lightning-signer/2021-06-signet
Add proper signet support for invoices
2021-06-08 01:52:38 +00:00
Matt Corallo
8cdc855f01 Clean up docs on public chan_utils methods to be more useful 2021-06-08 01:52:09 +00:00
Matt Corallo
ffec147f0f
Merge pull request #939 from TheBlueMatt/2021-05-derives
Add additional derives for a few structs
2021-06-08 01:51:41 +00:00
Matt Corallo
8808e4051c
Merge pull request #942 from lightning-signer/2021-06-accept-channel-reserve-dust
Remove unwanted check in accept_channel
2021-06-07 22:03:11 +00:00
Devrandom
bac5f4930f Add proper signet support for invoices 2021-06-07 16:29:39 +02:00
Devrandom
b22e5c0c9b Remove unwanted check in accept_channel
This caused an interoperability issue with lnd, because they can propose a reserve lower than their dust limit (but not lower than ours).
2021-06-07 16:22:07 +02:00
Matt Corallo
ed6a69c1cf Add additional derives for a few structs 2021-06-02 16:21:00 +00:00
Matt Corallo
e60ccbb1a8 Delay DelayedPaymentOutput spendable events until the CSV delay 2021-06-01 22:32:56 +00:00
Matt Corallo
3996eaab6e Merge pull request #935 from TheBlueMatt/2021-05-enum-tlvs
TLV-ize enum serialization and a few additional structs
2021-06-01 21:53:15 +00:00
Matt Corallo
73576574a9 Update network graph sample used in benchmarks 2021-06-01 21:53:06 +00:00
Matt Corallo
c56265d225 Convert SpendableOutputDescriptor to new TLV-based serialization 2021-06-01 21:53:06 +00:00
Matt Corallo
3c93967cd2 Clean up ChannelMonitor object serialization to use TLVs/versions 2021-06-01 21:53:06 +00:00
Matt Corallo
9e5d9516dd Use TLVs inside of serialization of Event variants 2021-06-01 21:53:06 +00:00
Matt Corallo
66784e32fe Convert remaining channel inner structs and enums to TLV-based ser 2021-06-01 21:53:06 +00:00
Matt Corallo
86641ea680 Convert most chain::* inner structs and enums to TLV-based ser macros 2021-06-01 21:53:06 +00:00
Matt Corallo
68313da695 Add generic serialization implementations for Boxs and 3-tuples
These are used in the next commit(s).
2021-06-01 21:53:06 +00:00
Matt Corallo
b385a40e4a Use TLV instead of explicit length for VecReadWrapper termination
VecReadWrapper is only used in TLVs so there is no need to prepend
a length before writing/reading the objects - we can instead simply
read until we reach the end of the TLV stream.
2021-06-01 21:53:06 +00:00
Matt Corallo
ccc828412e Add a macro to implement serialization of enums using TLVs 2021-06-01 21:53:06 +00:00
Matt Corallo
ee29bc4096
Merge pull request #938 from lightning-signer/2020-06-test-background
Expose test_process_background_events
2021-06-01 17:32:29 +00:00
Devrandom
29bad58ff4 Expose test_process_background_events 2021-06-01 19:00:00 +02:00
Matt Corallo
0e41bba506 Give OnchainEvent::HTLCUpdate individual fields instead of a pair 2021-06-01 16:11:53 +00:00
Matt Corallo
77bdc32bbd
Merge pull request #933 from TheBlueMatt/2021-05-ser-fast
Speed up deserialization of secp256k1 objects significantly
2021-06-01 16:11:24 +00:00
Matt Corallo
7231b4a245 Add additional inline hints in serialization methods
This substantially improves deserialization performance when LLVM
decides not to inline many short methods, eg when not building
with LTO/codegen-units=1.

Even with the default bench params of LTO/codegen-units=1, the
serialization benchmarks on an Intel 2687W v3 take:

test routing::network_graph::benches::read_network_graph  ... bench: 1,955,616,225 ns/iter (+/- 4,135,777)
test routing::network_graph::benches::write_network_graph ... bench: 165,905,275 ns/iter (+/- 118,798)
2021-06-01 15:47:01 +00:00