summaryrefslogtreecommitdiffstats
path: root/dundee
diff options
context:
space:
mode:
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>2013-06-24 17:14:02 +0100
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2013-06-29 21:10:21 +0200
commita96aa11bb5bb314c003f054f433f709f65c16290 (patch)
tree4031749e225c7791acdd3ef19f3144159ff010da /dundee
parentd6a601f8d17968f1112da68f94c74ee69264ed76 (diff)
downloadofono-a96aa11bb5bb314c003f054f433f709f65c16290.tar.bz2
dundee: return error if there is a connection procedure ongoing
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);