aboutsummaryrefslogtreecommitdiff
path: root/seatd
AgeCommit message (Collapse)Author
2021-03-21client: enable cr_pid on FreeBSD >= 12.3Jan Beich
https://cgit.freebsd.org/src/commit/?id=925f44f33862908f9a2e72520a17af148c7d0db5 https://cgit.freebsd.org/src/commit/?id=2b61bda2c75f30f6eadd18fb891fd885e4c8d19d
2021-03-16Correct minor misspellingsKenny Levinsen
2021-03-02Normalize log texts a bitKenny Levinsen
2021-02-27clang-formatKenny Levinsen
2021-02-27seatd: Close cur_ttyfd in seat_destroyKenny Levinsen
This fd would only still be set after closing clients if no clients were active on the current VT.
2021-02-27client: Remove link if seat_add_client succeedsKenny Levinsen
Removing the link before before means that we can return without a link, resulting in a double-remove.
2021-02-27seatd: Clean up debug logs a bitKenny Levinsen
2021-02-27Convert a few debug logs to error logsKenny Levinsen
2021-02-27seatd: Set errno in seat_add_clientKenny Levinsen
2021-02-27seatd: Tear down VT when disabled client closesKenny Levinsen
If a client closed while it was disabled, the VT would not be torn down. If the user navigated back to the VT it belonged to, they would be stuck. When a client is disabled, open the fd for the VT it belonged to and perform regular teardown on it.
2021-02-27client: Replace pending_disable with state enumKenny Levinsen
This simplifies logic in seat handling.
2021-02-02seat: Remove unused arg from seat_deactive_deviceKenny Levinsen
2020-12-10client: Fix typo in cr_pid usageKenny Levinsen
2020-12-08client: Use cr_pid if availableKenny Levinsen
This is only available on FreeBSD 13, so test for that version.
2020-12-08client: Do not use SOL_SOCKET for LOCAL_PEERCREDKenny Levinsen
This is wrong, and leads to LOCAL_PEERCRED being interpreted as SO_DEBUG. 0 should be used instead. See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246189.
2020-11-23client: More robust handling of client linksKenny Levinsen
2020-11-23poller: Retry poll immediately on EINTRKenny Levinsen
There is nothing for us to dispatch unless we wake on an fd, so just retry poll if it fails with EINTR instead of doing a full dispatch loop.
2020-09-22seat: Only close VT if no new session was foundKenny Levinsen
2020-09-22terminal: Ack both release and acquireKenny Levinsen
Linux only requires acking release and ignores ack of acquire, but FreeBSD is more stringent and will patiently wait for both to be acked. Implement proper acking for both events.
2020-09-22seat: Use current VT for switch and ackKenny Levinsen
2020-09-22meson: Make default seatd socket path configurableKenny Levinsen
FreeBSD and Linux have different preferred socket locations. Expose an option to set the location, and implement simple auto-logic for linux/freebsd.
2020-09-22poller: Add unittestKenny Levinsen
2020-09-22seatd: Log on exitKenny Levinsen
2020-09-22seat: Reuse deactivate logic, more loggingKenny Levinsen
2020-09-22seat: Plug leak of deactivated fdsKenny Levinsen
Only if a device had an fd and was active would an fd be closed. As devices are deactivated early on session switch, this lead to fd leakage. Close fds regardless of active state.
2020-09-22seat: Rework seat activation/switch logicKenny Levinsen
The seat activation logic did not correctly handle VT switching and switching between multiple sessions. Session switching on VT-bound seats is now performed using a VT switch, taking advantage of VT signals to perform the actual switch. This simplifies switching logic and makes it more robust.
2020-09-22client: Remove unnecessary active_client checkKenny Levinsen
2020-09-22poller: Raise signals through self-pipeKenny Levinsen
Signal handling relied on poll(2) being interrupted by signals, followed by a check for signal handlers flagging a signal as received. This only allowed signals that were received during poll(2) to be handled correctly. Implement the usual self-pipe implementation, where signal handlers write an arbitrary byte to a polled file descriptor to ensure proper level-triggered signal handling.
2020-09-01client: Only unlink if on the idle listKenny Levinsen
2020-09-01Move list removal to seat/client destroyKenny Levinsen
2020-08-31client: Do not leak idle clients on exitKenny Levinsen
2020-08-31poller: Remember to remove sources from listKenny Levinsen
2020-08-31server: Remember to remove seat from listKenny Levinsen
2020-08-31poller: Convert to linked_listKenny Levinsen
2020-08-31server: Convert seat list to linked_listKenny Levinsen
2020-08-31poller: Make event sources opaqueKenny Levinsen
2020-08-30seatd: Explicit cast -1 to unsigned gid_tKenny Levinsen
Silences a warning on some architectures.
2020-08-30seatd: Slight error handling cleanupKenny Levinsen
2020-08-30seatd: Remove unused device_closed msg bodyKenny Levinsen
2020-08-29seat: Destroy all clients on teardownKenny Levinsen
2020-08-28Introduce libseat_set_log_levelSimon Ser
The default level is SILENT. log_init no longer takes an initial log level (so that calls to libseat_set_log_level prior to log_init work correctly).
2020-08-28Rename enum log_level to libseat_log_levelSimon Ser
This is preparatory work for exposing a public function to set libseat's log handler.
2020-08-08seatd: Use path-based chmod/chownKenny Levinsen
The fd variants do not seem to work for sockets
2020-08-07seatd: Add command-line argumentsKenny Levinsen
2020-08-05log: Remove libseat prefixesKenny Levinsen
2020-08-04seat: Fix device double-removeKenny Levinsen
2020-08-04seatd: Unlink default seatd socket on startupKenny Levinsen
2020-08-04server: Gracefully shut down on errorKenny Levinsen
2020-08-04client: Sanitize shutdown/kill mechanismKenny Levinsen
2020-08-03client: TidyingKenny Levinsen