Hi Zhenhua, > @@ -278,6 +278,7 @@ void g_at_hdlc_unref(GAtHDLC *hdlc) > hdlc->record_fd = -1; > } > > + g_at_io_set_disconnect_function(hdlc->io, NULL, NULL); Since GAtHDLC does not set the disconnect function, this really belongs in GAtPPP. > g_at_io_unref(hdlc->io); > hdlc->io = NULL; > However, I really question why this patch is necessary. The only way the disconnect function is not reset today is if the GAtIO is refed and g_at_chat_resume is not called. We do call g_at_io_set_disconnect function in g_at_chat_resume. Regards, -Denis