chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: rewind message before forwarding it
[elogind.git]
/
src
/
core
/
dbus.c
diff --git
a/src/core/dbus.c
b/src/core/dbus.c
index 2f313adec7346a9f1cb7eefc6e6f2690b896cbf9..e000cccd1110cd16d221179fb95c4c4adbaba54f 100644
(file)
--- a/
src/core/dbus.c
+++ b/
src/core/dbus.c
@@
-20,7
+20,6
@@
***/
#include <sys/epoll.h>
***/
#include <sys/epoll.h>
-#include <sys/timerfd.h>
#include <errno.h>
#include <unistd.h>
#include <errno.h>
#include <unistd.h>
@@
-44,7
+43,7
@@
#include "bus-internal.h"
#include "selinux-access.h"
#include "bus-internal.h"
#include "selinux-access.h"
-#define CONNECTIONS_MAX
512
+#define CONNECTIONS_MAX
4096
static void destroy_bus(Manager *m, sd_bus **bus);
static void destroy_bus(Manager *m, sd_bus **bus);
@@
-89,15
+88,19
@@
static int signal_agent_released(sd_bus *bus, sd_bus_message *message, void *use
manager_notify_cgroup_empty(m, cgroup);
manager_notify_cgroup_empty(m, cgroup);
- if (m->running_as == SYSTEMD_SYSTEM && m->system_bus) {
- /* If we are running as system manager, forward the
- * message to the system bus */
+ /* only forward to system bus if running as system instance */
+ if (m->running_as != SYSTEMD_SYSTEM || !m->system_bus)
+ return 0;
- r = sd_bus_send(m->system_bus, message, NULL);
- if (r < 0)
- log_warning_errno(r, "Failed to forward Released message: %m");
- }
+ r = sd_bus_message_rewind(message, 1);
+ if (r < 0)
+ goto exit;
+ r = sd_bus_send(m->system_bus, message, NULL);
+
+exit:
+ if (r < 0)
+ log_warning_errno(r, "Failed to forward Released message: %m");
return 0;
}
return 0;
}
@@
-1192,12
+1195,12
@@
int bus_track_coldplug(Manager *m, sd_bus_track **t, char ***l) {
return r;
}
return r;
}
-int bus_verify_manage_unit_async(Manager *m, sd_bus_message *call, sd_bus_error *error) {
+int bus_verify_manage_unit
s
_async(Manager *m, sd_bus_message *call, sd_bus_error *error) {
return bus_verify_polkit_async(call, CAP_SYS_ADMIN, "org.freedesktop.systemd1.manage-units", false, UID_INVALID, &m->polkit_registry, error);
}
/* Same as bus_verify_manage_unit_async(), but checks for CAP_KILL instead of CAP_SYS_ADMIN */
return bus_verify_polkit_async(call, CAP_SYS_ADMIN, "org.freedesktop.systemd1.manage-units", false, UID_INVALID, &m->polkit_registry, error);
}
/* Same as bus_verify_manage_unit_async(), but checks for CAP_KILL instead of CAP_SYS_ADMIN */
-int bus_verify_manage_unit_async_for_kill(Manager *m, sd_bus_message *call, sd_bus_error *error) {
+int bus_verify_manage_unit
s
_async_for_kill(Manager *m, sd_bus_message *call, sd_bus_error *error) {
return bus_verify_polkit_async(call, CAP_KILL, "org.freedesktop.systemd1.manage-units", false, UID_INVALID, &m->polkit_registry, error);
}
return bus_verify_polkit_async(call, CAP_KILL, "org.freedesktop.systemd1.manage-units", false, UID_INVALID, &m->polkit_registry, error);
}
@@
-1208,3
+1211,7
@@
int bus_verify_manage_unit_files_async(Manager *m, sd_bus_message *call, sd_bus_
int bus_verify_reload_daemon_async(Manager *m, sd_bus_message *call, sd_bus_error *error) {
return bus_verify_polkit_async(call, CAP_SYS_ADMIN, "org.freedesktop.systemd1.reload-daemon", false, UID_INVALID, &m->polkit_registry, error);
}
int bus_verify_reload_daemon_async(Manager *m, sd_bus_message *call, sd_bus_error *error) {
return bus_verify_polkit_async(call, CAP_SYS_ADMIN, "org.freedesktop.systemd1.reload-daemon", false, UID_INVALID, &m->polkit_registry, error);
}
+
+int bus_verify_set_environment_async(Manager *m, sd_bus_message *call, sd_bus_error *error) {
+ return bus_verify_polkit_async(call, CAP_SYS_ADMIN, "org.freedesktop.systemd1.set-environment", false, UID_INVALID, &m->polkit_registry, error);
+}