summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/modem.c15
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,