2003-04-02 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / bus / activation.c
index fe069c7..0dfce3f 100644 (file)
@@ -2,6 +2,7 @@
 /* activation.c  Activation of services
  *
  * Copyright (C) 2003  CodeFactory AB
+ * Copyright (C) 2003  Red Hat, Inc.
  *
  * Licensed under the Academic Free License version 1.2
  * 
@@ -316,12 +317,12 @@ load_directory (BusActivation *activation,
 BusActivation*
 bus_activation_new (BusContext        *context,
                    const DBusString  *address,
-                    const char       **directories,
+                    DBusList         **directories,
                     DBusError         *error)
 {
-  int i;
   BusActivation *activation;
-
+  DBusList *link;
+  
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
   
   activation = dbus_new0 (BusActivation, 1);
@@ -358,12 +359,12 @@ bus_activation_new (BusContext        *context,
     }
   
   /* Load service files */
-  i = 0;
-  while (directories[i] != NULL)
+  link = _dbus_list_get_first_link (directories);
+  while (link != NULL)
     {
-      if (!load_directory (activation, directories[i], error))
+      if (!load_directory (activation, link->data, error))
         goto failed;
-      ++i;
+      link = _dbus_list_get_next_link (directories, link);
     }
 
   return activation;
@@ -412,9 +413,10 @@ child_setup (void *data)
 }
 
 dbus_bool_t
-bus_activation_service_created (BusActivation *activation,
-                               const char    *service_name,
-                               DBusError     *error)
+bus_activation_service_created (BusActivation  *activation,
+                               const char     *service_name,
+                                BusTransaction *transaction,
+                               DBusError      *error)
 {
   BusPendingActivation *pending_activation;
   DBusMessage *message;
@@ -443,7 +445,8 @@ bus_activation_service_created (BusActivation *activation,
              goto error;
            }
 
-         if (!dbus_message_append_args (message,
+         if (!dbus_message_set_sender (message, DBUS_SERVICE_DBUS) ||
+              !dbus_message_append_args (message,
                                         DBUS_TYPE_UINT32, DBUS_ACTIVATION_REPLY_ACTIVATED,
                                         0))
            {
@@ -451,8 +454,8 @@ bus_activation_service_created (BusActivation *activation,
              BUS_SET_OOM (error);
              goto error;
            }
-
-         if (!dbus_connection_send (entry->connection, message, NULL))
+          
+         if (!bus_transaction_send_message (transaction, entry->connection, message))
            {
              dbus_message_unref (message);
              BUS_SET_OOM (error);
@@ -478,6 +481,7 @@ bus_activation_service_created (BusActivation *activation,
 dbus_bool_t
 bus_activation_activate_service (BusActivation  *activation,
                                 DBusConnection *connection,
+                                 BusTransaction *transaction,
                                 DBusMessage    *activation_message,
                                  const char     *service_name,
                                 DBusError      *error)
@@ -514,7 +518,8 @@ bus_activation_activate_service (BusActivation  *activation,
          return FALSE;
        }
 
-      if (!dbus_message_append_args (message,
+      if (!dbus_message_set_sender (message, DBUS_SERVICE_DBUS) ||
+          !dbus_message_append_args (message,
                                     DBUS_TYPE_UINT32, DBUS_ACTIVATION_REPLY_ALREADY_ACTIVE, 
                                     0))
        {
@@ -523,7 +528,7 @@ bus_activation_activate_service (BusActivation  *activation,
          return FALSE;
        }
 
-      retval = dbus_connection_send (connection, message, NULL);
+      retval = bus_transaction_send_message (transaction, connection, message);
       dbus_message_unref (message);
       if (!retval)
        BUS_SET_OOM (error);