summaryrefslogtreecommitdiff
path: root/src/shared/bus-util.c
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2015-08-11 20:46:05 +0200
committerKay Sievers <kay@vrfy.org>2015-08-11 20:49:36 +0200
commitd4d00020d6ad855d65d31020fefa5003e1bb477f (patch)
tree312c253adaf27c87c111d20a116df40a6496e468 /src/shared/bus-util.c
parent3f1818cf70ac34cf93f1f033b4f1bbb7a89b3dff (diff)
sd-bus: do not connect to dbus-1 socket when kdbus is available
We should not fall back to dbus-1 and connect to the proxy when kdbus returns an error that indicates that kdbus is running but just does not accept new connections because of quota limits or something similar. Using is_kdbus_available() in libsystemd/ requires it to move from shared/ to libsystemd/. Based on a patch from David Herrmann: https://github.com/systemd/systemd/pull/886
Diffstat (limited to 'src/shared/bus-util.c')
-rw-r--r--src/shared/bus-util.c34
1 files changed, 0 insertions, 34 deletions
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
index aa87cd0910..0df0594ea3 100644
--- a/src/shared/bus-util.c
+++ b/src/shared/bus-util.c
@@ -2027,37 +2027,3 @@ int bus_path_decode_unique(const char *path, const char *prefix, char **ret_send
*ret_external = external;
return 1;
}
-
-bool is_kdbus_wanted(void) {
- _cleanup_free_ char *value = NULL;
-#ifdef ENABLE_KDBUS
- const bool configured = true;
-#else
- const bool configured = false;
-#endif
-
- int r;
-
- if (get_proc_cmdline_key("kdbus", NULL) > 0)
- return true;
-
- r = get_proc_cmdline_key("kdbus=", &value);
- if (r <= 0)
- return configured;
-
- return parse_boolean(value) == 1;
-}
-
-bool is_kdbus_available(void) {
- _cleanup_close_ int fd = -1;
- struct kdbus_cmd cmd = { .size = sizeof(cmd), .flags = KDBUS_FLAG_NEGOTIATE };
-
- if (!is_kdbus_wanted())
- return false;
-
- fd = open("/sys/fs/kdbus/control", O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
- if (fd < 0)
- return false;
-
- return ioctl(fd, KDBUS_CMD_BUS_MAKE, &cmd) >= 0;
-}