Rusty Russell
31830ea6bb
doc: Use subsections for option types.
...
And drive-by fix "if it's seems" to "if it seems".
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
Christian Decker
d7e94a9386
plugin: Iterate over the options from a plugin using the tok->size
...
I had this really contorted way of iterating over options that could
cause valgrind to choke. This is the much more intuitive way to
iterate.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
b8a1445317
plugin: Make plugin_kill a printf-like function
...
Suggested-by: Rusty Russell <@rustyrussell>
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
82393036e3
plugin: Update documentation of the rpcmethods
...
Suggested-by: Lisa Neigut <@niftynei>
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
1d75a70995
pytest: Add a test for the JSON-RPC passthrough
...
Tests JSON-RPC registration, as well as success and failures.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
e625fd7e82
plugin: Map results back to the incoming JSON-RPC request
...
The final step in the JSON-RPC passthrough: map the result we got from
the plugin back to the original request we got from the client.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
7c93cf00bb
plugin: Dispatch incoming RPC calls to appropriate plugin
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
a0f6a82a0b
plugin: Make memleak happy
...
List element structs must have the list_node as their first element.
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
bf89d86ba8
plugin: Plugins need a list of methods they registered
...
This will be used in the next commit to dispatch calls to the correct
plugin.
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
a71208b2a0
plugin: Remove added JSON-RPC methods if a plugin gets killed
...
Removes the method from the dispatch table, leaving a NULL entry
currently.
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
7de4c40b77
plugin: Add plugin rpcmethods to the JSON-RPC interface
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
3e1138951b
plugin: Add pointer to jsonrpc so we can add new methods
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-02 22:55:47 +00:00
Christian Decker
83775e7cea
jsonrpc: Split the jsonrpc object creation from starting to listen
...
This is needed in order to be able to add methods while initializing
the plugins, but before actually moving to the config dir and starting
to listen.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
01c7bc5884
jsonrpc: Make an explicit jsonrpc struct
...
This wraps the listener, a separate log and the registered
commands. This is mainly needed once we dynamically add
sjson_command`s to the JSON-RPC.
2018-12-02 22:55:47 +00:00
Christian Decker
0f72e0bce8
plugin: The example plugin can now return errors
...
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
1e139e412b
plugin: Allow both array as well as object params in example plugin
...
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-02 22:55:47 +00:00
Christian Decker
a4ded47d34
plugin: Fix memory leak when requests are done
...
We weren't cleaning the requests we fulfilled, so this does that :-)
2018-12-02 22:55:47 +00:00
arowser
3ba751797b
add needed include file
2018-11-29 23:42:50 +00:00
Christian Decker
4d95bb0539
pytest: Mark test_reserve_enforcement as flaky
...
It has been causing a lot of Travis failures due to a presumed memory
leak:
```
Exception: Node /tmp/ltests-fhjg26a2/test_reserve_enforcement_1/lightning-2/ has memory leaks: [{'label': 'lightningd/json_stream.c:48:struct json_stream', 'backtrace': ['ccan/ccan/tal/tal.c:435 (tal_alloc_)', 'lightningd/json_stream.c:48 (new_json_stream)', 'lightningd/jsonrpc.c:90 (jcon_new_json_stream)', 'lightningd/jsonrpc.c:444 (attach_json_stream)', 'lightningd/jsonrpc.c:455 (json_start)', 'lightningd/jsonrpc.c:464 (json_stream_success)', 'lightningd/pay.c:932 (json_sendpay_on_resolve)', 'lightningd/pay.c:444 (payment_store)', 'lightningd/pay.c:540 (payment_failed)', 'lightningd/peer_htlcs.c:143 (fail_out_htlc)', 'lightningd/peer_htlcs.c:360 (destroy_hout_subd_died)', 'ccan/ccan/tal/tal.c:235 (notify)', 'ccan/ccan/tal/tal.c:395 (del_tree)', 'ccan/ccan/tal/tal.c:405 (del_tree)', 'ccan/ccan/tal/tal.c:405 (del_tree)', 'ccan/ccan/tal/tal.c:479 (tal_free)', 'ccan/ccan/io/io.c:451 (io_close)', 'lightningd/subd.c:500 (sd_msg_read)', 'lightningd/subd.c:302 (read_fds)', 'ccan/ccan/io/io.c:59 (next_plan)', 'ccan/ccan/io/io.c:395 (do_plan)', 'ccan/ccan/io/io.c:405 (io_ready)', 'ccan/ccan/io/poll.c:310 (io_loop)', 'lightningd/lightningd.c:769 (main)'], 'parents': ['lightningd/jsonrpc.c:681:struct json_connection', 'common/configdir.c:29:char[]'], 'value': '0x125be08'}]
```
Signed-off-by: Christian Decker <@cdecker>
2018-11-29 23:01:11 +00:00
Christian Decker
522c3039ec
pytest: Pretty print the memleak output in tests
...
It wasn't JSON formatted either so there was no nice pretty-printing
way. This jsonifies and pretty prints it.
Signed-off-by: Christian Decker <@cdecker>
2018-11-29 23:01:11 +00:00
Christian Decker
45e1f09714
tools: Added .clang-format for formatting
...
This is the `.clang-format` file I've been using for a while now. I
think that we might save on formatting nits if we tell new
contributors to use `clang-format`
2018-11-29 23:01:11 +00:00
Christian Decker
685a76e714
pytest: test_closing_different_fees no longer requires DEVELOPER=1
...
We no longer use `dev-override-fees` to set the fees, rather we
instrument the `bitcoind` proxy to return the desired feerates.
Signed-off-by: Christian Decker <@cdecker>
2018-11-29 23:01:11 +00:00
Christian Decker
cc7a523cab
git: Add codeowners file to automatically request code reviews
2018-11-29 23:01:11 +00:00
Christian Decker
da465f0fdd
plugin: Exit if we fail to start a plugin
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
879f9b7986
plugin: Make a common directory of plugins in contrib
...
No need to create a directory each.
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
e27b2ea69b
pytest: Add a test for the plugin option passthrough
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
c3d2caafa2
pytest: Use the pytest-timeout plugin to kill tasks
...
This will kill a test that was running for 550 seconds, so that we
get a traceback before the travis inactivity timeout of 600 seconds
kicks in. The traceback should show us which test got stuck and where
it got stuck.
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
f520052b95
pytest: Add two more dependencies
...
pytest was an indirect dependency so far, making that one
explicit, and the timeout plugin should allow us to kill a stuck test
before travis kills it, and thus allow us to see where it got stuck.
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
bef1812b9b
changelog: Add missing Changelog entry from PR #2075
...
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
Christian Decker
0040673e90
docker: Update pytest dependencies in the builder image
...
Adds timeout and progress to the output.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-11-26 22:53:37 +00:00
Christian Decker
c90be02372
docs: Replace example method params with a long description
...
This matches the `verbose` field in `struct json_command`.
Signed-off-by: Christian Decker <@cdecker>
2018-11-26 22:53:37 +00:00
arowser
77832c9400
enable add_steal_notifiers only support backtrace library
2018-11-26 22:48:39 +00:00
ZmnSCPxj
e74349c506
doc/lightning-pay.7.txt: Clarify randomization by pay
command.
2018-11-26 22:25:25 +00:00
Rusty Russell
95e47cdac2
channeld: accept update_fee before funding_locked.
...
As long as they don't try to send commitment_signed, it's OK. Just a bit
weird.
Closes : #2100
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-23 00:47:05 +01:00
Jonas Nick
da431333b8
Fix default lightning datadir in lightningd-config doc
2018-11-23 00:46:14 +01:00
Rusty Russell
1d7b287439
pytest: speed up test_restart_many_payments when !DEVELOPER.
...
Because gossip in this case takes up to a minute, this test took 10
minutes. The workaround is to do the waiting-for-gossip all at once.
Now it takes 362 seconds.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
d9d762170a
memleak: don't get stuck if per-peer daemons die.
...
Instead, continue with the next phase. I would guess this is the cause
of timeouts under Travis.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
8fb1b609ce
closingd: handle our own memleak detection.
...
Unlike other daemons, closingd doesn't listen to the master, but runs
simply to its own beat. So instead of responding to the JSON dev_memleak
command, we always check for memory leaks, and make sure that the
python tests fail if they see MEMLEAK in the logs.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
55306fc3eb
onchaind: wire up dev_memleak.
...
For onchaind we need to remove globals from memleak consideration;
we also change the htlc pointer to an htlc copy, which simplifies
things as well.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
d3ea9bf8bf
channeld: wire up dev_memleak.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
6094a95132
channeld: don't leak messages, and free init-only variables.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
a42c8bfb38
openingd: wire up dev_memleak.
...
This is a bit different from the other cases: we need to iterate through
the peers and ask all the ones in openingd.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
6da379631f
hsmd: wire up dev_memleak.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
1430036684
connectd: wire up dev_memleak.
...
We need several notleak() annotations here:
1. The temporary structure which is handed to retry_peer_connected().
It's waiting for the master to respond to our connect_reconnected
message.
2. We don't keep a pointer to the io_conn for a peer, so we need to
mark those as not being a leak.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
a1c675edb3
connectd: free proxyaddr after use.
...
Otherwise the next patch gives:
MEMLEAK: 0x895b3ac
label=connectd/gen_connect_wire.c:65:struct wireaddr
backtrace:
ccan/ccan/tal/tal.c:435 (tal_alloc_)
connectd/gen_connect_wire.c:65 (fromwire_connectctl_init)
connectd/connectd.c:1103 (connect_init)
connectd/connectd.c:1414 (recv_req)
common/daemon_conn.c:31 (handle_read)
ccan/ccan/io/io.c:59 (next_plan)
ccan/ccan/io/io.c:395 (do_plan)
ccan/ccan/io/io.c:405 (io_ready)
ccan/ccan/io/poll.c:310 (io_loop)
connectd/connectd.c:1499 (main)
parents:
connectd/connectd.c:1485:struct daemon
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
b522b35e01
connectd: rename peer_reconnected local var for clarity.
...
We call it 'pr' in the retry_peer_connected callback, so call it that
here too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
5b7ef7ab49
connectd: don't leak init message.
...
It's a very bounded leak, since we can only have one and it's
connected to the peer lifetime, but we don't need it.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
ab735dcbe6
gossipd: wire up memleak detection.
...
For simplicity we dump leaks to logs, and just return a bool to master.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
78771ca371
gossipd: mark timers as not being leaks.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00
Rusty Russell
2debbb0a00
common/subdaemon: helpers for dumping memleaks in subdaemons.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-11-22 05:15:42 +00:00