file: access exec timeout via daemon ops structure
Since the plugin is not linked, but dlopen()'d with RTLD_LOCAL, we cannot access global rpcd variables but need to access them via the common ops structure symbol. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
7235f34895
commit
3aa81d0dfa
1 changed files with 5 additions and 1 deletions
6
file.c
6
file.c
|
@ -53,6 +53,8 @@
|
||||||
us.stream.notify_state = rpc_file_##name##_state_cb; \
|
us.stream.notify_state = rpc_file_##name##_state_cb; \
|
||||||
ustream_fd_init(&us, fd);
|
ustream_fd_init(&us, fd);
|
||||||
|
|
||||||
|
static const struct rpc_daemon_ops *ops;
|
||||||
|
|
||||||
struct rpc_file_exec_context {
|
struct rpc_file_exec_context {
|
||||||
struct ubus_context *context;
|
struct ubus_context *context;
|
||||||
struct ubus_request_data request;
|
struct ubus_request_data request;
|
||||||
|
@ -690,7 +692,7 @@ rpc_file_exec_run(const char *cmd,
|
||||||
uloop_process_add(&c->process);
|
uloop_process_add(&c->process);
|
||||||
|
|
||||||
c->timeout.cb = rpc_file_exec_timeout_cb;
|
c->timeout.cb = rpc_file_exec_timeout_cb;
|
||||||
uloop_timeout_set(&c->timeout, rpc_exec_timeout);
|
uloop_timeout_set(&c->timeout, *ops->exec_timeout);
|
||||||
|
|
||||||
close(opipe[1]);
|
close(opipe[1]);
|
||||||
close(epipe[1]);
|
close(epipe[1]);
|
||||||
|
@ -742,6 +744,8 @@ rpc_file_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
|
||||||
.n_methods = ARRAY_SIZE(file_methods),
|
.n_methods = ARRAY_SIZE(file_methods),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ops = o;
|
||||||
|
|
||||||
return ubus_add_object(ctx, &obj);
|
return ubus_add_object(ctx, &obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue