diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h index 3a181e7a28..9a3bc9dd98 100644 --- a/src/libsystemd/sd-bus/bus-internal.h +++ b/src/libsystemd/sd-bus/bus-internal.h @@ -27,6 +27,7 @@ #include "bus-error.h" #include "bus-kernel.h" #include "bus-match.h" +#include "def.h" #include "hashmap.h" #include "list.h" #include "prioq.h" @@ -316,8 +317,13 @@ struct sd_bus { LIST_HEAD(sd_bus_track, tracks); }; +/* For method calls we time-out at 25s, like in the D-Bus reference implementation */ #define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) +/* For the authentication phase we grant 90s, to provide extra room during boot, when RNGs and such are not filled up + * with enough entropy yet and might delay the boot */ +#define BUS_AUTH_TIMEOUT ((usec_t) DEFAULT_TIMEOUT_USEC) + #define BUS_WQUEUE_MAX (192*1024) #define BUS_RQUEUE_MAX (192*1024) diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index 982af68c01..6e4bd541bf 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -660,7 +660,7 @@ int bus_socket_start_auth(sd_bus *b) { bus_get_peercred(b); b->state = BUS_AUTHENTICATING; - b->auth_timeout = now(CLOCK_MONOTONIC) + BUS_DEFAULT_TIMEOUT; + b->auth_timeout = now(CLOCK_MONOTONIC) + BUS_AUTH_TIMEOUT; if (sd_is_socket(b->input_fd, AF_UNIX, 0, 0) <= 0) b->hello_flags &= ~KDBUS_HELLO_ACCEPT_FD;