From: Luiz Augusto von Dentz Date: Tue, 20 Feb 2018 09:11:26 +0000 (+0200) Subject: shared/io: Don't process HUP cond before others X-Git-Tag: accepted/tizen/unified/20190522.085452~1^2~167 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F15%2F204915%2F1;p=platform%2Fupstream%2Fbluez.git shared/io: Don't process HUP cond before others 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 --- diff --git a/src/shared/io-glib.c b/src/shared/io-glib.c index 6687a6b..d62de4e 100755 --- 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);