sim: Reset additional state info
authorDenis Kenzior <denkenz@gmail.com>
Fri, 16 Dec 2011 14:34:59 +0000 (08:34 -0600)
committerDenis Kenzior <denkenz@gmail.com>
Fri, 16 Dec 2011 15:44:10 +0000 (09:44 -0600)
We were not resetting 3GPP and CPHS phase information as well as the
CPHS service table entries on sim removal / reset.

src/sim.c

index d1d55c5..3cdfa42 100644 (file)
--- a/src/sim.c
+++ b/src/sim.c
@@ -2219,6 +2219,13 @@ static void sim_free_early_state(struct ofono_sim *sim)
 
 static void sim_free_main_state(struct ofono_sim *sim)
 {
+       int i;
+
+       for (i = 0; i < OFONO_SIM_PASSWORD_INVALID; i++)
+               sim->pin_retries[i] = -1;
+
+       memset(sim->locked_pins, 0, sizeof(sim->locked_pins));
+
        if (sim->imsi) {
                g_free(sim->imsi);
                sim->imsi = NULL;
@@ -2259,7 +2266,10 @@ static void sim_free_main_state(struct ofono_sim *sim)
                sim->efsst_length = 0;
        }
 
+       sim->phase = OFONO_SIM_PHASE_UNKNOWN;
+       sim->cphs_phase = OFONO_SIM_CPHS_PHASE_NONE;
        sim->mnc_length = 0;
+       memset(sim->cphs_service_table, 0, 2);
 
        if (sim->efimg) {
                g_free(sim->efimg);