call-forwarding: Check if ussd is busy
authorYang Gu <yang.gu@intel.com>
Mon, 6 Sep 2010 02:19:55 +0000 (10:19 +0800)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 9 Sep 2010 14:01:52 +0000 (09:01 -0500)
src/call-forwarding.c

index 4e77144..c8a79b1 100644 (file)
@@ -430,7 +430,7 @@ static DBusMessage *cf_get_properties(DBusConnection *conn, DBusMessage *msg,
        if (!cf->driver->query)
                return __ofono_error_not_implemented(msg);
 
-       if (cf->pending)
+       if (cf->pending || __ofono_ussd_is_busy(cf->ussd))
                return __ofono_error_busy(msg);
 
        cf->pending = dbus_message_ref(msg);
@@ -586,7 +586,7 @@ static DBusMessage *cf_set_property(DBusConnection *conn, DBusMessage *msg,
        int cls;
        int type;
 
-       if (cf->pending)
+       if (cf->pending || __ofono_ussd_is_busy(cf->ussd))
                return __ofono_error_busy(msg);
 
        if (!dbus_message_iter_init(msg, &iter))
@@ -704,7 +704,7 @@ static DBusMessage *cf_disable_all(DBusConnection *conn, DBusMessage *msg,
        if (!cf->driver->erasure)
                return __ofono_error_not_implemented(msg);
 
-       if (cf->pending)
+       if (cf->pending || __ofono_ussd_is_busy(cf->ussd))
                return __ofono_error_busy(msg);
 
        if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &strtype,