dundee: return error if there is a connection procedure ongoing
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>
Mon, 24 Jun 2013 16:14:02 +0000 (17:14 +0100)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Sat, 29 Jun 2013 19:10:21 +0000 (21:10 +0200)
dundee/dbus.c
dundee/device.c
dundee/dundee.h

index 90bd76b..a1fd2f9 100644 (file)
@@ -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",
index 2d84aaa..3b32444 100644 (file)
@@ -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);
index 1889d84..1af56ca 100644 (file)
@@ -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);