summaryrefslogtreecommitdiffstats
path: root/dundee
diff options
context:
space:
mode:
Diffstat (limited to 'dundee')
-rw-r--r--dundee/dbus.c7
-rw-r--r--dundee/device.c3
-rw-r--r--dundee/dundee.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/dundee/dbus.c b/dundee/dbus.c
index 90bd76be..a1fd2f92 100644
--- a/dundee/dbus.c
+++ b/dundee/dbus.c
@@ -44,6 +44,13 @@ DBusMessage *__dundee_error_failed(DBusMessage *msg)
"Operation failed");
}
+DBusMessage *__dundee_error_in_progress(DBusMessage *msg)
+{
+ return g_dbus_create_error(msg, DUNDEE_ERROR_INTERFACE
+ ".InProgress",
+ "Operation already in progress");
+}
+
DBusMessage *__dundee_error_timed_out(DBusMessage *msg)
{
return g_dbus_create_error(msg, DUNDEE_ERROR_INTERFACE ".Timedout",
diff --git a/dundee/device.c b/dundee/device.c
index 2d84aaa9..3b32444b 100644
--- a/dundee/device.c
+++ b/dundee/device.c
@@ -456,6 +456,9 @@ static DBusMessage *set_property_active(struct dundee_device *device,
if (dbus_message_iter_get_arg_type(var) != DBUS_TYPE_BOOLEAN)
return __dundee_error_invalid_args(msg);
+ if (device->pending)
+ return __dundee_error_in_progress(msg);
+
dbus_message_iter_get_basic(var, &active);
device->pending = dbus_message_ref(msg);
diff --git a/dundee/dundee.h b/dundee/dundee.h
index 1889d84a..1af56ca2 100644
--- a/dundee/dundee.h
+++ b/dundee/dundee.h
@@ -96,6 +96,7 @@ void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply);
DBusMessage *__dundee_error_invalid_args(DBusMessage *msg);
DBusMessage *__dundee_error_failed(DBusMessage *msg);
+DBusMessage *__dundee_error_in_progress(DBusMessage *msg);
DBusMessage *__dundee_error_timed_out(DBusMessage *msg);