chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sd-event: don't touch fd's accross forks
[elogind.git]
/
src
/
libelogind
/
sd-event
/
sd-event.c
diff --git
a/src/libelogind/sd-event/sd-event.c
b/src/libelogind/sd-event/sd-event.c
index cc8bc50c04a8abca55400a50b66a4037687ccdc4..2b8d1b87ed3925c9c3462eb57b097cee798f835a 100644
(file)
--- a/
src/libelogind/sd-event/sd-event.c
+++ b/
src/libelogind/sd-event/sd-event.c
@@
-474,6
+474,9
@@
static int source_io_unregister(sd_event_source *s) {
assert(s);
assert(s->type == SOURCE_IO);
assert(s);
assert(s->type == SOURCE_IO);
+ if (event_pid_changed(s->event))
+ return 0;
+
if (!s->io.registered)
return 0;
if (!s->io.registered)
return 0;
@@
-604,6
+607,9
@@
static int event_update_signal_fd(sd_event *e) {
assert(e);
assert(e);
+ if (event_pid_changed(e))
+ return 0;
+
add_to_epoll = e->signal_fd < 0;
r = signalfd(e->signal_fd, &e->sigset, SFD_NONBLOCK|SFD_CLOEXEC);
add_to_epoll = e->signal_fd < 0;
r = signalfd(e->signal_fd, &e->sigset, SFD_NONBLOCK|SFD_CLOEXEC);