mirror of
https://github.com/ACINQ/eclair.git
synced 2025-02-25 07:07:24 +01:00
* front now handles ping/sync Peer has been split in two and now handles only channel related stuff. A new `PeerConnection` class is in charge of managing the BOLT 1 part (init handshake, pings) and has the same lifetime as the underlying connection. Also, made `TransportHandler` be a child of `PeerConnection` by making the `remoteNodeId` an attribute of the state of `PeerConnection` instead of a constructor argument (since we cannot be sure of the remote nodeid before the auth handshake is done). Now we don't need to worry about cleaning up the underlying `TransportHandler` if the `PeerConnection` dies. * remove `Authenticator` Instead of first authenticating a connection, then passing it to the `PeerConnection` actor, we pass the connection directly to the `PeerConnection` and let it handle the crypto handshake, before the LN init. This removes a central point of management and makes things easier to reason about. As a side effect, the `TransportHandler` actor is now a child of `PeerConnection` which gives us a guarantee that it dies when its parent dies. * separated connection logic from `Peer` The `ReconnectionTask` actor handles outgoing connections to a peer. The goal is to free the `Peer` actor from the reconnection logic and have it just react to already established connections, independently of whether those connections are incoming or outgoing. The base assumption is that the `Peer` will send its state transitions to the `ReconnectionTask` actor. This is more complicated than it seems and there are various corner cases to consider: - multiple available addresses - concurrent outgoing connections and conflict between automated/user-requested attempts - concurrent incoming/outgoing connections and risk of reconnection loops - etc. Co-Authored-By: Bastien Teinturier <31281497+t-bast@users.noreply.github.com> |
||
---|---|---|
.. | ||
src | ||
eclair-cli | ||
pom.xml |