aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-12-04libseat/backend/logind: stop waiting for CanGraphicalSimon Ser
Upstream says compositors should wait for DRM nodes using udev instead.
2020-11-24logind: switch_session should return 0 on successKenny Levinsen
It currently returned -1 on failure and 1 on success. The API is intended to return -1 on failure and 0 on success, so fix that.
2020-11-23terminal: Improve loggingKenny Levinsen
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-11-21libseat: log error when failing to open socketIsaac Freund
The most common pain point I've seen with people trying out seat is forgetting to add themselves to whatever group the distro has chosen to own the socket. Logging this error and path of the socket should make it easier to tell why things aren't working.
2020-11-03ci: Clean up build manifestsKenny Levinsen
2020-10-19Bump version to 0.4.0Kenny Levinsen
2020-10-16readme: Update mailing list linkKenny Levinsen
2020-10-12connection: Add unittestKenny Levinsen
2020-10-11libseat: Better error reporting from open_seatKenny Levinsen
2020-10-11logind: clang-formatKenny Levinsen
2020-10-10logind: Use seat_path for SwitchToKenny Levinsen
2020-09-28logind: close_device should not close fdKenny Levinsen
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-22terminal: Fix VT numbering on FreeBSDKenny Levinsen
FreeBSD adds one to the VT number returned by the GET_ACTIVE ioctl, so to match things up, the wrapper here subtracted by one. This lead to ttyv0 being named VT 0. This had the side-effect of VT numbering not matching expectations, and switching not behaving as intended. Align numbers with expectations, and move the required subtraction to terminal_open, so that VT 1 matches ttyv0.
2020-09-22libseat/seatd: Fix socket path boundsKenny 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-22drm: Relax drm file detection, support FreeBSDKenny Levinsen
Path check was done on /dev/dri/card and /dev/dri/renderD. However, /dev/dri/by-path is a thing, and on FreeBSD, /dev/dri/ symlinks to /dev/drm/. Relax Linux check to /dev/dri/, and add FreeBSD check for /dev/drm/.
2020-09-22poller: Add unittestKenny Levinsen
2020-09-22libseat: Execute bg events after IPC callsKenny Levinsen
If a background event was queued during call dispatch, and no unread data was left on the socket, there would be no incentive for the user to call dispatch, and as a result, the events would never be executed. Execute events at the end of IPC calls that read from the socket to avoid stalls.
2020-09-22libseat: Dispatch all non-bg events on IPC callKenny Levinsen
Dispatch on IPC call only dispatched until the first message was successfully processed. This could lead to premature dispatch termination if a background event was received during an IPC call. Instead, continue dispatching until a non-bg opcode is reported or an error is received.
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-08Bump version to 0.3.0Kenny Levinsen
2020-09-08libseat: Version the .so fileKenny Levinsen
2020-09-07man: Mention assistance from other contributorsKenny Levinsen
2020-09-07libseat: Handle SERVER_ERROR correctlyKenny Levinsen
The connection buffer position was erroneously rewinded before reading the protocol message when the message was a SERVER_ERROR.
2020-09-01meson: fix manpage generation for cross buildsIsaac Freund
We want to use the scdoc of the host system not the target system, so pass the `native: true` parameter to meson.
2020-09-01client: Only unlink if on the idle listKenny Levinsen
2020-09-01ci: ASan smoketest on FreeBSDKenny Levinsen
2020-09-01ci: ASan all build steps on archKenny 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-31test: Add test_run and test_assert macrosKenny Levinsen
test_run and test_assert replaces regular assert with better logging which include the currently running test name. The tests can now also be built without DEBUG.
2020-08-31Remove unused list implementationKenny Levinsen
2020-08-31poller: Convert to linked_listKenny Levinsen
2020-08-31linked_list: linked_list_take should concat listsKenny 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.