summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hcid/dbus-error.c5
-rw-r--r--hcid/dbus-error.h1
-rw-r--r--hcid/manager.c3
3 files changed, 9 insertions, 0 deletions
diff --git a/hcid/dbus-error.c b/hcid/dbus-error.c
index 3f9a7ddc..f5a473e9 100644
--- a/hcid/dbus-error.c
+++ b/hcid/dbus-error.c
@@ -292,6 +292,11 @@ DBusHandlerResult error_disconnect_in_progress(DBusConnection *conn, DBusMessage
return error_in_progress(conn, msg, "Disconnection in progress");
}
+DBusHandlerResult error_service_start_in_progress(DBusConnection *conn,
+ DBusMessage *msg)
+{
+ return error_in_progress(conn, msg, "Service start in progress");
+}
static const char *strsdperror(int err)
{
diff --git a/hcid/dbus-error.h b/hcid/dbus-error.h
index 6a2036de..47fa40ca 100644
--- a/hcid/dbus-error.h
+++ b/hcid/dbus-error.h
@@ -64,3 +64,4 @@ DBusHandlerResult error_audit_already_exists(DBusConnection *conn, DBusMessage *
DBusHandlerResult error_trusted_device_already_exists(DBusConnection *conn, DBusMessage *msg);
DBusHandlerResult error_trusted_device_does_not_exists(DBusConnection *conn, DBusMessage *msg);
DBusHandlerResult error_disconnect_in_progress(DBusConnection *conn, DBusMessage *msg);
+DBusHandlerResult error_service_start_in_progress(DBusConnection *conn, DBusMessage *msg);
diff --git a/hcid/manager.c b/hcid/manager.c
index 8e0652cc..fa4e8eb1 100644
--- a/hcid/manager.c
+++ b/hcid/manager.c
@@ -285,6 +285,9 @@ static DBusHandlerResult activate_service(DBusConnection *conn,
return send_message_and_unref(conn, reply);
}
+ if (service->pid)
+ return error_service_start_in_progress(conn, msg);
+
if (service_start(service, conn) < 0)
return error_failed(conn, msg, ENOEXEC);