diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-07-25 17:19:05 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-29 17:26:42 +0200 |
commit | 629f452d0746156d8adc61290305eba22ac25890 (patch) | |
tree | adc63b531984e68ef0b8edbd7655b0d040e667f1 /src | |
parent | b5534d123bb023220a1d816110828912d4681de3 (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.c | 17 |
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; |