aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-07-25 17:19:05 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-29 17:26:42 +0200
commit629f452d0746156d8adc61290305eba22ac25890 (patch)
treeadc63b531984e68ef0b8edbd7655b0d040e667f1 /src
parentb5534d123bb023220a1d816110828912d4681de3 (diff)
broadband-modem-qmi: treat as fatal internal protocol errors when checking PIN status
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-qmi.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index f7d44b3b..192e250a 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -690,8 +690,21 @@ dms_uim_get_pin_status_ready (QmiClientDms *client,
g_prefix_error (&error, "QMI operation failed: ");
g_simple_async_result_take_error (simple, error);
} else if (!qmi_message_dms_uim_get_pin_status_output_get_result (output, &error)) {
- g_prefix_error (&error, "Couldn't get PIN status: ");
- g_simple_async_result_take_error (simple, error);
+ /* When no SIM inserted, an internal error when checking PIN status
+ * needs to be fatal so that we mark the modem unusable. */
+ if (g_error_matches (error,
+ QMI_PROTOCOL_ERROR,
+ QMI_PROTOCOL_ERROR_INTERNAL)) {
+ g_simple_async_result_set_error (simple,
+ MM_MOBILE_EQUIPMENT_ERROR,
+ MM_MOBILE_EQUIPMENT_ERROR_SIM_FAILURE,
+ "Couldn't get PIN status: %s",
+ error->message);
+ g_error_free (error);
+ } else {
+ g_prefix_error (&error, "Couldn't get PIN status: ");
+ g_simple_async_result_take_error (simple, error);
+ }
} else {
MMModemLock lock = MM_MODEM_LOCK_UNKNOWN;
QmiDmsUimPinStatus current_status;