Commit graph

247 commits

Author SHA1 Message Date
Matt Corallo
dfbcacfe0e Split channel_reserve_test so we don't rely on unfilled Err actions
Currently channel_reserve_test sends a garbage update_add_htlc
message and then relies on it being silently ignored to continue
using the channel. This shouldn't be the case, so take the easy
way out and split the test in two, at first not delivering the
bogus update_add_htlc and then delivering it, but not running the
rest of the test.
2018-11-22 23:57:54 -05:00
Matt Corallo
241b0cb449
Merge pull request #246 from TheBlueMatt/2018-11-fuzz-crash-redux
Several fuzz-found bugfixes.
2018-11-21 16:17:01 -05:00
Matt Corallo
f2280e580a Fix two compiler warnings introduced in a51dbb4a4d 2018-11-20 16:34:40 -05:00
Matt Corallo
90816dd9d8 Move a ton of Channel functions to ChannelError from HandleError
This is a big patch, but its all very mechanical, everything here
should be pretty obvious, and it all has to happen at once due to a
few common utility functions all having the same return type.

Note that this exposes a race in channel closure where we may
access a channel via some non-peer-specific mechanism like
forwarding an HTLC or sending a payment during the time between
the channel gave us a Close error and expected us to never call it
again and the time we actually removed it from the channel_state
set outside of the internal_* handler.
2018-11-20 16:33:32 -05:00
Matt Corallo
86944d34a1
Merge pull request #231 from philipr-za/philip-204-check-commitment-transaction-fee
Check funder can afford commitment transaction fee when receiving update_fee
2018-11-20 16:29:21 -05:00
Matt Corallo
7efaf2e8ac
Merge pull request #230 from ariard/handle_sizeable_push_msat
Handle sizeable push msat (fix #195) + handle two first per_commitment_point + keys interface tests
2018-11-20 15:51:27 -05:00
Antoine Riard
3a7b40e494 Add test_static_output_closing_tx 2018-11-19 20:51:26 -05:00
Antoine Riard
890d1768b7 Add test_dynamic_spendable_outputs_local_htlc_*
Cover both local HTLC-Timeout/Success case
2018-11-19 20:51:17 -05:00
Antoine Riard
b6b5decfa9 Add test_static_spendable_outputs_justice_tx_revoked_htlc*
Cover both HTLC-Timeout/Success cases
2018-11-19 20:42:55 -05:00
Antoine Riard
73415a8951 Add test_static_spendable_outputs_justice_tx_revoked_commitment_tx 2018-11-19 20:42:55 -05:00
Antoine Riard
e22220d79f Add test_claim_on_remote_sizeable_push_msat
Contrary to sizeable push_msat on local
commitment tx, the output go to a P2WPKH
2018-11-19 20:42:52 -05:00
Antoine Riard
3518f1f85d Add test_static_spendable_outputs_preimage_tx
Aims to covered both keysinterace preimage tx case and
detection of second remote commitment tx

Split DynamicDescriptor between *P2WSH and *P2WKH
2018-11-19 20:39:38 -05:00
Matt Corallo
e67d8c6314 Don't unwrap() get_channel_update result in HTLC router
This fixes a bug in 78232f2aed found
by fuzzer - if the channel isn't yet fully established we will call
get_channel_update(), get an Err result, and then unwrap() it. If
this actually happens it means someone on the network is making up
short_channel_ids and trying to route over them, but that shouldn't
result in us crashing
2018-11-18 16:17:06 -05:00
Matt Corallo
b14baa03ab
Merge pull request #253 from TheBlueMatt/2018-11-misc-tweaks
Misc Tweaks
2018-11-16 11:47:50 -05:00
Antoine Riard
f053169363 Add test_claim_sizeable_push_msat
Aims to cover both claiming of sizeable_push_msat and
spendable output generation for to_local output
2018-11-15 19:08:27 -05:00
Matt Corallo
4a697dbdf2 Expand test_funding_peer_disconnect somewhat by being non-symmetric
I thought I found a bug in one-side-funded-first reconnect, but
seems I can't reproduce it here. Either way worth improving the
test coverage.
2018-11-15 12:22:16 -05:00
Philip Robinson
a51dbb4a4d Check affordability of new fee during update_fee call #204 2018-11-14 14:14:10 +02:00
Steven Roose
7ff7561f2d Update to rust-bitcoin v0.15 2018-11-14 11:43:54 +00:00
Matt Corallo
3c44d6beca
Merge pull request #248 from TheBlueMatt/2018-11-monitor-test-split
Split up channel_monitor_network_test a little bit
2018-11-14 09:20:54 +10:30
Matt Corallo
44f56f84b6 Split up channel_monitor_network_test a little bit 2018-11-09 15:01:53 +10:30
Antoine Riard
fa2ac8cd84 Add test justice tx on revoked htlc_success
Extend channel_monitor_network_test to cover
all check_spend_remote_htlc cases
2018-11-08 02:21:28 +00:00
Yuntai Kyong
05b580e10b fail channel when BADONION is not set. 2018-11-05 21:10:17 +09:00
Matt Corallo
0e098d4bab
Merge pull request #241 from TheBlueMatt/2018-10-peer-free-panic
Fix pre-noise outbound peer disconnect panic found by fuzzer
2018-11-02 23:59:59 -04:00
Matt Corallo
182affc03b Test the various shutdown handling updates 2018-11-02 22:26:51 -04:00
Matt Corallo
224fb05cc5 Rebroadcast shutdown on channel_reestablish (and reprocess them) 2018-11-02 22:26:51 -04:00
Matt Corallo
78232f2aed Fail incoming HTLCs sent after we start shutdown, not the chan 2018-11-02 22:26:51 -04:00
Matt Corallo
b030e84ad8 Add logging for (dis)connect in peer_handler/channelmanager 2018-11-02 10:45:29 -04:00
Matt Corallo
a11e27d20e Send closing_signed when appropriate as pending HTLCs clear 2018-11-01 17:08:53 -04:00
Matt Corallo
4eb8a4905c Use ChannelError in shutdown handling, clean up, impl err actions 2018-11-01 13:50:03 -04:00
Matt Corallo
11776dbb63 Add warnings reminding users to use SegWit funding inputs 2018-11-01 13:50:03 -04:00
Schalk van Heerden
a0be4d1758 Added config interface to allow users to specify channel limits 2018-10-31 15:45:30 -04:00
Matt Corallo
9189d0e61d Require at least 1k sat for outbound channels and meet BTC's dust 2018-10-31 15:45:30 -04:00
Matt Corallo
64bd2eaa7f Give ManyChannelMonitor a logger and trace add_update events 2018-10-29 14:26:05 -04:00
Matt Corallo
6ed5a829bb Fix + test disconnect/reconnect prior to FundingLocked 2018-10-27 09:58:10 -04:00
Matt Corallo
7f91572e2e Add very basic test of ChannelManager serialization round-trip 2018-10-27 09:58:10 -04:00
Matt Corallo
a2fb3ccc08 Implement and document Channel/ChannelManager (de)serialization 2018-10-27 09:58:10 -04:00
Matt Corallo
74cec623fd Add a BIG lock to ChannelManager
During normal operation we should never need to take this, so we
use a RwLock that allows normal parallelism until we want to
serialize out our ChannelManager, at which point we can take the
write-mode lock.
2018-10-27 09:42:04 -04:00
Matt Corallo
bb43b98e8f Store [u8; 32]s instead of SharedSecrets (for deserialization) 2018-10-27 09:42:04 -04:00
Matt Corallo
c0c139cdc2 Fix and test update_add_htlc but disconnect pre-commitment_signed 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
e361fed0f1 Integrate KeysInterface to ChannelManager with Arc 2018-10-27 09:42:04 -04:00
Antoine Riard
d33cb3cca5 Add a KeysInterface which provides keys from user
Move ChannelKeys into keysinterface for generate a set of it from
master_seed and change return type to panic on bogus data
2018-10-27 09:34:45 -04:00
Yuntai Kyong
f133554697 Add PaymentFailReason for fail_htlc_backwards
to indicate fail reason after a PaymentReceived event
2018-10-25 21:24:53 +09:00