Commit graph

85 commits

Author SHA1 Message Date
RJ Rybarczyk
88fef649b1 Use workspaces to separate crates 2019-11-15 02:44:30 +00:00
Matt Corallo
56f16eaa4d
Merge pull request #349 from ariard/2019-07-data_loss
Implement option_data_loss_protect on both sides
2019-08-06 21:12:57 +00:00
RJ Rybarczyk
d32015377e Make SocketDescriptor::send_data take slice instead of vec and offset 2019-07-31 11:22:59 -04:00
Antoine Riard
2869e50d67 Support option_data_loss_protect for remote peer
In case of sending channel_reestablish message, we join
our current per_commitment_point and their highest revocation
secret we know about

We set data_loss_protect by default and adjust encoding_init
test in consequence
2019-07-30 00:38:20 -04:00
Matt Corallo
084ef28708 Stop using rng in peer_channel_encryptor to generate ephemeral keys
This removes the bulk of our reliance on the rand crate in non-test
envs, paving a way towards a syscall-less rust-lightning and WASM.
Since this is a breaking change for full_stack_target (and several
fuzz targets), go ahead and make other changes to make things more
distinct.
2019-07-23 14:29:56 -04:00
Antoine Riard
675cf4ac1d Support option_upfront_shutdown_script for local peer
Track shutdown_pubkey of peer at open/accept_channel messages

Fix encoding_init test
2019-07-22 17:03:00 -04:00
Antoine Riard
0052b2c5c3 Provide peer local_features to handle_open_channel/accept_channel
Peer may send us a shutdown_scriptpubkey in open_channel or
accept_channel messages. Before to enforce this policy on channel
closing, we want to be sure that our peer has opt-in to it.

Extend LocalFeatures new method visibilty from crate to public
for fuzz tests
2019-07-22 13:13:01 -04:00
Dimitris Apostolou
ab10b05075
Fix typos 2019-01-24 19:07:08 +02:00
Matt Corallo
7a77c9f1d2
Merge pull request #298 from TheBlueMatt/2019-01-271-cleanup
Implement serialize/deserialize for Router
2019-01-23 14:48:13 -05:00
Antoine Riard
c7b8c312ce Implement serialize/deserialize for Router.
Extend route_test to check if serialize/deserialize of
NetworkMap works.

Add PartialEq traits on some Router's structs.

Modify also UnsignedNodeAnnouncement serialization
2019-01-23 11:31:37 -05:00
Matt Corallo
12d25576c1 Upgrade to secp256k1 v12, bitcoin v16, and crates bitcoin_hashes 2019-01-22 13:49:15 -05:00
Matt Corallo
b4fc5b65e0 Fix pre-noise peer disconnect panic on non-Err disconnect
366e79615b fixed the same crash for
Errs that come up during handshake, but was incomplete and should
have just dropped the node_id being different based on
inbound/outbound. This patch does so and actually fixes the issue.

Found by fuzzer.
2018-11-18 12:59:02 -05:00
Schalk van Heerden
8d7b498974 Handle-initial_routing_sync-requests-from-peers-in-their-Init-messages 2018-11-09 13:53:13 +10:30
Matt Corallo
366e79615b Fix pre-noise outbound peer disconnect panic found by fuzzer
If we make an outbound connection to a peer who we are already
connected to, and the outbound connection fails
pre-noise-completion, we will remove the original peer connection
from our node_id_to_descriptor map.

The fuzzer managed to find this by crashing in Channel's assertions
that we don't do a get_channel_reestablish() when the Channel isn't
already marked disconnected.
2018-11-02 10:50:32 -04:00
Matt Corallo
b030e84ad8 Add logging for (dis)connect in peer_handler/channelmanager 2018-11-02 10:45:29 -04:00
Matt Corallo
294ad32523 Avoid reentrancy of send_data from PeerHandler::read_bytes.
This greatly simplifies clients of PeerHandler, and because almost
all response messages have already been moved to process_events
this doesn't change much effeciency-wise.
2018-10-27 09:42:04 -04:00
Matt Corallo
249aa77550 Send channel_reestablish out-of-band to ensure ordered deliver 2018-10-27 09:42:04 -04:00
Matt Corallo
e2de49ddc4 Respond to channel_reestablish out-of-band for ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
4342114345 Send RAA/CS messages out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
812f255d7c Send shutdown/closing_signed msgs out-of-band for ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
e382a7b4b3 Send announcement_signatures msgs out-of-band for ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
c962a27156 Send funding_signed messages out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
608d517f92 Send AcceptChannel responses out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
e397cb9960 Split Event, move MessageSendEvent push() inside channel_state lock 2018-10-27 09:42:04 -04:00
Antoine Riard
8c235d9e28 Generate Events from ChannelMonitor to indicate spendable ouputs
Extend KeyStorage with delayed_payment_base_key and per_commitment_point
to derive local_delayed private key
2018-10-27 09:34:28 -04:00
Matt Corallo
b02670a920 Add an Event for sending revoke_and_ack messages out-of-band 2018-10-23 16:03:30 -04:00
Matt Corallo
e86c84b2be Add message ordering return value to handling channel_reestablish 2018-10-23 15:26:11 -04:00
Yuntai Kyong
920d1458c4 Move HTLCFailChannelUpdate handling out-of-band
While this isn't neccessary for message ordering consistency, this
does mean that we won't end up processing an HTLCFailChannelUpdate
from a update_fail_htlc prior to it being fully committed (where if
the peer disconnects/reconnects it could theoretically give us a
different result, eg if their next-hop reconnected to them).
2018-10-23 14:01:21 -04:00
Yuntai Kyong
1dbc6fb0ef Implement update_fee handling 2018-09-29 19:58:08 -04:00
Matt Corallo
6e1318b0e2 Make docs look nicer by adding explicit spacing 2018-09-20 12:58:10 -04:00
Matt Corallo
c43e535bc0 Simplify DecodeError enum by removing some useless distinctions 2018-09-20 10:46:12 -04:00
Matt Corallo
3aeec96470 Add module and all-pub-things docs and deny missing docs 2018-09-19 23:07:02 -04:00
Matt Corallo
fe90e13f84 Log peer features in peer_handler (and check for all req bits) 2018-09-19 22:47:14 -04:00
Matt Corallo
8a7dd2f9b8 Fix peer_handler message serialization
Fixes a bug introduced in 3e89106163
where messages were being encoded with their size instead of their
type.
Also utilizes the new size_hinting in peer_handler
2018-09-16 14:33:50 -04:00
Matt Corallo
1f1f82569a Simplify serialization a bit by removing the useless newtypes 2018-09-16 14:33:50 -04:00
Matt Corallo
12a50627a3 Add channel_reestablish + peer_connected events to channel handler 2018-09-15 10:53:16 -04:00
Yuntai Kyong
28a612f9f3 Migrate fuzz router/channel target to Readable
and be more specific about DecodeError::InvalidValue
2018-09-12 10:19:36 -04:00
Yuntai Kyong
3e89106163 migrate peer_handler to use Writeable
added inplace byte_utils
2018-09-12 10:19:36 -04:00
Yuntai Kyong
1b8504a3f3 Implement Writer/Reader
with additional variants in DecodeError
2018-09-12 10:18:02 -04:00
Matt Corallo
e9fed4973b Disallow duplicate Init messages from peers 2018-09-08 14:43:42 -04:00
Matt Corallo
bf46a5f721 Fix PeerManager::get_peer_node_ids to filter according to docs 2018-09-08 13:59:39 -04:00
Matt Corallo
6dab6b185d Disconnect duplicate node_id connections after Noise handshake 2018-09-08 13:59:39 -04:00
Matt Corallo
f78d7299d6 Also fwd channel_update and node_announcement immediately
Not really sure why the API was different for channel_announcement,
but this brings everything in sync.
2018-08-29 18:07:56 -04:00
Matt Corallo
faff5c2da3 Fail parsing node/channel announcements with unknown even features
This is required for BOLT 7 compliance
2018-08-29 18:06:06 -04:00
Matt Corallo
10bc7aa3df Ignore invalid lnd msgs by matching DecodeError instead of a macro 2018-08-29 17:57:40 -04:00
Matt Corallo
7d6aab7f22 Add update_fail_malformed_htlcs vec to CommitmentUpdate
Not sure why this wasn't there to begin with
2018-08-26 16:39:21 -04:00
Matt Corallo
a3247abb4e Handle Error messages by closing channels as required by BOLT 1 2018-08-25 17:20:58 -04:00
Matt Corallo
8f36386bee Ensure we never send messages prior to Init for BOLT 1 compliance 2018-08-25 14:49:18 -04:00
Matt Corallo
ab00e4ccff Merge HTLC-update events, remove FailHTLC ErrorAction
UpdateFailHTLC isn't really an error anymore now that its handled
async after channel commitment (as required by BOLT 2), and since
its unused this is free. To resolve the TODO which intended to use
it for HTLC failure when trying to route forwards, we instead opt
to merge all the HTLC update events into one UpdateHTLCs event
which just contains a CommitmentUpdate object.
2018-08-23 16:11:20 -04:00
Matt Corallo
7345c0b3ce Add trace logs for Errs when handling peer messages 2018-08-23 16:11:12 -04:00