From a96aa11bb5bb314c003f054f433f709f65c16290 Mon Sep 17 00:00:00 2001 From: Gustavo Padovan Date: Mon, 24 Jun 2013 17:14:02 +0100 Subject: [PATCH] dundee: return error if there is a connection procedure ongoing --- dundee/dbus.c | 7 +++++++ dundee/device.c | 3 +++ dundee/dundee.h | 1 + 3 files changed, 11 insertions(+) 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);