diff --git a/src/dbus.c b/src/dbus.c index b74481fb..25af2ec3 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -316,6 +316,12 @@ DBusMessage *__ofono_error_in_use(DBusMessage *msg) "The resource is currently in use"); } +DBusMessage *__ofono_error_not_attached(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".NotAttached", + "GPRS is not attached"); +} + void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply) { DBusConnection *conn = ofono_dbus_get_connection(); diff --git a/src/gprs.c b/src/gprs.c index 6b88fcbb..7c316793 100644 --- a/src/gprs.c +++ b/src/gprs.c @@ -603,12 +603,12 @@ static DBusMessage *pri_set_property(DBusConnection *conn, if (ctx->active == (ofono_bool_t) value) return dbus_message_new_method_return(msg); + if (value && !ctx->gprs->attached) + return __ofono_error_not_attached(msg); + if (ctx->gprs->flags & GPRS_FLAG_ATTACHING) return __ofono_error_busy(msg); - if (value && !ctx->gprs->attached) - return __ofono_error_failed(msg); - if (gc == NULL || gc->driver->activate_primary == NULL || gc->driver->deactivate_primary == NULL) return __ofono_error_not_implemented(msg); diff --git a/src/ofono.h b/src/ofono.h index b03dafce..037c4039 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -51,6 +51,7 @@ DBusMessage *__ofono_error_not_supported(DBusMessage *msg); DBusMessage *__ofono_error_timed_out(DBusMessage *msg); DBusMessage *__ofono_error_sim_not_ready(DBusMessage *msg); DBusMessage *__ofono_error_in_use(DBusMessage *msg); +DBusMessage *__ofono_error_not_attached(DBusMessage *msg); void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply);