From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: Re: [PATCH] qemu vnc updates Date: Tue, 26 Feb 2008 16:34:40 +0000 Message-ID: <47C43FA0.60808@eu.citrix.com> References: <47C3F6FA.6080506@eu.citrix.com> <47C43B37.1010209@codemonkey.ws> <20080226162224.GI30568@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20080226162224.GI30568@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Daniel P. Berrange" Cc: xen-devel@lists.xensource.com, Anthony Liguori List-Id: xen-devel@lists.xenproject.org Daniel P. Berrange wrote: > On Tue, Feb 26, 2008 at 10:15:51AM -0600, Anthony Liguori wrote: >> Stefano Stabellini wrote: >>> Hi all, >>> reading qemu code I realized that the qemu vnc server sometimes sends >>> framebuffer updates even if the client didn't request any. >>> This is not consistent with the RFB protocol spec and can break some >>> clients. >> >> It's actually consistent with the RFB spec. Have you seen any clients >> break? >> >> The RFB spec states pretty clearly that a single >> FramebufferUpdateRequest may generate 0 or more FramebufferUpdate >> events. Once a client has sent a single FramebufferUpdate request, it >> should expect to continue to receive more FramebufferUpdates for an >> indefinite period of time according to the specification. > > The reverse is true too - the server may coallese multiple FramebufferUpdateRequest > into a single FramebufferUpdate reply. There is no 1-to-1 mapping between > request & reply as this patch attempts to enforce. > I have just re-read the rfb protocol spec and it specifies quite clearly that framebuffer updates are sent in response to framebuffer update requests. However it is true that the server can collapse multiple requests in a single reply. It is also clear that the reply can come at any time. I have seen the linux vncviewer client breaking because of race conditions due to this problem.