Commit Graph

4061 Commits

Author SHA1 Message Date
Laurent Raufaste
5cb1a84356 lnd: support space characters surrounding = in bitcoind configuration files
lnd can't detect bitcoind configuration if the config file has spaces around the = character, e.g.:
```
zmqpubrawblock = tcp://127.0.0.1:28332
zmqpubrawtx = tcp://127.0.0.1:28332
rpcuser = rpcuser
```
I had to dig into the source code to understand what was wrong.

This patch solves this problem, bitcoind's config parsing source code can be seen at https://github.com/bitcoin/bitcoin/blob/master/src/util.cpp
2018-03-31 16:06:00 -07:00
Olaoluwa Osuntokun
6be6b48e09
Merge pull request #840 from halseth/openchannel-csv-delay
Add CSV delay flag to openchannel
2018-03-31 16:05:08 -07:00
Matt Drollette
87333ba829 config: bind naked ports to localhost
If only a port is given as a config value for a listener we'll
default to only binding that port to localhost.
2018-03-31 16:00:56 -07:00
Olaoluwa Osuntokun
ffb1b65eca
Merge pull request #982 from cfromknecht/server-conns
server: cleanup persistent connection retries
2018-03-31 15:56:29 -07:00
Conner Fromknecht
7db7c9c493
lnd: correct docs in WatchNewChannel 2018-03-31 02:00:06 -07:00
Conner Fromknecht
3eb53467e0
fundingmanager_test: init WatchNewChannel 2018-03-31 02:00:05 -07:00
Conner Fromknecht
517135dd9a
lnd_test: use EnsureConnected in itests hot spots
Uses EnsureConnected when reconnecting nodes in:
 - switch offline delivery persistence
 - graph topology notifications
 - channel funding persistence
2018-03-31 02:00:05 -07:00
Conner Fromknecht
fa6271c8d4
travis: update to use make travis 2018-03-31 01:59:02 -07:00
Conner Fromknecht
5335c960f3
gotest: build local binaries for itests 2018-03-31 01:59:01 -07:00
Conner Fromknecht
c1389a5388
lntest: execute locally compiled binary 2018-03-31 01:59:01 -07:00
Conner Fromknecht
47aa56aad9
make/testing_flags: adds testing flags for targeting 2018-03-31 01:59:01 -07:00
Conner Fromknecht
1a36a2b1cb
Makefile: fix tab expansion and add timeout config 2018-03-31 01:59:01 -07:00
Conner Fromknecht
0449c0d50b
lntest/node: advertise external IP in itests 2018-03-31 00:51:13 -07:00
Conner Fromknecht
0d8f4f4be4
lntest/harness: harden ConnectEnsure
Alters the behavior of ConnectEnsure to initiate a connection
attempt in both directions. Additionally, the wait predicate only
returns true after cross checking both peer lists.
2018-03-31 00:51:12 -07:00
Conner Fromknecht
2490b9b6e3
server: cleanup persistent connection retries
This commits changes the behavior of our connection
reestablishment, and resolves some minor issues that
could lead to uncancelled requests or an infinite
connection loop.

 - Will not attempt to Remove connection requests with
   an ID of 0. This can happen for reconnect attempts
   that get scheduled, but have not started at the
   time the server cancels the connection requests.

 - Adds a per-peer cancellation channel, that is
   closed upon a successful inbound or outbound
   connection. The goroutine spwaned to handle the
   reconnect by the peerTerminationWatch now
   selects on this channel, and skips reconnecting
   if it is closed before the backoff matures.

 - Properly computes the backoff when no entry in
   persistentPeersBackoff is found. Previously, a
   value of 0 would be returned, cause all subsequent
   backoff attempts to use a backoff of 0.

 - Cancels a peers retries and remove connections
   immediately after receiving an inbound connection,
   to mimic the structure of OutboundPeerConnected.

 - Cancels all persistent connection requests after
   calling DisconnectPeers.

 - Allow additional connection attempts to peers, even if
   there already exists a pending connection attempt.
2018-03-31 00:51:12 -07:00
Olaoluwa Osuntokun
4480052cd6
server: ensure a default backoff is always used 2018-03-30 19:11:12 -07:00
Olaoluwa Osuntokun
956d20ebdc
funding+lnd: ensure we reconnect to new channel peers
In this commit, we fix a minor bug in the prior versions of lnd. Before
this commit, if we received a new inbound connection for channel
creation, the channel was created, and then the peer disconnected, we
wouldn't automatically reconnect.

In this commit we fix this issue by overloading the WatchNewChannel
method to also accept the peer's ID so we can add it to the set of
persistent connections.
2018-03-30 18:42:40 -07:00
Olaoluwa Osuntokun
d34c37f3dd
server: when constructing peer addr's attempt to locate proper port, fallback to default port
In this commit, we fix an existing bug within the codebase: if a peer
connected to us inbound, then we'd attempt to use the assigned port when
re-establishing a connection to them. We fix this issue in this commit
by adding a new method to look up any advertisements for the peer, and
use the specified port that matches our connection attempt. If we can't
find a proper advertisement, then we'll simply use the default peer
port.
2018-03-30 15:59:11 -07:00
Olaoluwa Osuntokun
71b8195ad0
funding: remove old TODO 2018-03-30 15:57:19 -07:00
Olaoluwa Osuntokun
b2e1d6988c
server: don't immediately add bootstrap peer to set of persistent connections 2018-03-30 15:16:18 -07:00
Olaoluwa Osuntokun
2526827b6d
test: modify sphinx replay test to force close the final channel
In this commit, we modify the sphinx replay test to actually force close
that final channel. We do this, as otherwise, we'll now reject the co-op
close attempt as the channel still has active HTLCs.
2018-03-30 14:53:05 -07:00
Olaoluwa Osuntokun
8d71ed2f64
lnwire: return pointer to ErrUnknownAddrType to ensure type switch in peer.go catches it
Related to #979.
2018-03-30 14:26:09 -07:00
Olaoluwa Osuntokun
9dee2ce8f2
lnwire: properly return UnknownMessage if we encounter an unknown message type 2018-03-30 14:25:27 -07:00
Olaoluwa Osuntokun
90636b49b2 server: properly format peer pubkey in NotifyWhenOnline logging msg
Fixes #978.
2018-03-30 13:15:49 -07:00
Olaoluwa Osuntokun
c5c23eb833
Merge pull request #974 from Roasbeef/invoice-expiry-fix
zpay32+rpc: ensure we can encode an expiry of math.MaxUint64, limit to 1 year in seconds
2018-03-30 13:12:53 -07:00
Olaoluwa Osuntokun
447a031435
peer: reject remote closes with active HTLCs
In this commit, we follow up to the prior commit by ensuring we won't
accept a co-op close request for a chennel with active HTLCs. When
creating a chanCloser for the first time, we'll check the set of HTLC's
and reject a request (by sending a wire error) if the target channel
still as active HTLC's.
2018-03-30 13:06:57 -07:00
Olaoluwa Osuntokun
ecbeca5f29
rpc: disallow attempting a co-op close of a channel with active HTLCs
In this commit, we fix a bug that at times could cause any dangling
HTLC's to be sent to miner's fees if a user attempted to close out a
channel cooperatively that still had pending HTLC's. We'll first prevent
this at the RPC level by rejecting any attempts to trigger a co-op
channel closure while a channel still have dangling HTLC's.
2018-03-30 12:51:01 -07:00
Olaoluwa Osuntokun
ef4512d1d8
rpc: limit the larger invoice expiry to 1 year
This is a follow up to the prior commit. In order to add an additional
layer of defense, we'll reject any expiry greater than 1 year.
2018-03-29 16:25:11 -07:00
Olaoluwa Osuntokun
10847170ee
zpay32: adjust uint64 encoding to account for math.MaxUnit64
In this commit, we fix a logic error in our routine for converting a
uint64 to/from base32. Before this commit, we assumed that the max
number of groups was 12. However, the math.MaxUint64 (1<<64 - 1) can
actually consume more than 12 groups with an extra set of bits. Before
this commit, we would panic when attempting to parse an invoice
generated like so:
  * addinvoice --amt 1337000 --expiry 99999999999999999

To fix this issue, we modify our logic to expect at most 13 groups.
Additionally, we've added a new test that would panic before applying
this commit.

Fixes #972.
2018-03-29 16:24:20 -07:00
Olaoluwa Osuntokun
a0fe4fb716
Merge pull request #968 from halseth/chanarb-doublespend
contractcourt/channel_arbitrator: ignore ErrDoubleSpend on force close
2018-03-29 16:11:38 -07:00
Olaoluwa Osuntokun
117441b7d0
Merge pull request #928 from adrienemery/python-docs
docs: encode macaroon in python grpc example
2018-03-29 15:36:30 -07:00
Olaoluwa Osuntokun
1a8bec4ed1
Merge pull request #967 from halseth/breachretribution-curve-nil
[mini] contractcourt/chain_watcher: don't print curve of DoubleTweak
2018-03-29 15:34:51 -07:00
Johan T. Halseth
d216416db8
contractcourt/channel_arbitrator: ignore ErrDoubleSpend on force close
This commit mitigates a problem within the ChannelArbitrator, where
after a restart we would start up in the state StateBroadcastCommit but
fail to broadcast out commitment because a conflicting transaction (most
likely our own commitment) was already broadcast. A more complete fix
for this case will be added later, but this commit let the
ChannelArbitrator continue, trying to close out the channel.
2018-03-29 11:15:41 +02:00
Johan T. Halseth
5bf5a823ff
contractcourt/chain_watcher: don't print curve of DoubleTweak 2018-03-29 11:11:54 +02:00
Olaoluwa Osuntokun
87d77a1b87
Merge pull request #962 from cfromknecht/makefile-dep
Makefile w/ dep
2018-03-28 20:07:19 -07:00
Conner Fromknecht
b13970da70
cmd/lncli: add commit version hook and print in version 2018-03-28 18:19:15 -07:00
Conner Fromknecht
70038754ff
version: append commit hash to version string 2018-03-28 18:19:15 -07:00
Conner Fromknecht
3d29e9dc66
lnd: add Commit hook for git hash -ldflag 2018-03-28 18:19:15 -07:00
Conner Fromknecht
e549a79eb3
Makefile: update #689 to use dep in Makefile
This commit continues the work started by @sp4ke, in createing
a simple Makefile for lnd. The following commands are included:

 * make - builds everything (deps, lnd, and lncli) from scratch
 * make deps - installs dep if needed, then runs dep ensure
 * make install - builds lnd and lncli

 * make check - runs unit and itests
 * make unit - runs the unit tests for all packages
 * make itest - installs lnd and runs integration tests

 * make fmt - go fmt's all files
2018-03-28 18:19:15 -07:00
Olaoluwa Osuntokun
0162b93e13
Merge pull request #957 from cfromknecht/bump-ltc-dust-limit
chainregistery: correct ltc dust limit
2018-03-28 16:10:42 -07:00
Olaoluwa Osuntokun
90a13aedcf
Merge pull request #954 from halseth/remove-breacharbiter-signal
[mini] rpcserver: remove uneccessary signal to breacharbiter at force close
2018-03-28 15:21:42 -07:00
Olaoluwa Osuntokun
41ea771989
Merge pull request #953 from cfromknecht/mark-open-in-mem
channeldb: update ShortChanID in-mem during MarkAsOpen
2018-03-28 15:19:56 -07:00
Corné Plooy
c2e5ba3b43 config: determine the bitcoind chain directory from the chain params instead of the config file. This is more reliable in case the chain was selected with a bitcoind commandline option instead of a line in the config file. 2018-03-28 15:19:00 -07:00
ftufek
6c00de1865 neutrino: stop the chainservice before node DB
When in neutrino mode, it seems that the node is not closed during the cleanup, so if a block is received between the time the DB is closed and the server is closed (or if the process is still running after the server is shutdown like on a mobile app), the code panic's and crashes with:

panic: unable to write block header: database not open
goroutine 41 [running]:
github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).handleHeadersMsg(0x9a1ec0a0, 0x9a3e6030)
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:1164 +0x2224
github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).blockHandler(0x9a1ec0a0)
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:347 +0x3b4
created by github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).Start
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:200 +0xe8


Here's a log of shutdown before the change:
[INF] LTND: Gracefully shutting down the server...
[INF] FNDG: Funding manager shutting down
[INF] SPHX: Block epoch canceled, decaying hash log shutting down
[INF] CRTR: Channel Router shutting down
[INF] CRTR: FilteredChainView stopping
[INF] HSWC: HTLC Switch shutting down
[INF] UTXN: UTXO nursery shutting down
[INF] BRAR: Breach arbiter shutting down
[INF] DISC: Authenticated Gossiper is stopping
[INF] CNCT: Stopping ChainArbitrator
[INF] LTND: Shutdown complete


And here's a log of shutdown after the change:
[INF] LTND: Gracefully shutting down the server...
[INF] FNDG: Funding manager shutting down
[INF] SPHX: Block epoch canceled, decaying hash log shutting down
[INF] CRTR: Channel Router shutting down
[INF] CRTR: FilteredChainView stopping
[INF] HSWC: HTLC Switch shutting down
[INF] UTXN: UTXO nursery shutting down
[INF] BRAR: Breach arbiter shutting down
[INF] DISC: Authenticated Gossiper is stopping
[INF] CNCT: Stopping ChainArbitrator
[INF] LTND: Shutdown complete
[INF] BTCN: Block manager shutting down
[INF] BTCN: Address manager shutting down
2018-03-28 15:18:07 -07:00
Alex Bosworth
1614fe0fa6 htlcswitch: trivial whitespace
Missing space results in `unable to get channel links: unable to locate channel link bydestination hop id` log messages
2018-03-28 15:16:06 -07:00
Matt Campbell
87c1755637 github: add GitHub issue template
Fixes #913.
2018-03-28 15:02:07 -07:00
Olaoluwa Osuntokun
51ae820a0c
Merge pull request #959 from halseth/notifier-order
Add spend notification to client map before recording it with backend
2018-03-28 15:01:02 -07:00
Olaoluwa Osuntokun
d5b218b286
Merge pull request #911 from nalinbhardwaj/litecoin
Litecoin fixes
2018-03-28 14:59:16 -07:00
Chakib Benziane
2f84d8ee2b
add a basic makefile
Included commands:

- deps: install glide and dependencies
- install: install lnd
- fmt: run `go fmt` excluding vendor
- test: run `go test` as per documentation
2018-03-28 03:07:49 -07:00
Johan T. Halseth
13be19c9ec
chainntnfs/bitcoind: move NotifySpent to after recording the outpoint
This commit moves the call to the bitcoind backend to start watching an
outpoint for spentness to after we have recorded the outpoint in our
list of clients. This is done to avoid a race that we saw using the btcd
backend, and it is probable that it can also happen using bitcoind.
2018-03-28 10:22:41 +02:00