On Mon, 2010-10-25 at 22:01 -0700, Aaron Plattner wrote:
> Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of
> BigReq requests that are way too large and handles the case where the
> read() syscall returns a short read.  However, it neglected to handle
> the case where it returns a long read, which happens when the client
> has another request in the queue after the bogus large one.
> 
> Handle the long read case by subtracting the smaller of 'needed' and
> 'gotnow' from oci->ignoreBytes.  If needed < gotnow, simply subtract
> the two, leaving gotnow equal to the number of extra bytes read.
> Since the code immediately following the (oci->ignoreBytes > 0) block
> tries to handle the next request, advance oci->bufptr immediately
> instead of setting oci->lenLastReq and letting the next call to
> ReadRequestFromClient do it.
> 
> Fixes the XTS pChangeKeyboardMapping-3 test.
> 
>          CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN 
> ABORT
> -Xproto    122   389   367     2    19     0     0     0     1     0     0    
>  0
> +Xproto    122   389   368     2    19     0     0     0     0     0     0    
>  0
> 
> Signed-off-by: Aaron Plattner <[email protected]>

Reviewed-by: Adam Jackson <[email protected]>

> ---
> Sorry I screwed this up the first time.  Do you think I should revert the 
> first
> version and then reapply this one?

Meh.  The commit message is sufficiently informative.

- ajax

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to