[daemon-dev][lib-opt] Fix in freeing memory, cleanup, comments, renames
[platform/upstream/dbus.git] / bus / bus.c
index f3ef668..4d9fe18 100644 (file)
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -2,6 +2,7 @@
 /* bus.c  message bus context object
  *
  * Copyright (C) 2003, 2004 Red Hat, Inc.
+ * Copyright (C) 2013  Samsung Electronics
  *
  * Licensed under the Academic Free License version 2.1
  *
 #include <dbus/dbus-hash.h>
 #include <dbus/dbus-credentials.h>
 #include <dbus/dbus-internals.h>
+
+#ifdef ENABLE_KDBUS_TRANSPORT
 #include "kdbus-d.h"
 #include <stdlib.h>
+#endif
 
 #ifdef DBUS_CYGWIN
 #include <signal.h>
@@ -70,7 +74,9 @@ struct BusContext
   unsigned int keep_umask : 1;
   unsigned int allow_anonymous : 1;
   unsigned int systemd_activation : 1;
+#ifdef ENABLE_KDBUS_TRANSPORT
   DBusConnection *myKdbusConnection;  //todo maybe can be rafctored and removed
+#endif
 };
 
 static dbus_int32_t server_data_slot = -1;
@@ -426,6 +432,7 @@ process_config_first_time_only (BusContext       *context,
 
   if (address)
     {
+#ifdef ENABLE_KDBUS_TRANSPORT
       if(!strcmp(_dbus_string_get_const_data(address), "kdbus"))
       {
          DBusBusType type;
@@ -461,7 +468,8 @@ process_config_first_time_only (BusContext       *context,
                  goto failed;
       }
       else
-      {
+#endif
+        {
                  DBusServer *server;
 
                  server = dbus_server_listen (_dbus_string_get_const_data(address), error);
@@ -770,7 +778,10 @@ bus_context_new (const DBusString *config_file,
       goto failed;
     }
   context->refcount = 1;
+
+#ifdef ENABLE_KDBUS_TRANSPORT
   context->myKdbusConnection = NULL;
+#endif
 
   _dbus_generate_uuid (&context->uuid);
 
@@ -969,27 +980,38 @@ bus_context_new (const DBusString *config_file,
 
   dbus_server_free_data_slot (&server_data_slot);
 
+#ifdef ENABLE_KDBUS_TRANSPORT
   if(context->myKdbusConnection)
   {
          DBusString unique_name;
 
-         bus_connections_setup_connection(context->connections, context->myKdbusConnection);
+         if(!bus_connections_setup_connection(context->connections, context->myKdbusConnection))
+         {
+          _dbus_verbose ("Bus connections setup connection failed for myKdbusConnection!\n");
+          dbus_connection_close (context->myKdbusConnection);
+          dbus_connection_unref (context->myKdbusConnection);
+          goto failed;
+         }
          dbus_connection_set_route_peer_messages (context->myKdbusConnection, FALSE);
-         _dbus_string_init_const(&unique_name, ":1.1"); //dbus_bus_get_unique_name(context->myConnection)); this is without :1.
-         if(!bus_connection_complete(context->myKdbusConnection, &unique_name, error))
+         _dbus_string_init_const (&unique_name, ":1.1"); //dbus_bus_get_unique_name(context->myConnection)); this is without :1.
+         if(!bus_connection_complete (context->myKdbusConnection, &unique_name, error))
          {
-                 _dbus_verbose ("Bus connection complete failed for kdbus!\n");
-                 _dbus_string_free(&unique_name);
+                 _dbus_verbose ("Bus connection complete failed for myKdbusConnection!\n");
                  goto failed;
          }
-         _dbus_string_free(&unique_name);
 
+         if(!register_daemon_name(context->myKdbusConnection))
+         {
+             _dbus_verbose ("Registering org.freedesktop.DBus name for daemon failed!\n");
+             goto failed;
+         }
          if(!register_kdbus_starters(context->myKdbusConnection))
          {
           _dbus_verbose ("Registering kdbus starters for dbus activatable names failed!\n");
           goto failed;
          }
   }
+#endif
 
   return context;
 
@@ -1042,6 +1064,19 @@ bus_context_reload_config (BusContext *context,
       _DBUS_ASSERT_ERROR_IS_SET (error);
       goto failed;
     }
+
+#ifdef ENABLE_KDBUS_TRANSPORT
+  if(context->myKdbusConnection)
+  {
+      if(!update_kdbus_starters(context->myKdbusConnection))
+      {
+          _dbus_verbose ("Update kdbus starters for dbus activatable names failed.\n");
+          _DBUS_ASSERT_ERROR_IS_SET (error);
+          goto failed;
+      }
+  }
+#endif
+
   ret = TRUE;
 
   bus_context_log (context, DBUS_SYSTEM_LOG_INFO, "Reloaded configuration");
@@ -1238,11 +1273,6 @@ bus_context_get_loop (BusContext *context)
   return context->loop;
 }
 
-DBusConnection* bus_context_get_myConnection(BusContext *context)
-{
-  return context->myKdbusConnection;
-}
-
 dbus_bool_t
 bus_context_allow_unix_user (BusContext   *context,
                              unsigned long uid)
@@ -1340,10 +1370,12 @@ bus_context_get_reply_timeout (BusContext *context)
   return context->limits.reply_timeout;
 }
 
+#ifdef ENABLE_KDBUS_TRANSPORT
 dbus_bool_t bus_context_is_kdbus(BusContext* context)
 {
        return context->myKdbusConnection != NULL;
 }
+#endif
 
 void
 bus_context_log (BusContext *context, DBusSystemLogSeverity severity, const char *msg, ...) _DBUS_GNUC_PRINTF (3, 4);