On Thu, May 09, 2013 at 01:09:02PM -0700, Robert Morell wrote:
> If a client sends a request larger than maxBigRequestSize, the server is
> supposed to ignore it.
> 
> Before commit cf88363d, the server would simply disconnect the client.  After
> that commit, it attempts to gracefully ignore the request by remembering how
> long the client specified the request to be, and ignoring that many bytes.
> However, if a client sends a BigReq header with a large size and disconnects
> before actually sending the rest of the specified request, the server will
> reuse the ConnectionInput buffer without resetting the ignoreBytes field.  
> This
> makes the server ignore new X clients' requests.
> 
> This fixes that behavior by resetting the ignoreBytes field when putting the
> ConnectionInput buffer back on the FreeInputs list.
> 
> Signed-off-by: Robert Morell <[email protected]>

Reviewed-by: Peter Hutterer <[email protected]>

and merged into my branch, thank you.

Cheers,
   Peter


> ---
>  os/io.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/os/io.c b/os/io.c
> index 2f091c4..0d980ab 100644
> --- a/os/io.c
> +++ b/os/io.c
> @@ -1063,6 +1063,7 @@ FreeOsBuffers(OsCommPtr oc)
>              oci->bufptr = oci->buffer;
>              oci->bufcnt = 0;
>              oci->lenLastReq = 0;
> +            oci->ignoreBytes = 0;
>          }
>      }
>      if ((oco = oc->output)) {
> -- 
> 1.8.1.5
> 
> _______________________________________________
> [email protected]: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 
_______________________________________________
[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