@@ -140,3 +140,11 @@ void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
vnc_write_u32(vs, bytes_written);
vs->output.offset = new_offset;
}
+
+void vnc_zlib_clear(VncState *vs)
+{
+ if (vs->zlib_stream.opaque) {
+ deflateEnd(&vs->zlib_stream);
+ }
+ buffer_free(&vs->zlib);
+}
@@ -924,6 +924,8 @@ static void vnc_disconnect_finish(VncState *vs)
qobject_decref(vs->info);
+ vnc_zlib_clear(vs);
+
#ifdef CONFIG_VNC_TLS
vnc_tls_client_cleanup(vs);
#endif /* CONFIG_VNC_TLS */
@@ -399,5 +399,6 @@ void vnc_hextile_send_framebuffer_update(VncState *vs, int x,
void vnc_hextile_set_pixel_conversion(VncState *vs, int generic);
void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h);
+void vnc_zlib_clear(VncState *vs);
#endif /* __QEMU_VNC_H */
Makes sure we free all ressources used in zlib encoding (zlib stream and buffer). Signed-off-by: Corentin Chary <corentincj@iksaif.net> --- vnc-encoding-zlib.c | 8 ++++++++ vnc.c | 2 ++ vnc.h | 1 + 3 files changed, 11 insertions(+), 0 deletions(-)