ofono: Cancel pending SetProperty
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 19 Jan 2012 10:24:16 +0000 (11:24 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 20 Jan 2012 01:21:28 +0000 (02:21 +0100)
If the cellular technolgy is disabled while ConnMan is connected
to a cellular network, the plugin gets first a network_disconnect()
call and shortly after that a modem_disable(). network_disconnect()
will set org.ofono.ConnectionContext.Active to false while this call
is pending modem_disable() tries to set org.ofono.Modem.Online to false.

There is no point in waiting for the first call to succeed or fail.
Just cancel it and set the modem offline.

Fixes BMC#24651.

plugins/ofono.c

index c9a3256..f15c36d 100644 (file)
@@ -338,8 +338,10 @@ static int set_property(struct modem_data *modem,
        DBG("%s path %s %s.%s", modem->path, path, interface, property);
 
        if (modem->call_set_property != NULL) {
-               connman_error("Pending SetProperty");
-               return -EBUSY;
+               DBG("Cancel pending SetProperty");
+
+               dbus_pending_call_cancel(modem->call_set_property);
+               modem->call_set_property = NULL;
        }
 
        message = dbus_message_new_method_call(OFONO_SERVICE, path,