Christian Decker
906bfef4fd
changelog: Add plugin JSON-RPC passthrough
...
Signed-off-by: Christian Decker <@cdecker>
2018-12-05 23:15:59 +00:00
Christian Decker
83ecb61890
plugin: Ignore directories in the plugin-directory
...
They pass the executable test, but aren't really executable.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2018-12-05 23:15:59 +00:00
Michael Hawkins
561a66354b
Man page for lightning-disconnect created
2018-12-05 01:26:01 +00:00
Rusty Russell
111d6df442
plugins: make log prefix the basename.
...
It's not perfect if they have multiple with same name, but better than number.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
Rusty Russell
aa4284a35e
docs: document plugin options.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
Rusty Russell
eb03b33655
plugins: add and install built-in plugin dir, add clear and disable options.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
Rusty Russell
ac5002a79e
pytest: add hack to force options into a given order.
...
Needed for testing plugin options which are order-senditive.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
Rusty Russell
a4287f99fd
lightningd: add --plugin-dir option to load directory full of plugins.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-12-05 01:22:55 +01:00
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