summaryrefslogtreecommitdiffstats
path: root/src/sim.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-12-16 08:34:59 -0600
committerDenis Kenzior <denkenz@gmail.com>2011-12-16 09:44:10 -0600
commit7f18695f46d0d5bdcf2f7fab689800b94d9aedff (patch)
tree7e8c426abab3ef1e98a6ebd65ca5bab158f704c4 /src/sim.c
parente4e934c3683beb348c5d18f9fc035c2b76c6c522 (diff)
downloadofono-7f18695f46d0d5bdcf2f7fab689800b94d9aedff.tar.bz2
sim: Reset additional state info
We were not resetting 3GPP and CPHS phase information as well as the CPHS service table entries on sim removal / reset.
Diffstat (limited to 'src/sim.c')
-rw-r--r--src/sim.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sim.c b/src/sim.c
index d1d55c54..3cdfa426 100644
--- 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);