{
_dbus_verbose ("Failed to add pending activation cancel hook to transaction\n");
BUS_SET_OOM (error);
- _dbus_hash_table_remove_string (activation->pending_activations,
- pending_activation->service_name);
-
- return FALSE;
+ goto cancel_pending_activation;
}
if (was_pending_activation)
{
_dbus_verbose ("No memory to create activation message\n");
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
if (!dbus_message_set_sender (message, DBUS_SERVICE_DBUS) ||
_dbus_verbose ("No memory to set args of activation message\n");
dbus_message_unref (message);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
/* Create our transaction */
_dbus_verbose ("No memory to create activation transaction\n");
dbus_message_unref (message);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
/* Check whether systemd is already connected */
{
dbus_message_unref (message);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
if (service != NULL)
_DBUS_ASSERT_ERROR_IS_SET (error);
_dbus_verbose ("failed to send activation message: %s\n", error->name);
bus_transaction_cancel_and_free (activation_transaction);
- return FALSE;
+ goto cancel_pending_activation;
}
bus_transaction_execute_and_free (activation_transaction);
if (!_dbus_string_init (&command))
{
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
/* does the bus use a helper? */
_dbus_string_free (&command);
dbus_set_error (error, DBUS_ERROR_SPAWN_FILE_INVALID,
"Cannot do system-bus activation with no user\n");
- return FALSE;
+ goto cancel_pending_activation;
}
/* join the helper path and the service name */
{
_dbus_string_free (&command);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
if (!_dbus_string_append (&command, " "))
{
_dbus_string_free (&command);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
if (!_dbus_string_append (&command, service_name))
{
_dbus_string_free (&command);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
}
else
{
_dbus_string_free (&command);
BUS_SET_OOM (error);
- return FALSE;
+ goto cancel_pending_activation;
}
}
{
_dbus_verbose ("Failed to parse command line: %s\n", entry->exec);
_DBUS_ASSERT_ERROR_IS_SET (error);
-
- _dbus_hash_table_remove_string (activation->pending_activations,
- pending_activation->service_name);
-
_dbus_string_free (&command);
- return FALSE;
+ goto cancel_pending_activation;
}
_dbus_string_free (&command);
{
_DBUS_ASSERT_ERROR_IS_SET (error);
dbus_free_string_array (argv);
- return FALSE;
+ goto cancel_pending_activation;
}
envp = bus_activation_get_environment (activation);
{
BUS_SET_OOM (error);
dbus_free_string_array (argv);
- return FALSE;
+ goto cancel_pending_activation;
}
_dbus_verbose ("Spawning %s ...\n", argv[0]);
dbus_move_error (&tmp_error, error);
dbus_free_string_array (argv);
dbus_free_string_array (envp);
-
- return FALSE;
+ goto cancel_pending_activation;
}
dbus_free_string_array (argv);
{
BUS_SET_OOM (error);
_dbus_verbose ("Failed to set babysitter watch functions\n");
- return FALSE;
+ goto cancel_pending_activation;
}
return TRUE;
+
+cancel_pending_activation:
+ _DBUS_ASSERT_ERROR_IS_SET (error);
+ _dbus_hash_table_remove_string (activation->pending_activations,
+ pending_activation->service_name);
+ return FALSE;
}
dbus_bool_t