From df5800fc70550ee074cacb677e92471c7aa768a6 Mon Sep 17 00:00:00 2001 From: Vibhav Pant Date: Sun, 3 Sep 2023 13:10:18 +0530 Subject: [PATCH] Use atexit to cleanup bus connections before exiting. --- internal/platform/implementation/linux/dbus.cc | 6 ++++++ internal/platform/implementation/linux/log_message.cc | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/internal/platform/implementation/linux/dbus.cc b/internal/platform/implementation/linux/dbus.cc index 755d25e4..9bc9b775 100644 --- a/internal/platform/implementation/linux/dbus.cc +++ b/internal/platform/implementation/linux/dbus.cc @@ -28,12 +28,18 @@ static std::unique_ptr global_default_bus_connection = nullptr; static absl::once_flag bus_connection_init_; +static void disconnectBus() { + global_system_bus_connection = nullptr; + global_default_bus_connection = nullptr; +} + static void initBusConnections() { global_system_bus_connection = sdbus::createSystemBusConnection(); global_system_bus_connection->enterEventLoopAsync(); global_default_bus_connection = sdbus::createDefaultBusConnection("com.google.nearby"); global_default_bus_connection->enterEventLoopAsync(); + atexit(disconnectBus); } sdbus::IConnection &getSystemBusConnection() { diff --git a/internal/platform/implementation/linux/log_message.cc b/internal/platform/implementation/linux/log_message.cc index c542b454..0f2bc3b5 100644 --- a/internal/platform/implementation/linux/log_message.cc +++ b/internal/platform/implementation/linux/log_message.cc @@ -33,9 +33,14 @@ namespace nearby { static std::unique_ptr global_log_control_; static absl::once_flag log_control_init_; +static void cleanup_log_control() { + global_log_control_ = nullptr; +} + static void init_log_control(std::nullptr_t) { global_log_control_ = std::make_unique(linux::getDefaultBusConnection()); + atexit(cleanup_log_control); } namespace api {