Matt Corallo
4ca5bcf8cf
Update PendingHTLCStatus to hold malformed HTLC error messages
2018-08-26 16:39:21 -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
755b76bf83
Update error deserialization in compliance with BOLT #1
2018-08-25 17:21:09 -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
32e2f7eef5
Remove unused node_id tracking in ChannelManager tests
2018-08-24 16:58:27 -04:00
Matt Corallo
4f77c812a4
Fix crash introduced in #124
...
I'm rapidly starting to regret holding failed HTLCs in Channel,
given we allow them to violate the no-duplicate-hashes
precondition.
Found by fuzzer
2018-08-24 16:58:27 -04:00
Matt Corallo
7ce13da728
Fix integer overflow panic in new HTLC-forwarding fee checks
...
Found by fuzzer
2018-08-23 17:23:46 -04:00
Matt Corallo
dfc04ad0b4
Fix duplicate payment_hashes one immediately failed, one fail crash
...
Found by fuzzer
2018-08-23 17:04:31 -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
6e50a84f14
Do not return UpdateFailHTLC updates until the HTLC is committed
...
This fixes a violation of BOLT 2 and will let us consolidate some
HTLC update handling. Good bit of code movement, but is mostly
refactor to store HTLC failure status in pending_htlcs in Channel.
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
Matt Corallo
11e5975523
Update to rust-secp256k1 v0.11 and rust-bitcoin v0.14
2018-08-23 14:52:43 -04:00
Matt Corallo
5ee88ad9f2
Clean up excess \ns in route debug, use all debug encoders
2018-08-23 14:52:43 -04:00
Matt Corallo
6ab31a0d50
Return channel_updates when failing a HTLC for fee/CLTV reasons
2018-08-23 14:52:43 -04:00
Antoine Riard
0523403887
Add Display trait on network structs for routing bug track
2018-08-23 14:52:42 -04:00
Antoine Riard
05552c0988
Check amt_to_forward and outgoing_cltv_value in add_update_htlc
2018-08-23 14:52:36 -04:00
Matt Corallo
f476a19bde
Add simple utility to ChannelManager to force close all channels
2018-08-20 13:58:31 -04:00
Matt Corallo
7a04595269
Only enforce no-dup-payment_hash precondition on non-removed HTLCs
...
This fixes a panic found by fuzzer.
2018-08-20 13:58:31 -04:00
Matt Corallo
42086c94a0
Remove implicit Record import requirement in logging macros
2018-08-20 13:33:09 -04:00
Matt Corallo
1360fccd71
Ignore unknown channel flags as required in BOLT 2
2018-08-17 13:22:44 -04:00
Yuntai Kyong
69624a8556
add 1% chnnel reserve while keeping min value
...
if 1000 is always used it will almost always fail test reserve < dust_limit check
2018-08-17 13:18:29 -04:00
Yuntai Kyong
1c839ff103
Add checking locally derived reserve and dust limit
2018-08-17 13:18:28 -04:00
Yuntai Kyong
716b37863a
document optional channel constraints per spec
2018-08-17 13:18:28 -04:00
Yuntai Kyong
0fece38b19
Add various checking when handling open and accept
...
Add `derive_minimum_depth()` and `derive_maximum_minimum_depth()` and hide
CONF_TARGET constant behind these functions.
Replace `DisconnectPeer` error with `HandleError` with `ErrorAction::SendErrorMessage`
2018-08-17 13:18:28 -04:00
Yuntai Kyong
ada2154b40
Add push_msat to new outbound API
...
Also add APIMisuseError to be thrown to the API client
2018-08-17 13:18:28 -04:00
Matt Corallo
4291cb99d4
Add some trace logging in peer_handler
2018-08-16 23:11:22 -04:00
Matt Corallo
609054eae0
Handle duplicate funding transaction gracefully.
...
This can otherwise cause strange behavior, including a panic on
force_close_all_channels found by full_stack_target fuzzing.
2018-08-16 22:37:44 -04:00
Matt Corallo
b4078d992d
Fix handle_funding_created bug/TODO
...
The fuzzer was able to tickle this
2018-08-16 22:37:41 -04:00
Matt Corallo
0f965d319f
Fix bug in early-HTLC-fulfill handling
...
Caught by fuzzer. See new comments for more
2018-08-16 22:31:14 -04:00
Matt Corallo
9362450c61
[Router] Remove channels from nodes when the channel is failed
...
Found by fuzzer
2018-08-16 20:51:50 -04:00
Matt Corallo
7c24fea4fe
Handle only-path-overflows-fee in get_route and avoid PubKey::new()
...
Found by fuzzer
2018-08-16 20:51:50 -04:00
Matt Corallo
dde0ac4c29
Fix fee_base_msat overflowing entire fee range in RouteHint
2018-08-16 20:51:50 -04:00
Matt Corallo
0e6f028c3b
Err from get_route if the requested value is more than 21m BTC
...
This fixes a potential overflow panic.
2018-08-16 20:51:50 -04:00
Matt Corallo
2a0ae96fdf
Correct lowest_inbound_proportional_fee deduction in route finding
...
Found cause fuzzer was able to crash us if we don't
2018-08-16 20:51:50 -04:00
Matt Corallo
feb3db5ac8
Fix multiply-with-overflow panic in router
...
Found by fuzzer
2018-08-16 20:51:50 -04:00
Antoine Riard
0029f04fce
Logging interface
...
Implement error, warn, info, debug and trace macros, internally calling
an instance of Logger, and passing it to every main structures
Build-time or client-side filtering.
Issue #54
2018-08-17 00:01:15 +00:00
Antoine Riard
e752611247
Implement HandleError event with ErrorAction field
2018-08-12 00:36:48 +00:00
Matt Corallo
c52825d5f1
Fix UpdateAddHTLC serialize vec capacity default
2018-08-02 22:37:28 -04:00
Matt Corallo
3db5798246
Stub out ChaCha20 non-HMAC encryption/decryption in fuzztarget
2018-08-02 22:37:28 -04:00
Matt Corallo
482648bbf0
Fix fuzztarget insert_combine hash-collision panic
2018-08-02 22:26:44 -04:00
Matt Corallo
a6161210e2
Fix panic on reorg through the funding_locked-generating block
...
We had a TODO to handle "lost confirmation" in block_connected,
which we recently did in block_disconnected (calling force_shutdown
in case we get too many blocks disconnected) but didn't handle the
case where we had a simple reorg through the block that resulted in
us generating a funding_locked.
2018-08-02 22:26:44 -04:00
Matt Corallo
bd01f4e0c3
Fix fuzztarget ChannelKeys generation
2018-08-02 22:26:44 -04:00
Matt Corallo
2470812077
Fix types in Channel::funding_tx_confirmed_in
...
This should have no effect in a real system but was causing the
full_stack_target fuzz test to fail due to a block with a null hash
being disconnected.
2018-08-02 22:26:44 -04:00
Matt Corallo
cfc3fe3148
Fix panic!() in block_connected on unfunded channels ( fixes #42 )
...
The new full_stack_target fuzzing stuff was able to find this bug,
which gives me a bit of hope for full_stack_target's utility.
2018-08-02 22:26:44 -04:00
Matt Corallo
b17211ffe4
Fix non-HTLC-inclusion balance calculation (mark II)
2018-07-30 18:29:03 -04:00
Matt Corallo
7e255b5cf5
Handle invalid funding tx in channelmanager
2018-07-29 13:30:04 -04:00
Matt Corallo
1051e53ecc
Stop adding remote's payment_preimages to our channel monitor
2018-07-29 13:30:04 -04:00
Matt Corallo
b22519c0f9
Some match -> if let replacement
2018-07-29 13:30:04 -04:00
Matt Corallo
fb9f169279
Assert usize is 32 or 64 bits, as required in a TODO
2018-07-29 13:30:04 -04:00