libreoffice: kill private dbus instance on exit

if the libreoffice wrapper doesn't find a dbus instance in the
environment it starts one, but then neglects to clean it up. over time
this can litter the system with orphaned dbus instances. kill the daemon
as well instead of just removing the socket directory.
This commit is contained in:
pennae 2021-04-22 17:18:46 +02:00
parent 842f900e73
commit df6c714d82

View file

@ -2,7 +2,7 @@
export JAVA_HOME="${JAVA_HOME:-@jdk@}"
#export SAL_USE_VCLPLUGIN="${SAL_USE_VCLPLUGIN:-gen}"
if uname | grep Linux > /dev/null &&
if uname | grep Linux > /dev/null &&
! ( test -n "$DBUS_SESSION_BUS_ADDRESS" ); then
dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"
if ! test -d "$dbus_tmp_dir" && test -d "/run"; then
@ -14,6 +14,7 @@ if uname | grep Linux > /dev/null &&
fi
dbus_socket_dir="$(mktemp -d -p "$dbus_tmp_dir")"
"@dbus@"/bin/dbus-daemon --nopidfile --nofork --config-file "@dbus@"/share/dbus-1/session.conf --address "unix:path=$dbus_socket_dir/session" &> /dev/null &
dbus_pid=$!
export DBUS_SESSION_BUS_ADDRESS="unix:path=$dbus_socket_dir/session"
fi
@ -27,5 +28,5 @@ done
"@libreoffice@/bin/$(basename "$0")" "$@"
code="$?"
test -n "$dbus_socket_dir" && rm -rf "$dbus_socket_dir"
test -n "$dbus_socket_dir" && { rm -rf "$dbus_socket_dir"; kill $dbus_pid; }
exit "$code"