Unregister AT notifications when removing stk driver. --- drivers/atmodem/stk.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/atmodem/stk.c b/drivers/atmodem/stk.c index d6c19da..de687f8 100644 --- a/drivers/atmodem/stk.c +++ b/drivers/atmodem/stk.c @@ -44,6 +44,8 @@ struct stk_data { GAtChat *chat; unsigned int vendor; + guint tcmd_id; + guint tend_id; }; static const char *csim_prefix[] = { "+CSIM:", NULL }; @@ -294,10 +296,12 @@ static gboolean at_stk_register(gpointer user) struct stk_data *sd = ofono_stk_get_data(stk); if (sd->vendor == OFONO_VENDOR_PHONESIM) { - g_at_chat_register(sd->chat, "*TCMD:", phonesim_tcmd_notify, + sd->tcmd_id = g_at_chat_register(sd->chat, "*TCMD:", + phonesim_tcmd_notify, FALSE, stk, NULL); - g_at_chat_register(sd->chat, "*TEND", phonesim_tend_notify, + sd->tend_id = g_at_chat_register(sd->chat, "*TEND", + phonesim_tend_notify, FALSE, stk, NULL); } @@ -325,6 +329,9 @@ static void at_stk_remove(struct ofono_stk *stk) { struct stk_data *sd = ofono_stk_get_data(stk); + g_at_chat_unregister(sd->chat, sd->tcmd_id); + g_at_chat_unregister(sd->chat, sd->tend_id); + ofono_stk_set_data(stk, NULL); g_free(sd); -- 1.7.0.4 _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono