[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