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 <phar...@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

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to