Diff between bc3f2cff83f56e0db55f6d6aa8cc6fc1962c5008 and 1bf0336942fd093a0f8fa890eb026e1dc379f35f

Changed Files

File Additions Deletions Status
src/shared/io-glib.c +4 -1 modified

Full Patch

diff --git a/src/shared/io-glib.c b/src/shared/io-glib.c
index 6687a6b..d62de4e 100644
--- a/src/shared/io-glib.c
+++ b/src/shared/io-glib.c
@@ -179,6 +179,7 @@ static struct io_watch *watch_new(struct io *io, GIOCondition cond,
 				io_destroy_func_t destroy)
 {
 	struct io_watch *watch;
+	int prio;
 
 	watch = g_try_new0(struct io_watch, 1);
 	if (!watch)
@@ -189,7 +190,9 @@ static struct io_watch *watch_new(struct io *io, GIOCondition cond,
 	watch->destroy = destroy;
 	watch->user_data = user_data;
 
-	watch->id = g_io_add_watch_full(io->channel, G_PRIORITY_DEFAULT,
+	prio = cond == G_IO_HUP ? G_PRIORITY_DEFAULT_IDLE : G_PRIORITY_DEFAULT;
+
+	watch->id = g_io_add_watch_full(io->channel, prio,
 						cond | G_IO_ERR | G_IO_NVAL,
 						watch_callback, watch,
 						watch_destroy);