Cancel dbus requests when the reject-callback is called 69/228169/2
authorJunghoon Park <jh9216.park@samsung.com>
Thu, 19 Mar 2020 09:09:19 +0000 (18:09 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Thu, 19 Mar 2020 23:44:19 +0000 (08:44 +0900)
Change-Id: Ie5acec1103084a6286c93d3331184ced51d5f789
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
src/fdbroker-internal.cc
src/fdbroker-internal.h
src/proxy-internal.cc

index 6dd0c6249e1f36d47023f282c97759fc01c39851..77e19be1b62db56e7fefa2c8a7b3838feb579681 100644 (file)
@@ -197,19 +197,29 @@ GUnixFDList* FdBroker::FdList::GetRaw() {
 }
 
 FdBroker::~FdBroker() {
+  Cancel();
+}
+
+void FdBroker::Cancel() {
+  LOGI("FdBroker::Cancel!");
+
   if (cancellable_) {
     LOGW("Cancel the send request");
     g_cancellable_cancel(cancellable_);
     g_object_unref(cancellable_);
+    cancellable_ = nullptr;
   }
 
-  if (watcher_id_ > 0)
+  if (watcher_id_ > 0) {
     g_bus_unwatch_name(watcher_id_);
+    watcher_id_ = 0;
+  }
 
   if (registration_id_ > 0) {
     g_dbus_connection_unregister_object(
         DBusConnectionManager::GetInst().GetConnection(),
         registration_id_);
+    registration_id_ = 0;
   }
 
   if (mock_) {
index be2353052d396aec712af4eae8c183ba85091619..a24873623c4ef484ac024dc400e47f3493dcce1d 100644 (file)
@@ -60,6 +60,7 @@ class FdBroker {
     DBusConnectionManager::GetInst().Dispose();
   }
 
+  void Cancel();
   int Send(const std::string& target_appid, const std::string& port_name,
            int (*fds)[2]);
   int Listen(IEventListener* ev, const std::string& port_name);
index 7d78f8dca778735a7be1e03db74501696253137f..2f8a5d7c97663df430849530640508d11bbc12c7 100644 (file)
@@ -243,6 +243,7 @@ gboolean Proxy::DbusNameTimeout(gpointer user_data) {
   if (obj->listener_) {
     IEventListener* listener = obj->listener_;
     obj->listener_ = nullptr;
+    obj->fd_broker_.Cancel();
     listener->OnRejected(obj->target_appid_);
   }