shared/io: Don't process HUP cond before others 15/204915/1
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 20 Feb 2018 09:11:26 +0000 (11:11 +0200)
committerAmit Purwar <amit.purwar@samsung.com>
Mon, 15 Apr 2019 03:30:53 +0000 (09:00 +0530)
When a HUP happens there maybe data left to be processed so the
disconnect handler shall be called last.

Change-Id: Ic4a4ec535cc628f01118c5ade20d5e36bc25671a
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
src/shared/io-glib.c

index 6687a6b..d62de4e 100755 (executable)
@@ -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);