]> git.ipfire.org Git - thirdparty/systemd.git/commit
systemctl: make sure we terminate the bus connection first, and then close the pager...
authorLennart Poettering <lennart@poettering.net>
Thu, 16 Jun 2016 13:29:16 +0000 (15:29 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 16 Jun 2016 13:29:16 +0000 (09:29 -0400)
commitcf647b69baee4c478d3909c327e3d917e1563f44
treeccc736b268a08a6f11d63d6e7fd2f1d210d054d3
parentdce588ec9d440d952af319c8afb698d6a1576875
systemctl: make sure we terminate the bus connection first, and then close the pager (#3550)

If "systemctl -H" is used, let's make sure we first terminate the bus
connection, and only then close the pager. If done in this order ssh will get
an EOF on stdin (as we speak D-Bus through ssh's stdin/stdout), and then
terminate. This makes sure the standard error we were invoked on is released by
ssh, and only that makes sure we don't deadlock on the pager which waits for
all clients closing its input pipe.

(Similar fixes for the various other xyzctl tools that support both pagers and
-H)

Fixes: #3543
src/libsystemd/sd-bus/busctl.c
src/locale/localectl.c
src/login/loginctl.c
src/machine/machinectl.c
src/systemctl/systemctl.c
src/timedate/timedatectl.c