Skip to content
Snippets Groups Projects
  • Ding Hui's avatar
    2ddafce7
    vnc: fix resource leak when websocket channel error · 2ddafce7
    Ding Hui authored
    
    When we connect to vnc by websocket channel, and disconnect
    (maybe by some network exception) before handshake,
    qemu will left CLOSE_WAIT socket and never close it
    
    After 04d2529d ("ui: convert VNC server to use QIOChannelSocket")
    and dd154c4d ("io: fix handling of EOF / error conditions in websock GSource"),
    the vnc call qio_channel_add_watch only care about G_IO_IN,
    but mising G_IO_HUP and G_IO_ERR.
    When the websocket channel get EOF or error, it cannot callback,
    because the caller ignore the event, that leads to resource leak
    
    We need handle G_IO_HUP and G_IO_ERR event, then cleanup the channel
    
    Fixes: 04d2529d ("ui: convert VNC server to use QIOChannelSocket")
    Fixes: dd154c4d ("io: fix handling of EOF / error conditions in websock GSource")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarDing Hui <dinghui@sangfor.com.cn>
    Message-id: 20201029032241.11040-1-dinghui@sangfor.com.cn
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
    2ddafce7
    History
    vnc: fix resource leak when websocket channel error
    Ding Hui authored
    
    When we connect to vnc by websocket channel, and disconnect
    (maybe by some network exception) before handshake,
    qemu will left CLOSE_WAIT socket and never close it
    
    After 04d2529d ("ui: convert VNC server to use QIOChannelSocket")
    and dd154c4d ("io: fix handling of EOF / error conditions in websock GSource"),
    the vnc call qio_channel_add_watch only care about G_IO_IN,
    but mising G_IO_HUP and G_IO_ERR.
    When the websocket channel get EOF or error, it cannot callback,
    because the caller ignore the event, that leads to resource leak
    
    We need handle G_IO_HUP and G_IO_ERR event, then cleanup the channel
    
    Fixes: 04d2529d ("ui: convert VNC server to use QIOChannelSocket")
    Fixes: dd154c4d ("io: fix handling of EOF / error conditions in websock GSource")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarDing Hui <dinghui@sangfor.com.cn>
    Message-id: 20201029032241.11040-1-dinghui@sangfor.com.cn
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>