mirror of
https://github.com/systemd/systemd
synced 2024-10-14 20:17:52 +00:00
busctl: add --timeout= option to specify method call timeout
This commit is contained in:
parent
3805157836
commit
a44b10818a
|
@ -216,6 +216,22 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>--timeout=</option><replaceable>SECS</replaceable></term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>When used with the <command>call</command> command
|
||||||
|
specifies the maximum time to wait for method call
|
||||||
|
completion. If no time unit is specified assumes
|
||||||
|
seconds. The usual other units are understood, too (ms, us,
|
||||||
|
s, min, h, d, w, month, y). Note that this timeout does not
|
||||||
|
apply if <option>--expect-reply=no</option> is used as the
|
||||||
|
tool does not wait for any reply message then. When not
|
||||||
|
specified or when set to 0 the default of
|
||||||
|
<literal>25s</literal> is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<xi:include href="user-system-options.xml" xpointer="user" />
|
<xi:include href="user-system-options.xml" xpointer="user" />
|
||||||
<xi:include href="user-system-options.xml" xpointer="system" />
|
<xi:include href="user-system-options.xml" xpointer="system" />
|
||||||
<xi:include href="user-system-options.xml" xpointer="host" />
|
<xi:include href="user-system-options.xml" xpointer="host" />
|
||||||
|
|
|
@ -56,6 +56,7 @@ static bool arg_verbose = false;
|
||||||
static bool arg_expect_reply = true;
|
static bool arg_expect_reply = true;
|
||||||
static bool arg_auto_start = true;
|
static bool arg_auto_start = true;
|
||||||
static bool arg_allow_interactive_authorization = true;
|
static bool arg_allow_interactive_authorization = true;
|
||||||
|
static usec_t arg_timeout = 0;
|
||||||
|
|
||||||
static void pager_open_if_enabled(void) {
|
static void pager_open_if_enabled(void) {
|
||||||
|
|
||||||
|
@ -1494,7 +1495,7 @@ static int call(sd_bus *bus, char *argv[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_bus_call(bus, m, 0, &error, &reply);
|
r = sd_bus_call(bus, m, arg_timeout, &error, &reply);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("%s", bus_error_message(&error, r));
|
log_error("%s", bus_error_message(&error, r));
|
||||||
return r;
|
return r;
|
||||||
|
@ -1627,7 +1628,7 @@ static int set_property(sd_bus *bus, char *argv[]) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_bus_call(bus, m, 0, &error, NULL);
|
r = sd_bus_call(bus, m, arg_timeout, &error, NULL);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("%s", bus_error_message(&error, r));
|
log_error("%s", bus_error_message(&error, r));
|
||||||
return r;
|
return r;
|
||||||
|
@ -1659,7 +1660,8 @@ static int help(void) {
|
||||||
" --expect-reply=BOOL Expect a method call reply\n"
|
" --expect-reply=BOOL Expect a method call reply\n"
|
||||||
" --auto-start=BOOL Auto-start destination service\n"
|
" --auto-start=BOOL Auto-start destination service\n"
|
||||||
" --allow-interactive-authorization=BOOL\n"
|
" --allow-interactive-authorization=BOOL\n"
|
||||||
" Allow interactive authorization for operation\n\n"
|
" Allow interactive authorization for operation\n"
|
||||||
|
" --timeout=SECS Maximum time to wait for method call completion\n\n"
|
||||||
"Commands:\n"
|
"Commands:\n"
|
||||||
" list List bus names\n"
|
" list List bus names\n"
|
||||||
" status SERVICE Show service name status\n"
|
" status SERVICE Show service name status\n"
|
||||||
|
@ -1699,6 +1701,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||||
ARG_EXPECT_REPLY,
|
ARG_EXPECT_REPLY,
|
||||||
ARG_AUTO_START,
|
ARG_AUTO_START,
|
||||||
ARG_ALLOW_INTERACTIVE_AUTHORIZATION,
|
ARG_ALLOW_INTERACTIVE_AUTHORIZATION,
|
||||||
|
ARG_TIMEOUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct option options[] = {
|
static const struct option options[] = {
|
||||||
|
@ -1723,6 +1726,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||||
{ "expect-reply", required_argument, NULL, ARG_EXPECT_REPLY },
|
{ "expect-reply", required_argument, NULL, ARG_EXPECT_REPLY },
|
||||||
{ "auto-start", required_argument, NULL, ARG_AUTO_START },
|
{ "auto-start", required_argument, NULL, ARG_AUTO_START },
|
||||||
{ "allow-interactive-authorization", required_argument, NULL, ARG_ALLOW_INTERACTIVE_AUTHORIZATION },
|
{ "allow-interactive-authorization", required_argument, NULL, ARG_ALLOW_INTERACTIVE_AUTHORIZATION },
|
||||||
|
{ "timeout", required_argument, NULL, ARG_TIMEOUT },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1856,6 +1860,15 @@ static int parse_argv(int argc, char *argv[]) {
|
||||||
arg_allow_interactive_authorization = !!r;
|
arg_allow_interactive_authorization = !!r;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ARG_TIMEOUT:
|
||||||
|
r = parse_sec(optarg, &arg_timeout);
|
||||||
|
if (r < 0) {
|
||||||
|
log_error("Failed to parse --timeout= parameter.");
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue