iface-modem-3gpp: avoid re-setting deferred registration update while disabling

Don't clear the current deferred registration update until having disabled
and cleaned up unsolicited registrations state messages, or we may end up
re-setting the deferred registration update again meanwhile
This commit is contained in:
Aleksander Morgado
2013-03-01 18:21:19 +01:00
parent f93bba25f2
commit 9ee9845b1e

View File

@@ -1347,6 +1347,7 @@ typedef enum {
DISABLING_STEP_PERIODIC_REGISTRATION_CHECKS, DISABLING_STEP_PERIODIC_REGISTRATION_CHECKS,
DISABLING_STEP_DISABLE_UNSOLICITED_REGISTRATION_EVENTS, DISABLING_STEP_DISABLE_UNSOLICITED_REGISTRATION_EVENTS,
DISABLING_STEP_CLEANUP_UNSOLICITED_REGISTRATION_EVENTS, DISABLING_STEP_CLEANUP_UNSOLICITED_REGISTRATION_EVENTS,
DISABLING_STEP_CLEANUP_DEFERRED_REGISTRATION_UPDATE,
DISABLING_STEP_CLEANUP_UNSOLICITED_EVENTS, DISABLING_STEP_CLEANUP_UNSOLICITED_EVENTS,
DISABLING_STEP_DISABLE_UNSOLICITED_EVENTS, DISABLING_STEP_DISABLE_UNSOLICITED_EVENTS,
DISABLING_STEP_REGISTRATION_STATE, DISABLING_STEP_REGISTRATION_STATE,
@@ -1419,8 +1420,6 @@ interface_disabling_step (DisablingContext *ctx)
case DISABLING_STEP_PERIODIC_REGISTRATION_CHECKS: case DISABLING_STEP_PERIODIC_REGISTRATION_CHECKS:
/* Disable periodic registration checks, if they were set */ /* Disable periodic registration checks, if they were set */
periodic_registration_check_disable (ctx->self); periodic_registration_check_disable (ctx->self);
/* Prevent any deferred registration state update from happening after the modem is disabled */
clear_deferred_registration_state_update (ctx->self);
/* Fall down to next step */ /* Fall down to next step */
ctx->step++; ctx->step++;
@@ -1462,6 +1461,12 @@ interface_disabling_step (DisablingContext *ctx)
/* Fall down to next step */ /* Fall down to next step */
ctx->step++; ctx->step++;
case DISABLING_STEP_CLEANUP_DEFERRED_REGISTRATION_UPDATE:
/* Prevent any deferred registration state update from happening after the modem is disabled */
clear_deferred_registration_state_update (ctx->self);
/* Fall down to next step */
ctx->step++;
case DISABLING_STEP_CLEANUP_UNSOLICITED_EVENTS: case DISABLING_STEP_CLEANUP_UNSOLICITED_EVENTS:
if (MM_IFACE_MODEM_3GPP_GET_INTERFACE (ctx->self)->cleanup_unsolicited_events && if (MM_IFACE_MODEM_3GPP_GET_INTERFACE (ctx->self)->cleanup_unsolicited_events &&
MM_IFACE_MODEM_3GPP_GET_INTERFACE (ctx->self)->cleanup_unsolicited_events_finish) { MM_IFACE_MODEM_3GPP_GET_INTERFACE (ctx->self)->cleanup_unsolicited_events_finish) {