chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduce _cleanup_fdset_free_
[elogind.git]
/
src
/
core
/
dbus-job.c
diff --git
a/src/core/dbus-job.c
b/src/core/dbus-job.c
index 20c2a623380cf2aba17e3ef20cda10ee4cfc2a05..4ab88d06c3eb31b6927e3031e4bed9440931f75f 100644
(file)
--- a/
src/core/dbus-job.c
+++ b/
src/core/dbus-job.c
@@
-60,7
+60,7
@@
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
static int bus_job_append_unit(DBusMessageIter *i, const char *property, void *data) {
Job *j = data;
DBusMessageIter sub;
static int bus_job_append_unit(DBusMessageIter *i, const char *property, void *data) {
Job *j = data;
DBusMessageIter sub;
-
char *p
;
+
_cleanup_free_ char *p = NULL
;
assert(i);
assert(property);
assert(i);
assert(property);
@@
-75,12
+75,9
@@
static int bus_job_append_unit(DBusMessageIter *i, const char *property, void *d
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &j->unit->id) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) {
if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &j->unit->id) ||
!dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) {
- free(p);
return -ENOMEM;
}
return -ENOMEM;
}
- free(p);
-
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
if (!dbus_message_iter_close_container(i, &sub))
return -ENOMEM;
@@
-116,7
+113,7
@@
static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec
return bus_default_message_handler(connection, message, INTROSPECTION, INTERFACES_LIST, bps);
}
return bus_default_message_handler(connection, message, INTROSPECTION, INTERFACES_LIST, bps);
}
- if (!
dbus_connection_send(connection, reply, NULL
))
+ if (!
bus_maybe_send_reply(connection, message, reply
))
return DBUS_HANDLER_RESULT_NEED_MEMORY;
return DBUS_HANDLER_RESULT_HANDLED;
return DBUS_HANDLER_RESULT_NEED_MEMORY;
return DBUS_HANDLER_RESULT_HANDLED;
@@
-136,7
+133,7
@@
static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu
/* Be nice to gdbus and return introspection data for our mid-level paths */
if (dbus_message_is_method_call(message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
/* Be nice to gdbus and return introspection data for our mid-level paths */
if (dbus_message_is_method_call(message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
- char *introspection = NULL;
+
_cleanup_free_
char *introspection = NULL;
FILE *f;
Iterator i;
size_t size;
FILE *f;
Iterator i;
size_t size;
@@
-169,7
+166,6
@@
static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu
if (ferror(f)) {
fclose(f);
if (ferror(f)) {
fclose(f);
- free(introspection);
goto oom;
}
goto oom;
}
@@
-179,13
+175,10
@@
static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu
goto oom;
if (!dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection, DBUS_TYPE_INVALID)) {
goto oom;
if (!dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection, DBUS_TYPE_INVALID)) {
- free(introspection);
goto oom;
}
goto oom;
}
- free(introspection);
-
- if (!dbus_connection_send(connection, reply, NULL))
+ if (!bus_maybe_send_reply(connection, message, reply))
goto oom;
return DBUS_HANDLER_RESULT_HANDLED;
goto oom;
return DBUS_HANDLER_RESULT_HANDLED;
@@
-218,7
+211,7
@@
const DBusObjectPathVTable bus_job_vtable = {
};
static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) {
};
static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) {
- DBusMessage *m = NULL;
+
_cleanup_dbus_message_unref_
DBusMessage *m = NULL;
int r;
assert(j);
int r;
assert(j);
@@
-227,9
+220,9
@@
static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) {
if (bus_has_subscriber(j->manager) || j->forgot_bus_clients) {
m = new_message(j);
if (!m)
if (bus_has_subscriber(j->manager) || j->forgot_bus_clients) {
m = new_message(j);
if (!m)
- goto oom;
+ return -ENOMEM;
+
r = bus_broadcast(j->manager, m);
r = bus_broadcast(j->manager, m);
- dbus_message_unref(m);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-238,18
+231,19
@@
static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) {
* to the client(s) which created the job */
JobBusClient *cl;
assert(j->bus_client_list);
* to the client(s) which created the job */
JobBusClient *cl;
assert(j->bus_client_list);
+
LIST_FOREACH(client, cl, j->bus_client_list) {
assert(cl->bus);
m = new_message(j);
if (!m)
LIST_FOREACH(client, cl, j->bus_client_list) {
assert(cl->bus);
m = new_message(j);
if (!m)
-
goto oom
;
+
return -ENOMEM
;
if (!dbus_message_set_destination(m, cl->name))
if (!dbus_message_set_destination(m, cl->name))
-
goto oom
;
+
return -ENOMEM
;
if (!dbus_connection_send(cl->bus, m, NULL))
if (!dbus_connection_send(cl->bus, m, NULL))
-
goto oom
;
+
return -ENOMEM
;
dbus_message_unref(m);
m = NULL;
dbus_message_unref(m);
m = NULL;
@@
-257,62
+251,54
@@
static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) {
}
return 0;
}
return 0;
-oom:
- if (m)
- dbus_message_unref(m);
- return -ENOMEM;
}
static DBusMessage* new_change_signal_message(Job *j) {
}
static DBusMessage* new_change_signal_message(Job *j) {
-
DBusMessage *m
= NULL;
-
char *p = NULL
;
+
_cleanup_free_ char *p
= NULL;
+
DBusMessage *m
;
p = job_dbus_path(j);
if (!p)
p = job_dbus_path(j);
if (!p)
-
goto oom
;
+
return NULL
;
if (j->sent_dbus_new_signal) {
/* Send a properties changed signal */
m = bus_properties_changed_new(p, "org.freedesktop.systemd1.Job", INVALIDATING_PROPERTIES);
if (!m)
if (j->sent_dbus_new_signal) {
/* Send a properties changed signal */
m = bus_properties_changed_new(p, "org.freedesktop.systemd1.Job", INVALIDATING_PROPERTIES);
if (!m)
-
goto oom
;
+
return NULL
;
} else {
/* Send a new signal */
m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobNew");
if (!m)
} else {
/* Send a new signal */
m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobNew");
if (!m)
-
goto oom
;
+
return NULL
;
if (!dbus_message_append_args(m,
DBUS_TYPE_UINT32, &j->id,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_STRING, &j->unit->id,
if (!dbus_message_append_args(m,
DBUS_TYPE_UINT32, &j->id,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_STRING, &j->unit->id,
- DBUS_TYPE_INVALID))
- goto oom;
+ DBUS_TYPE_INVALID)) {
+ dbus_message_unref(m);
+ return NULL;
+ }
}
return m;
}
return m;
-
-oom:
- if (m)
- dbus_message_unref(m);
- free(p);
- return NULL;
}
static DBusMessage* new_removed_signal_message(Job *j) {
}
static DBusMessage* new_removed_signal_message(Job *j) {
-
DBusMessage *m
= NULL;
-
char *p = NULL
;
+
_cleanup_free_ char *p
= NULL;
+
DBusMessage *m
;
const char *r;
p = job_dbus_path(j);
if (!p)
const char *r;
p = job_dbus_path(j);
if (!p)
-
goto oom
;
+
return NULL
;
m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobRemoved");
if (!m)
m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobRemoved");
if (!m)
-
goto oom
;
+
return NULL
;
r = job_result_to_string(j->result);
r = job_result_to_string(j->result);
@@
-321,16
+307,12
@@
static DBusMessage* new_removed_signal_message(Job *j) {
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_STRING, &j->unit->id,
DBUS_TYPE_STRING, &r,
DBUS_TYPE_OBJECT_PATH, &p,
DBUS_TYPE_STRING, &j->unit->id,
DBUS_TYPE_STRING, &r,
- DBUS_TYPE_INVALID))
- goto oom;
+ DBUS_TYPE_INVALID)) {
+ dbus_message_unref(m);
+ return NULL;
+ }
return m;
return m;
-
-oom:
- if (m)
- dbus_message_unref(m);
- free(p);
- return NULL;
}
void bus_job_send_change_signal(Job *j) {
}
void bus_job_send_change_signal(Job *j) {