chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: add a debug message in case the session already exists
[elogind.git]
/
src
/
core
/
job.c
diff --git
a/src/core/job.c
b/src/core/job.c
index 0cd4397bf294a6e301954825fe53e2a440eaaa1a..8e98bd93ab1163c02fe8266167a6e8d606b0966c 100644
(file)
--- a/
src/core/job.c
+++ b/
src/core/job.c
@@
-37,7
+37,7
@@
#include "special.h"
#include "async.h"
#include "virt.h"
#include "special.h"
#include "async.h"
#include "virt.h"
-#include "dbus
-client-track
.h"
+#include "dbus.h"
Job* job_new_raw(Unit *unit) {
Job *j;
Job* job_new_raw(Unit *unit) {
Job *j;
@@
-90,7
+90,8
@@
void job_free(Job *j) {
sd_event_source_unref(j->timer_event_source);
sd_event_source_unref(j->timer_event_source);
- bus_client_track_free(j->subscribed);
+ sd_bus_track_unref(j->subscribed);
+ strv_free(j->deserialized_subscribed);
free(j);
}
free(j);
}
@@
-931,7
+932,7
@@
int job_serialize(Job *j, FILE *f, FDSet *fds) {
if (j->begin_usec > 0)
fprintf(f, "job-begin="USEC_FMT"\n", j->begin_usec);
if (j->begin_usec > 0)
fprintf(f, "job-begin="USEC_FMT"\n", j->begin_usec);
- bus_
client_track_serialize(j->manager, f, j->subscribed
);
+ bus_
track_serialize(j->subscribed, f
);
/* End marker */
fputc('\n', f);
/* End marker */
fputc('\n', f);
@@
-1035,13
+1036,10
@@
int job_deserialize(Job *j, FILE *f, FDSet *fds) {
else
j->begin_usec = ull;
else
j->begin_usec = ull;
- } else {
- char t[strlen(l) + 1 + strlen(v) + 1];
+ } else if (streq(l, "subscribed")) {
- strcpy(stpcpy(stpcpy(t, l), "="), v);
-
- if (bus_client_track_deserialize_item(j->manager, &j->subscribed, t) == 0)
- log_debug("Unknown deserialization key '%s'", l);
+ if (strv_extend(&j->deserialized_subscribed, v) < 0)
+ return log_oom();
}
}
}
}
}
}
@@
-1051,6
+1049,12
@@
int job_coldplug(Job *j) {
assert(j);
assert(j);
+ /* After deserialization is complete and the bus connection
+ * set up again, let's start watching our subscribers again */
+ r = bus_track_coldplug(j->manager, &j->subscribed, &j->deserialized_subscribed);
+ if (r < 0)
+ return r;
+
if (j->begin_usec == 0 || j->unit->job_timeout == 0)
return 0;
if (j->begin_usec == 0 || j->unit->job_timeout == 0)
return 0;
@@
-1146,9
+1150,9
@@
static const char* const job_mode_table[_JOB_MODE_MAX] = {
[JOB_REPLACE] = "replace",
[JOB_REPLACE_IRREVERSIBLY] = "replace-irreversibly",
[JOB_ISOLATE] = "isolate",
[JOB_REPLACE] = "replace",
[JOB_REPLACE_IRREVERSIBLY] = "replace-irreversibly",
[JOB_ISOLATE] = "isolate",
+ [JOB_FLUSH] = "flush",
[JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies",
[JOB_IGNORE_REQUIREMENTS] = "ignore-requirements",
[JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies",
[JOB_IGNORE_REQUIREMENTS] = "ignore-requirements",
- [JOB_FLUSH] = "flush",
};
DEFINE_STRING_TABLE_LOOKUP(job_mode, JobMode);
};
DEFINE_STRING_TABLE_LOOKUP(job_mode, JobMode);