Commit graph

21 commits

Author SHA1 Message Date
Matt Corallo
a2fce3bbc0 Further clean up some comments wrt the peer socket handling API 2020-02-24 11:54:37 -05:00
Matt Corallo
faaa4d207d Fix incorrect docs around disconnect in peer_handler + rename fns
The way PeerHandler was written, it was supposed to remove from
self.peers iff the API docs indicate that disconnect_event should
NOT be called (and otherwise rely on disconnect_event to do so).

Sadly, the implementation was way out of whack with reality - in
the implementation, essentially anywhere where PeerHandler
originated the disconnection, the peer was removed and no
disconnect_event was expected. The docs, however, indicated that
disconnect_event should nearly only be called, only not doing so
when the initial handshake message never completed.

We opt to change the docs, mostly, as well as clean up the
ping/pong handling somewhat and rename a few functions to clarify
what they actually do.
2020-02-20 20:48:13 -05:00
Arik Sosman
d9e1f98323
Remove unused code in peer handler test utility method. 2020-02-19 17:57:03 -08:00
Arik Sosman
b317f5221f
Fix ping message sent on timer ticks to be encrypted so the peer can decrypt it instead of shutting down the connection. 2020-02-19 14:08:56 -08:00
Matt Corallo
85c8410f89 Expose VecWriter outside of util::ser since peer_handler uses it 2020-02-11 13:48:56 -05:00
Matt Corallo
b7f4f764af
Merge pull request #490 from jkczyz/2020-02-initial-routing-sync
Refactor logic for setting initial_routing_sync feature bit
2020-02-10 22:18:48 +00:00
Jeffrey Czyz
d3fb619020 Move initial_routing_sync decision to the Router
PeerManager determines whether the initial_routing_sync feature bit
should be set when sending Init messages to peers. Move this to the
Router as it is better able to determine if a full sync is needed.
2020-02-10 11:13:41 -08:00
Arik Sosman
360ed11c59
remove decode_error macro only used once 2020-02-06 14:17:44 -08:00
Jeffrey Czyz
326076f5e8 Move message type parity logic to the wire module
Create a MessageType abstraction and use it throughout the wire module's
external interfaces. Include an is_even method for clients to determine
how to handle unknown messages.
2020-02-05 12:13:13 -08:00
Jeffrey Czyz
7de9f5278c Encapsulate message wire encoding into a module
Lightning messages are identified by a 2-byte type when encoded on the
wire. Rather than expecting callers to know message types when sending
messages to peers, have each message implement a trait defining the
message type. Provide an interface for reading and writing messages
as well as a Message enum for matching the decoded message, including
unknown messages.
2020-02-05 12:11:48 -08:00
Valentine Wallace
4833d1acf9 Update ChannelManager's ChannelMonitor Arc to be a Deref
Additional changes:
* Update fuzz crate to match ChannelManager's new API
* Update lightning-net-tokio library to match ChannelManager's new ChannelMonitor Deref API
* Update tests to match ChannelManager's new ChannelMonitor Deref API
2020-01-25 14:39:52 -05:00
Matt Corallo
d2ba7caf47 Pass peer's Init message through to ChannelManager 2020-01-19 22:47:08 -05:00
Jeffrey Czyz
e58440fe45 Remove unnecessary borrow_parts() methods
Accessing a struct through an std::syn::MutexGuard using implicit
dereferencing can confuse the borrow checker. This situation arises when
obtaining mutable references to more than one field of the struct, which
is normally allowed.

https://doc.rust-lang.org/nomicon/borrow-splitting.html

However, when using implicit dereferencing, a mutable reference to the
the entire struct is taken. Thus, attempting to access another field in
this manner will lead to a compilation error.

https://doc.rust-lang.org/error-index.html#E0499

A simple way to avoid this is to first obtain a mutable reference to the
struct using explicit dereferencing.
2020-01-16 10:48:16 -08:00
Matt Corallo
cd5a11fe0d Move features into a separate module out of msgs. 2020-01-13 13:53:20 -05:00
Matt Corallo
7ec52c6ecb Refactor features a bit more to describe what the constructors do
The Features::new() method is nonsense and doesn't describe what
features were being set - we introduce an empty() and supported()
constructors instead.
2020-01-13 13:52:23 -05:00
Matt Corallo
31cc243e6f Implement Flat Features
This merges local and global features into one struct, which is
parameterized by where it appers. The parameterization restricts
which queries can be made and which features can be set, in line
with the latest BOLT 9.

Closes #427.
2020-01-12 18:15:25 -05:00
Matt Corallo
f8b06ec82c
Merge pull request #439 from TheBlueMatt/2020-01-398-fixups
398 with nits fixed.
2020-01-06 03:59:03 +00:00
Antoine Riard
933ae34703 Drop Result for ChannelMessageHandler methods
Simplify interfaces between ChannelMessageHandler and PeerManager,
by switching all ChannelMessageHandler errors to HandleError sent
internally instead of being return. With further refactors in Router
and PeerChannelEncryptor, errors management on the PeerManager-side
won't be splitted between try_potential_handleerror and HandleError
processing.

Inside ChannelManager, we now log MsgHandleErrInternal and send
ErrorAction to PeerManager.

On a high-level, it should allow client using API to be more flexible
by polling events instead of waiting function call returns.

We also update handle_error macro to take channel_state_lock from
caller which should avoid some deadlock potential for some edges
cases.

Filter out IgnoreError in handle_error macro, update test in
consequence.
2020-01-05 20:50:07 -05:00
Aleru
43a42586ef New API for ping generation
New API for generating pings
2020-01-05 00:06:48 -05:00
RJ Rybarczyk
5305223495 Merge branch 'master' of github.com:rust-bitcoin/rust-lightning into use-workspaces 2019-11-18 19:44:55 +00:00
RJ Rybarczyk
88fef649b1 Use workspaces to separate crates 2019-11-15 02:44:30 +00:00
Renamed from src/ln/peer_handler.rs (Browse further)