There's a small probability that we call chat_wakeup_writer
just before the channel disonnects and for some reason glib then
calls can_write_data after we have unrefed the io and freed all the
resources.  Calling at_chat_suspend unsubscribes can_write_data
from the io.
---
 gatchat/gatchat.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/gatchat/gatchat.c b/gatchat/gatchat.c
index 218f592..957181c 100644
--- a/gatchat/gatchat.c
+++ b/gatchat/gatchat.c
@@ -40,6 +40,7 @@
 
 struct at_chat;
 static void chat_wakeup_writer(struct at_chat *chat);
+static void at_chat_suspend(struct at_chat *chat);
 
 static const char *none_prefix[] = { NULL };
 
@@ -364,6 +365,7 @@ static void io_disconnect(gpointer user_data)
        struct at_chat *chat = user_data;
 
        chat_cleanup(chat);
+       at_chat_suspend(chat);
        g_at_io_unref(chat->io);
        chat->io = NULL;
 
-- 
1.7.1.86.g0e460.dirty

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

Reply via email to