[PATCH xserver] Fix random hangs handling too-big requests

Peter Harris pharris at opentext.com
Mon Aug 12 09:06:37 PDT 2013


On 2013-08-05 16:20, Aaron Plattner wrote:
> On 07/15/13 16:44, Peter Harris wrote:
>> 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.
> 
> Is this still necessary as of 67c66606c760c263d7a4c2d1bba43ed6225a4e7c ?

Yes, I believe it is. 67c66606c7 deals with closed clients. This patch
deals with clients that are still live, and just haven't sent the
ridiculous number of bytes yet when another client starts sending requests.

>> 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);
>>

-- 
               Open Text Connectivity Solutions Group
Peter Harris                    http://connectivity.opentext.com/
Research and Development        Phone: +1 905 762 6001
pharris at opentext.com            Toll Free: 1 877 359 4866


More information about the xorg-devel mailing list