---
 src/sim.c | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index 0bbd1ef..ab5f2c6 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2372,13 +2372,6 @@ static void sim_spn_close(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;
@@ -2547,7 +2540,24 @@ void ofono_sim_inserted_notify(struct ofono_sim *sim, 
ofono_bool_t inserted)
                        sim_initialize(sim);
                }
        } else {
-               sim->pin_type = OFONO_SIM_PASSWORD_NONE;
+               switch (sim->pin_type) {
+               case OFONO_SIM_PASSWORD_SIM_PIN:
+               case OFONO_SIM_PASSWORD_SIM_PUK:
+               case OFONO_SIM_PASSWORD_SIM_PIN2:
+               case OFONO_SIM_PASSWORD_SIM_PUK2:
+                       sim->pin_type = OFONO_SIM_PASSWORD_NONE;
+                       break;
+               default:
+                       break;
+               }
+
+               sim->locked_pins[OFONO_SIM_PASSWORD_SIM_PIN] = FALSE;
+               sim->locked_pins[OFONO_SIM_PASSWORD_SIM_PIN2] = FALSE;
+
+               sim->pin_retries[OFONO_SIM_PASSWORD_SIM_PIN] = -1;
+               sim->pin_retries[OFONO_SIM_PASSWORD_SIM_PUK] = -1;
+               sim->pin_retries[OFONO_SIM_PASSWORD_SIM_PIN2] = -1;
+               sim->pin_retries[OFONO_SIM_PASSWORD_SIM_PUK2] = -1;
 
                sim_free_state(sim);
        }
-- 
1.9.1

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to