Diff between f170350e9cbbe9ca0868d34a538b40b2de8e8828 and ed4a34270a9301fa6a53d4a4f4526c4b3eead4e7

Changed Files

File Additions Deletions Status
obexd/src/obex.c +18 -2 modified

Full Patch

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
@@ -935,6 +935,17 @@ static void obex_handle_destroy(gpointer user_data)
 	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)
 {
@@ -957,8 +968,13 @@ static gboolean obex_handle_input(GIOChannel *io,
 	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;
 }