Skip to content

Commit

Permalink
vnc: make sure we finish disconnect
Browse files Browse the repository at this point in the history
It may happen that vnc connections linger in disconnecting state forever
because VncState happens to be in a state where vnc_update_client()
exists early and never reaches the vnc_disconnect_finish() call at the
bottom of the function.  Fix that by doing an additinal check at the
start of the function.

https://bugzilla.redhat.com/show_bug.cgi?id=1352799

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1468405280-2571-1-git-send-email-kraxel@redhat.com
  • Loading branch information
kraxel committed Jul 15, 2016
1 parent 14c7d99 commit 5a8be0f
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions ui/vnc.c
Expand Up @@ -1024,6 +1024,11 @@ static int find_and_clear_dirty_height(VncState *vs,

static int vnc_update_client(VncState *vs, int has_dirty, bool sync)
{
if (vs->disconnecting) {
vnc_disconnect_finish(vs);
return 0;
}

vs->has_dirty += has_dirty;
if (vs->need_update && !vs->disconnecting) {
VncDisplay *vd = vs->vd;
Expand Down

0 comments on commit 5a8be0f

Please sign in to comment.