[PATCH xserver] Fix random hangs handling too-big requests
Peter Harris
pharris at opentext.com
Mon Jul 15 16:44:59 PDT 2013
If a request is too big, input->ignoreBytes is set. When ignoreBytes is
set, the number of bytes "got now" is artificially set to zero so the
rest of the server does not process the partial request.
Make sure the input buffer is not put back on the AvailableInput list,
or the ignoreBytes count could be assigned to an unrelated client.
Signed-off-by: Peter Harris <pharris at opentext.com>
---
os/io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/os/io.c b/os/io.c
index 0d980ab..3f7e3e0 100644
--- a/os/io.c
+++ b/os/io.c
@@ -451,7 +451,7 @@ ReadRequestFromClient(ClientPtr client)
}
}
else {
- if (!gotnow)
+ if (!gotnow && !oc->input->ignoreBytes)
AvailableInput = oc;
if (!SmartScheduleDisable)
FD_CLR(fd, &ClientsWithInput);
--
1.7.10.4
More information about the xorg-devel
mailing list