summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-04-29 00:26:10 -0700
committerKeith Packard <keithp@keithp.com>2017-04-29 09:14:58 -0700
commite2f68296ffb8e40035c0ebd949b67d1e2e424e11 (patch)
treecdfdcd428b8c0ae6600a462e8929f3f3a17133d9 /os
parenta82971b07035ee9a4e3ed01326e7c1eab34b5a19 (diff)
os: Mark client as ready to read when closing due to write failure [100863]
This makes sure the server will go look at the client again, notice that the FD is no longer valid and close the client down. Bugzilla: https://bugs.freedesktop.org/100863 Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'os')
-rw-r--r--os/io.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/os/io.c b/os/io.c
index 9b6a7d459..e1b90d17e 100644
--- a/os/io.c
+++ b/os/io.c
@@ -635,7 +635,10 @@ SetCriticalOutputPending(void)
/*****************
* AbortClient:
* When a write error occurs to a client, close
- * the connection and clean things up.
+ * the connection and clean things up. Mark
+ * the client as 'ready' so that the server will
+ * try to read from it again, notice that the fd is
+ * closed and clean up from there.
*****************/
static void
@@ -647,6 +650,7 @@ AbortClient(ClientPtr client)
_XSERVTransDisconnect(oc->trans_conn);
_XSERVTransClose(oc->trans_conn);
oc->trans_conn = NULL;
+ mark_client_ready(client);
}
}