Systemd/src/shared
Lennart Poettering ae3dde8012 machinectl: fix race when opening new shells with "machinectl shell"
Previously, we'd allocate the TTY, spawn a service on it, but
immediately start processing the TTY and forwarding it to whatever the
commnd was started on. This is however problematic, as the TTY might get
actually opened only much later by the service. We'll hence first get
EIOs on the master as the other side is still closed, and hence
considered it hung up and terminated the session.

With this change we add a flag to the pty forwarding logic:
PTY_FORWARD_IGNORE_INITIAL_VHANGUP. If set, we'll ignore all hangups
(i.e. EIOs) on the master PTY until the first byte is successfully read.
From that point on we consider a hangup/EIO a regular connection termination. This
way, we handle the race: when we get EIO initially we'll ignore it,
until the connection is properly set up, at which time we start
honouring it.
2015-10-07 20:10:48 +02:00
..
linux build-sys: split internal basic/ library from shared/ 2015-06-11 10:52:46 +02:00
acl-util.c acl-util: various smaller fixes to parse_acl() 2015-06-17 22:08:21 +02:00
acl-util.h acl-util: various smaller fixes to parse_acl() 2015-06-17 22:08:21 +02:00
acpi-fpdt.c remove unused includes 2015-02-23 23:53:42 +01:00
acpi-fpdt.h
apparmor-util.c remove unused includes 2015-02-23 23:53:42 +01:00
apparmor-util.h mac: also rename use_{smack,selinux,apparmor}() calls so that they share the new mac_{smack,selinux,apparmor}_xyz() convention 2014-10-23 17:34:30 +02:00
architecture.c treewide: fix typos 2015-05-26 19:55:51 +02:00
architecture.h architecture.h: define PROC_CPUINFO_MODEL 2015-09-30 15:57:55 +03:00
ask-password-api.c ask-password: add support for caching passwords in the kernel keyring 2015-10-07 12:26:14 +02:00
ask-password-api.h ask-password: add support for caching passwords in the kernel keyring 2015-10-07 12:26:14 +02:00
base-filesystem.c base-fs: consider inability to create /root non-fatal 2015-09-30 15:52:19 +02:00
base-filesystem.h nspawn: finish user namespace support 2015-05-21 16:32:01 +02:00
boot-timestamps.c shared: boot-timestamps - remove ifdef 2015-04-10 19:55:49 +02:00
boot-timestamps.h
bus-util.c bus-util: rename bus_open_transport() to bus_connect_transport() 2015-09-29 21:55:52 +02:00
bus-util.h bus-util: rename bus_open_transport() to bus_connect_transport() 2015-09-29 21:55:52 +02:00
cgroup-show.c cgroup: drop "ignore_self" argument from cg_is_empty() 2015-09-01 18:37:01 +02:00
cgroup-show.h remove unused includes 2015-02-23 23:53:42 +01:00
clean-ipc.c tree-wide: make use of log_error_errno() return value in more cases 2015-09-09 14:58:26 +02:00
clean-ipc.h
condition.c basic: rework virtualization detection API 2015-09-07 13:42:47 +02:00
condition.h tree-wide: make condition_free_list return NULL 2014-12-18 19:26:21 -05:00
conf-parser.c conf-parser: make use of DEFINE_PARSER macro to parse mode_t 2015-09-30 22:26:16 +02:00
conf-parser.h log: move log_invalid_utf8() to log.h 2015-09-30 22:26:16 +02:00
dev-setup.c nspawn: finish user namespace support 2015-05-21 16:32:01 +02:00
dev-setup.h nspawn: finish user namespace support 2015-05-21 16:32:01 +02:00
dns-domain.c hashmap: hash_funcs - make inputs unambiguous 2015-10-05 19:21:02 +02:00
dns-domain.h hashmap: refactor hash_func 2015-10-05 18:22:10 +02:00
dropin.c systemctl: various modernizations 2015-09-30 12:23:32 +02:00
dropin.h Move dropin listing to shared 2014-12-16 00:30:33 -05:00
efivars.c basic: rework virtualization detection API 2015-09-07 13:42:47 +02:00
efivars.h efivars: fix build for non-efi 2015-04-10 23:00:07 +02:00
firewall-util.c firewall: rename fw-util.[ch] → firewall-util.[ch] 2015-06-15 14:08:02 +02:00
firewall-util.h firewall: rename fw-util.[ch] → firewall-util.[ch] 2015-06-15 14:08:02 +02:00
formats-util.h shared: add formats-util.h 2015-04-10 23:54:48 +02:00
fstab-util.c gpt-auto-generator: check fstab for /boot entries 2015-09-30 22:24:52 +02:00
fstab-util.h gpt-auto-generator: check fstab for /boot entries 2015-09-30 22:24:52 +02:00
generator.c fstab-generator: cescape device name in root-fsck service 2015-06-03 21:03:41 +03:00
generator.h generators: rename add_{root,usr}_mount to add_{sysroot,sysroot_usr}_mount 2015-05-04 08:45:07 -04:00
gpt.h #pragma once here and there 2015-01-23 09:30:44 -05:00
ima-util.c
ima-util.h
import-util.c shared/import-util: Tag renamed to reference 2015-05-19 18:21:46 +02:00
import-util.h shared/import-util: Tag renamed to reference 2015-05-19 18:21:46 +02:00
initreq.h
install-printf.c install: when exporting prefix InstallInfo to become UnitFileInstallInfo 2015-05-11 22:53:54 +02:00
install-printf.h install: when exporting prefix InstallInfo to become UnitFileInstallInfo 2015-05-11 22:53:54 +02:00
install.c tree-wide: clean up log_syntax() usage 2015-09-30 22:26:16 +02:00
install.h systemctl: introduce --now for enable, disable and mask 2015-05-15 11:59:36 +02:00
logs-show.c cgtop: underline table header 2015-09-22 16:30:42 +02:00
logs-show.h remove unused includes 2015-02-23 23:53:42 +01:00
machine-image.c machine: when removing, renaming, cloning images also care for .nspawn settings file 2015-09-09 18:51:23 +02:00
machine-image.h lockfile-util.[ch]: Split out from util.[ch] 2015-05-05 22:35:29 -04:00
machine-pool.c util: when creating temporary file names, allow including extra id string in it 2015-06-15 19:28:55 +02:00
machine-pool.h importd: add new bus calls for importing local tar and raw images 2015-03-05 00:59:38 +01:00
Makefile build-sys: add missing Makefile symlink 2015-08-31 13:09:52 +02:00
nss-util.h nss-mymachines: map userns users of containers to real user names 2015-07-09 14:46:20 -03:00
output-mode.h journalctl: add --utc option 2014-10-02 14:52:32 +02:00
pager.c pager: minor modernizations 2015-09-29 21:55:53 +02:00
pager.h systemd-verify: check man pages 2014-07-20 19:48:16 -04:00
path-lookup.c ask-password: add support for caching passwords in the kernel keyring 2015-10-07 12:26:14 +02:00
path-lookup.h install: when exporting prefix InstallInfo to become UnitFileInstallInfo 2015-05-11 22:53:54 +02:00
ptyfwd.c machinectl: fix race when opening new shells with "machinectl shell" 2015-10-07 20:10:48 +02:00
ptyfwd.h machinectl: fix race when opening new shells with "machinectl shell" 2015-10-07 20:10:48 +02:00
seccomp-util.c
seccomp-util.h seccomp-util.h: make sure seccomp-util.h can be included alone 2014-12-12 13:35:32 +01:00
sleep-config.c fileio: make get_status_field() more generic 2015-09-30 15:57:55 +03:00
sleep-config.h #pragma once here and there 2015-01-23 09:30:44 -05:00
spawn-ask-password-agent.c ask-password: various modernizations 2015-10-06 16:27:24 +02:00
spawn-ask-password-agent.h
spawn-polkit-agent.c shared: add process-util.[ch] 2015-04-10 23:54:49 +02:00
spawn-polkit-agent.h
specifier.c util: split all hostname related calls into hostname-util.c 2015-05-18 17:10:07 +02:00
specifier.h
switch-root.c nspawn: finish user namespace support 2015-05-21 16:32:01 +02:00
switch-root.h use the switch_root function in shutdown 2014-08-28 15:25:15 +02:00
sysctl-util.c util: introduce common version() implementation and use it everywhere 2015-09-29 21:08:37 +02:00
sysctl-util.h sysctl: move property handling to shared/ 2015-03-11 10:37:45 +01:00
test-tables.h test: use assert_se() when testing tables so that we get a useful error when something fails 2014-10-28 18:07:23 +01:00
udev-util.h udevd: make udev_ctrl_connection global 2015-05-12 00:43:45 +02:00
uid-range.c treewide: introduce UID_INVALID (and friends) as macro for (uid_t) -1 2014-11-28 20:55:04 +01:00
uid-range.h Add missing includes in header files 2015-02-12 20:44:32 +01:00
utmp-wtmp.c core: optionally create LOGIN_PROCESS or USER_PROCESS utmp entries 2015-08-24 22:46:45 +02:00
utmp-wtmp.h core: optionally create LOGIN_PROCESS or USER_PROCESS utmp entries 2015-08-24 22:46:45 +02:00
watchdog.c watchdog: Don't require WDIOC_SETOPTIONS/WDIOS_ENABLECARD 2015-06-17 19:04:10 +02:00
watchdog.h