Skip to content
  • Vladimir Sementsov-Ogievskiy's avatar
    2e572baf
    ui/vnc-clipboard: fix adding notifier twice · 2e572baf
    Vladimir Sementsov-Ogievskiy authored
    
    
    vnc_server_cut_text_caps() is not guaranteed to be called only once.
    
    If it called twice, we finally call notifier_list_add() twice with same
    element. Which leads to loopback QLIST. So, on next
    notifier_list_notify() we'll loop forever and QEMU stuck.
    
    So, let's only register new notifier if it's not yet registered.
    
    Note, that similar check is used in vdagent_chr_recv_caps() (before
    call qemu_clipboard_peer_register()), and also before
    qemu_clipboard_peer_unregister() call in vdagent_disconnect() and in
    vnc_disconnect_finish().
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20211110103800.2266729-1-vsementsov@virtuozzo.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
    2e572baf
    ui/vnc-clipboard: fix adding notifier twice
    Vladimir Sementsov-Ogievskiy authored
    
    
    vnc_server_cut_text_caps() is not guaranteed to be called only once.
    
    If it called twice, we finally call notifier_list_add() twice with same
    element. Which leads to loopback QLIST. So, on next
    notifier_list_notify() we'll loop forever and QEMU stuck.
    
    So, let's only register new notifier if it's not yet registered.
    
    Note, that similar check is used in vdagent_chr_recv_caps() (before
    call qemu_clipboard_peer_register()), and also before
    qemu_clipboard_peer_unregister() call in vdagent_disconnect() and in
    vnc_disconnect_finish().
    
    Signed-off-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-Id: <20211110103800.2266729-1-vsementsov@virtuozzo.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Loading