aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavan Holla <pholla@chromium.org>2020-09-30 20:29:36 +0000
committerAleksander Morgado <aleksander@aleksander.es>2020-10-03 13:14:21 +0000
commit74ab15d3239b62c53a0eecfac5a0488b6731bb71 (patch)
tree5affa76ed349008cd8062c42435d02d5c6dfe132 /src
parentaa4dce2afc804d6ba4670392919dd12dbc62a162 (diff)
broadband-modem-qmi: Return error if get_pin_status fails
Prior to this CL, failure to get pin status while probing facility locks would not flag an error. Failure to read a pin lock is a critical error and we return it to higher layers.
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-qmi.c51
1 files changed, 27 insertions, 24 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index f0e75f20..aafe2949 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -1998,41 +1998,44 @@ get_sim_lock_status_via_pin_status_ready (QmiClientDms *client,
MMBroadbandModemQmi *self;
LoadEnabledFacilityLocksContext *ctx;
QmiMessageDmsUimGetPinStatusOutput *output;
- gboolean enabled;
+ QmiDmsUimPinStatus current_status;
+ GError *error;
+ gboolean pin1_enabled;
self = g_task_get_source_object (task);
ctx = g_task_get_task_data (task);
- output = qmi_client_dms_uim_get_pin_status_finish (client, res, NULL);
+ output = qmi_client_dms_uim_get_pin_status_finish (client, res, &error);
if (!output ||
- !qmi_message_dms_uim_get_pin_status_output_get_result (output, NULL)) {
- mm_obj_dbg (self, "couldn't query PIN status, assuming SIM PIN is disabled");
- enabled = FALSE;
- } else {
- QmiDmsUimPinStatus current_status;
-
- if (qmi_message_dms_uim_get_pin_status_output_get_pin1_status (
- output,
- &current_status,
- NULL, /* verify_retries_left */
- NULL, /* unblock_retries_left */
- NULL)) {
- enabled = mm_pin_enabled_from_qmi_uim_pin_status (current_status);
- mm_obj_dbg (self, "PIN is reported %s", (enabled ? "enabled" : "disabled"));
- } else {
- mm_obj_dbg (self, "couldn't find PIN1 status in the result, assuming SIM PIN is disabled");
- enabled = FALSE;
- }
+ !qmi_message_dms_uim_get_pin_status_output_get_result (output, &error)) {
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ if (output)
+ qmi_message_dms_uim_get_pin_status_output_unref (output);
+ return;
}
- if (output)
+ if (qmi_message_dms_uim_get_pin_status_output_get_pin1_status (
+ output,
+ &current_status,
+ NULL, /* verify_retries_left */
+ NULL, /* unblock_retries_left */
+ &error)) {
+ pin1_enabled = mm_pin_enabled_from_qmi_uim_pin_status (current_status);
+ mm_obj_dbg (self, "PIN1 is reported %s", (pin1_enabled ? "enabled" : "disabled"));
+ } else {
qmi_message_dms_uim_get_pin_status_output_unref (output);
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ return;
+ }
+
+ qmi_message_dms_uim_get_pin_status_output_unref (output);
- if (enabled) {
+ if (pin1_enabled)
ctx->locks |= (MM_MODEM_3GPP_FACILITY_SIM);
- } else {
+ else
ctx->locks &= ~(MM_MODEM_3GPP_FACILITY_SIM);
- }
/* No more facilities to query, all done */
g_task_return_int (task, ctx->locks);