diff options
-rw-r--r-- | src/modem.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/modem.c b/src/modem.c index a2c5d4f8..fa428de7 100644 --- a/src/modem.c +++ b/src/modem.c @@ -460,15 +460,18 @@ static DBusMessage *set_property_online(struct ofono_modem *modem, dbus_message_iter_get_basic(var, &online); - if (modem->online == online) - return dbus_message_new_method_return(msg); - - if (!driver || !driver->set_online) - return __ofono_error_failed(msg); - if (modem->pending != NULL) return __ofono_error_busy(msg); + if (!driver->set_online) + return __ofono_error_not_implemented(msg); + + if (modem->modem_state < MODEM_STATE_OFFLINE) + return __ofono_error_not_available(msg); + + if (modem->online == online) + return dbus_message_new_method_return(msg); + modem->pending = dbus_message_ref(msg); driver->set_online(modem, online, |