diff --git a/obexd/src/obex.c b/obexd/src/obex.c
index 6380702..b85f05b 100644
--- a/obexd/src/obex.c
+++ b/obexd/src/obex.c
OBEX_Cleanup(obex);
}
+static gboolean tty_reinit(gpointer data)
+{
+ struct server *server = data;
+
+ tty_init(server->services, server->folder, server->capability, server->devnode);
+
+ server_free(server);
+
+ return FALSE;
+}
+
static gboolean obex_handle_input(GIOChannel *io,
GIOCondition cond, gpointer user_data)
{
return TRUE;
failed:
- if (os->server->devnode)
- tty_closed();
+ if (os->server->devnode) {
+ if (cond & G_IO_NVAL)
+ tty_closed();
+ else
+ g_idle_add(tty_reinit, os->server);
+ }
+
return FALSE;
}