diff options
Diffstat (limited to 'src/core/transaction.c')
-rw-r--r-- | src/core/transaction.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/transaction.c b/src/core/transaction.c index aee155f519..09ed80737d 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -19,6 +19,9 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <unistd.h> +#include <fcntl.h> + #include "transaction.h" #include "bus-errors.h" @@ -693,6 +696,17 @@ int transaction_activate(Transaction *tr, Manager *m, JobMode mode, DBusError *e assert(hashmap_isempty(tr->jobs)); + if (!hashmap_isempty(m->jobs)) { + /* Are there any jobs now? Then make sure we have the + * idle pipe around. We don't really care too much + * whether this works or not, as the idle pipe is a + * feature for cosmetics, not actually useful for + * anything beyond that. */ + + if (m->idle_pipe[0] < 0 && m->idle_pipe[1] < 0) + pipe2(m->idle_pipe, O_NONBLOCK|O_CLOEXEC); + } + return 0; } |