diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2022-05-20 14:41:48 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-05-20 15:36:43 +0200 |
commit | 4140758fdf5417d742d971a138d40833cdc18847 (patch) | |
tree | 326a77a959fe847274c5ebfca7eb31f207b97d15 /src/mm-base-modem.c | |
parent | 0c67d93eddd897eab7b8b4eee3fa244d83cde9ee (diff) |
base-modem: if ABORTED during initialization, modem not exported
Commit b497de325 introduced a change by which some common errors (e.g.
SIM missing) would be reported as MM_CORE_ERROR_ABORTED.
This had the undesired effect of making the MMBaseModem object not
flag as valid the modem, because the returned error wasn't
MM_CORE_ERROR_WRONG_STATE.
We now change this logic so that only ABORTED makes the modem object
not flagged as valid, and we'll do that only if the Modem interface
isn't exposed in DBus.
Fixes b497de325
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r-- | src/mm-base-modem.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index b8464414..13fe14dd 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -1233,29 +1233,21 @@ static void initialize_ready (MMBaseModem *self, GAsyncResult *res) { - GError *error = NULL; + g_autoptr(GError) error = NULL; - if (mm_base_modem_initialize_finish (self, res, &error)) { + if (!mm_base_modem_initialize_finish (self, res, &error)) { + if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_ABORTED)) { + /* FATAL error, won't even be exported in DBus */ + mm_obj_err (self, "fatal error initializing: %s", error->message); + } else { + /* non-fatal error */ + mm_obj_warn (self, "error initializing: %s", error->message); + mm_base_modem_set_valid (self, TRUE); + } + } else { mm_obj_dbg (self, "modem initialized"); mm_base_modem_set_valid (self, TRUE); - return; } - - /* Wrong state is returned when modem is found locked */ - if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE)) { - /* Even with initialization errors, we do set the state to valid, so - * that the modem gets exported and the failure notified to the user. - */ - mm_obj_dbg (self, "couldn't finish initialization in the current state: '%s'", error->message); - g_error_free (error); - mm_base_modem_set_valid (self, TRUE); - return; - } - - /* Really fatal, we cannot even export the failed modem (e.g. error before - * even trying to enable the Modem interface */ - mm_obj_warn (self, "couldn't initialize: '%s'", error->message); - g_error_free (error); } static inline void |