chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: reorder bonding and bridging
[elogind.git]
/
src
/
core
/
dbus-unit.c
diff --git
a/src/core/dbus-unit.c
b/src/core/dbus-unit.c
index 37c1e8cbf822b6542a06e945313c39ad1d8d1c29..07e7f20e6b185a7f92e8d45b779a3e6d565eb412 100644
(file)
--- a/
src/core/dbus-unit.c
+++ b/
src/core/dbus-unit.c
@@
-26,10
+26,10
@@
#include "strv.h"
#include "path-util.h"
#include "fileio.h"
#include "strv.h"
#include "path-util.h"
#include "fileio.h"
-#include "dbus-unit.h"
-#include "dbus-manager.h"
#include "bus-errors.h"
#include "bus-errors.h"
-#include "dbus-client-track.h"
+#include "dbus.h"
+#include "dbus-manager.h"
+#include "dbus-unit.h"
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_load_state, unit_load_state, UnitLoadState);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_job_mode, job_mode, JobMode);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_load_state, unit_load_state, UnitLoadState);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_job_mode, job_mode, JobMode);
@@
-589,7
+589,7
@@
const sd_bus_vtable bus_unit_cgroup_vtable[] = {
SD_BUS_VTABLE_END
};
SD_BUS_VTABLE_END
};
-static int send_new_signal(sd_bus *bus,
const char *destination,
void *userdata) {
+static int send_new_signal(sd_bus *bus, void *userdata) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
@@
-604,10
+604,10
@@
static int send_new_signal(sd_bus *bus, const char *destination, void *userdata)
r = sd_bus_message_new_signal(
bus,
r = sd_bus_message_new_signal(
bus,
+ &m,
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
- "UnitNew",
- &m);
+ "UnitNew");
if (r < 0)
return r;
if (r < 0)
return r;
@@
-615,10
+615,10
@@
static int send_new_signal(sd_bus *bus, const char *destination, void *userdata)
if (r < 0)
return r;
if (r < 0)
return r;
- return sd_bus_send
_to(bus, m, destination
, NULL);
+ return sd_bus_send
(bus, m
, NULL);
}
}
-static int send_changed_signal(sd_bus *bus,
const char *destination,
void *userdata) {
+static int send_changed_signal(sd_bus *bus, void *userdata) {
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
int r;
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
int r;
@@
-627,7
+627,7
@@
static int send_changed_signal(sd_bus *bus, const char *destination, void *userd
assert(u);
p = unit_dbus_path(u);
assert(u);
p = unit_dbus_path(u);
- if (!
u
)
+ if (!
p
)
return -ENOMEM;
/* Send a properties changed signal. First for the specific
return -ENOMEM;
/* Send a properties changed signal. First for the specific
@@
-638,21
+638,13
@@
static int send_changed_signal(sd_bus *bus, const char *destination, void *userd
bus, p,
UNIT_VTABLE(u)->bus_interface,
NULL);
bus, p,
UNIT_VTABLE(u)->bus_interface,
NULL);
- if (r < 0) {
- log_warning("Failed to send out specific PropertiesChanged signal for %s: %s", u->id, strerror(-r));
+ if (r < 0)
return r;
return r;
- }
- r
=
sd_bus_emit_properties_changed_strv(
+ r
eturn
sd_bus_emit_properties_changed_strv(
bus, p,
"org.freedesktop.systemd1.Unit",
NULL);
bus, p,
"org.freedesktop.systemd1.Unit",
NULL);
- if (r < 0) {
- log_warning("Failed to send out generic PropertiesChanged signal for %s: %s", u->id, strerror(-r));
- return r;
- }
-
- return 0;
}
void bus_unit_send_change_signal(Unit *u) {
}
void bus_unit_send_change_signal(Unit *u) {
@@
-667,14
+659,14
@@
void bus_unit_send_change_signal(Unit *u) {
if (!u->id)
return;
if (!u->id)
return;
- r = bus_
manager_foreach_client(u->manager
, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u);
+ r = bus_
foreach_bus(u->manager, NULL
, u->sent_dbus_new_signal ? send_changed_signal : send_new_signal, u);
if (r < 0)
log_debug("Failed to send unit change signal for %s: %s", u->id, strerror(-r));
u->sent_dbus_new_signal = true;
}
if (r < 0)
log_debug("Failed to send unit change signal for %s: %s", u->id, strerror(-r));
u->sent_dbus_new_signal = true;
}
-static int send_removed_signal(sd_bus *bus,
const char *destination,
void *userdata) {
+static int send_removed_signal(sd_bus *bus, void *userdata) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
_cleanup_free_ char *p = NULL;
Unit *u = userdata;
@@
-689,10
+681,10
@@
static int send_removed_signal(sd_bus *bus, const char *destination, void *userd
r = sd_bus_message_new_signal(
bus,
r = sd_bus_message_new_signal(
bus,
+ &m,
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
- "UnitRemoved",
- &m);
+ "UnitRemoved");
if (r < 0)
return r;
if (r < 0)
return r;
@@
-700,7
+692,7
@@
static int send_removed_signal(sd_bus *bus, const char *destination, void *userd
if (r < 0)
return r;
if (r < 0)
return r;
- return sd_bus_send
_to(bus, m, destination
, NULL);
+ return sd_bus_send
(bus, m
, NULL);
}
void bus_unit_send_removed_signal(Unit *u) {
}
void bus_unit_send_removed_signal(Unit *u) {
@@
-713,7
+705,7
@@
void bus_unit_send_removed_signal(Unit *u) {
if (!u->id)
return;
if (!u->id)
return;
- r = bus_
manager_foreach_client(u->manager
, send_removed_signal, u);
+ r = bus_
foreach_bus(u->manager, NULL
, send_removed_signal, u);
if (r < 0)
log_debug("Failed to send unit remove signal for %s: %s", u->id, strerror(-r));
}
if (r < 0)
log_debug("Failed to send unit remove signal for %s: %s", u->id, strerror(-r));
}
@@
-765,9
+757,17
@@
int bus_unit_queue_job(
if (r < 0)
return r;
if (r < 0)
return r;
- r = bus_client_track(&j->subscribed, bus, sd_bus_message_get_sender(message));
- if (r < 0)
- return r;
+ if (bus == u->manager->api_bus) {
+ if (!j->subscribed) {
+ r = sd_bus_track_new(bus, &j->subscribed, NULL, NULL);
+ if (r < 0)
+ return r;
+ }
+
+ r = sd_bus_track_add_sender(j->subscribed, message);
+ if (r < 0)
+ return r;
+ }
path = job_dbus_path(j);
if (!path)
path = job_dbus_path(j);
if (!path)
@@
-910,9
+910,6
@@
int bus_unit_set_properties(
assert(u);
assert(message);
assert(u);
assert(message);
- if (u->transient)
- mode &= UNIT_RUNTIME;
-
/* We iterate through the array twice. First run we just check
* if all passed data is valid, second run actually applies
* it. This is to implement transaction-like behaviour without
/* We iterate through the array twice. First run we just check
* if all passed data is valid, second run actually applies
* it. This is to implement transaction-like behaviour without