aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-12-27 09:37:00 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-12-27 09:37:00 +0100
commite4df2ffa18a3f6b87bf0b61c3271e1f5aa0c7cf7 (patch)
treee4e76aa327f2586b3e11cf87c44cbdfb4fe188e2
parent32ebe5b6cae3c0a1d3a3e450e6d9dd74b8f86b34 (diff)
qmi-port: ignore errors when opening device and device ends up openzte-qmi
If we try to open the QMI device and we fail in one of the internal steps afterwards (e.g. set data format), just log it and ignore it for now.
-rw-r--r--src/mm-qmi-port.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/mm-qmi-port.c b/src/mm-qmi-port.c
index a26fdaba..e9da58da 100644
--- a/src/mm-qmi-port.c
+++ b/src/mm-qmi-port.c
@@ -200,11 +200,22 @@ qmi_device_open_ready (QmiDevice *qmi_device,
ctx->self->priv->opening = FALSE;
if (!qmi_device_open_finish (qmi_device, res, &error)) {
- g_clear_object (&ctx->self->priv->qmi_device);
- g_simple_async_result_take_error (ctx->result, error);
- } else
- g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
+ /* Error may have been in the setup steps after really opening the
+ * device (e.g. during data format setting). In this case, just log
+ * the error and keep on */
+ if (!qmi_device_is_open (ctx->self->priv->qmi_device)) {
+ g_clear_object (&ctx->self->priv->qmi_device);
+ g_simple_async_result_take_error (ctx->result, error);
+ port_open_context_complete_and_free (ctx);
+ return;
+ }
+
+ /* Not critical */
+ mm_warn ("Error setting up open port: '%s'", error->message);
+ g_error_free (error);
+ }
+ g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
port_open_context_complete_and_free (ctx);
}