diff options
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 11 | ||||
-rw-r--r-- | src/mm-iface-modem-firmware.c | 14 |
2 files changed, 16 insertions, 9 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index e3b37bd5..21ab8698 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -10383,10 +10383,13 @@ firmware_load_current (MMIfaceModemFirmware *_self, GTask *task; task = g_task_new (self, NULL, callback, user_data); - g_task_return_pointer ( - task, - self->priv->current_firmware ? g_object_ref (self->priv->current_firmware) : NULL, - g_object_unref); + if (self->priv->current_firmware) + g_task_return_pointer (task, + g_object_ref (self->priv->current_firmware), + g_object_unref); + else + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND, + "current firmware unknown"); g_object_unref (task); } diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index da106b00..0646f376 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -68,12 +68,16 @@ load_current_ready (MMIfaceModemFirmware *self, GList *l; GError *error = NULL; - /* reported current may be NULL and we don't treat it as error */ ctx->current = MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_current_finish (self, res, &error); - if (error) { - g_dbus_method_invocation_take_error (ctx->invocation, error); - handle_list_context_free (ctx); - return; + if (!ctx->current) { + /* Not found isn't fatal */ + if (!g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND)) { + g_dbus_method_invocation_take_error (ctx->invocation, error); + handle_list_context_free (ctx); + return; + } + mm_dbg ("Couldn't load current firmware image: %s", error->message); + g_clear_error (&error); } /* Build array of dicts */ |