Simon McVittie 0f01bef4b4 GDBusWorker: tolerate read errors while closing
My previous fix for GNOME#662100 was incomplete: it seems that with some
timings, the stream can be closed with an async read in-flight. This
can make the read fail immediately with G_IO_ERROR_CLOSED instead of
becoming cancelled.

This happens reliably on an embedded device, and rarely on my laptop;
repeating the test 100 times in quick succession reliably reproduces
the bug on my laptop.

It seems as though what we really want is to ignore read errors, once
we've established that we want to close the connection anyway - this
means that after asking to close, you're immune to exit-on-close,
which seems like a good rule.

An additional subtlety is that continuing to read after we know we
want to close is still required, otherwise we'll never emit ::closed.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100
Bug-NB: NB#287088
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Colin Walters <walters@verbum.org>
2011-11-11 16:05:21 +00:00
..
2011-10-18 17:12:33 +01:00
2010-08-13 17:23:44 -04:00
2010-09-02 22:36:47 +03:00
2011-09-04 17:50:41 -04:00
2011-06-12 16:17:30 -04:00
2011-06-04 10:45:54 -04:00
2009-03-31 19:39:16 -04:00
2011-08-29 14:49:32 -04:00
2011-10-16 21:41:15 -04:00
2011-10-18 17:12:33 +01:00
2011-08-29 14:49:32 -04:00
2011-08-29 14:49:32 -04:00
2010-07-12 18:30:14 -04:00
2011-10-18 17:12:33 +01:00
2011-06-04 19:05:51 -04:00
2010-07-05 00:56:12 -04:00
2011-08-29 14:49:32 -04:00
2010-03-26 09:30:25 -04:00
2010-07-12 18:30:14 -04:00
2010-07-12 18:30:14 -04:00
2011-08-29 14:49:32 -04:00
2010-07-12 18:30:14 -04:00
2011-06-14 21:06:17 -04:00
2011-10-18 17:12:33 +01:00
2010-07-07 19:53:22 -04:00
2011-10-15 18:02:32 -04:00
2011-08-29 14:49:32 -04:00
2011-08-29 14:49:32 -04:00
2011-10-15 18:02:32 -04:00
2011-08-29 14:49:32 -04:00
2011-06-04 18:48:19 -04:00
2011-08-29 14:49:32 -04:00
2011-08-29 14:49:32 -04:00
2010-01-12 16:34:18 +01:00
2011-06-07 08:55:31 +08:00
2011-08-29 14:49:32 -04:00
2011-10-16 21:41:15 -04:00
2011-08-29 14:49:32 -04:00
2011-09-04 17:50:41 -04:00
2010-07-10 18:04:22 -04:00
2010-07-07 19:53:22 -04:00
2011-02-08 10:05:00 -05:00
2011-10-16 21:41:15 -04:00
2011-10-16 21:41:15 -04:00
2011-02-08 10:05:00 -05:00
2010-11-28 23:55:43 -05:00
2010-06-04 19:03:38 +02:00
2011-10-18 17:12:33 +01:00
2010-11-28 23:55:43 -05:00
2011-06-04 18:48:19 -04:00
2010-08-19 16:32:37 -04:00
2011-08-29 14:49:32 -04:00
2011-08-29 14:49:32 -04:00
2011-01-09 21:45:20 +01:00
2011-08-29 14:49:32 -04:00
2010-04-16 23:23:40 -04:00
2011-10-18 17:12:33 +01:00
2011-10-16 21:41:15 -04:00
2011-10-16 21:41:15 -04:00
2011-08-29 14:49:32 -04:00
2011-10-18 17:12:33 +01:00
2011-10-16 21:41:15 -04:00
2011-10-16 21:41:15 -04:00
2011-10-16 21:41:15 -04:00
2011-08-04 08:54:55 +02:00
2011-10-16 21:41:15 -04:00
2011-08-26 11:07:32 -04:00
2011-10-02 22:33:10 -04:00
2011-06-14 18:51:57 -04:00
2011-05-05 14:09:11 -04:00
2011-10-03 14:06:47 -04:00
2011-10-03 14:06:47 -04:00
2009-07-05 22:35:55 -04:00
2011-08-29 14:49:32 -04:00
2010-07-07 19:53:22 -04:00
2011-08-29 14:49:32 -04:00