From a263c651e18266c2f05ca9cfff8da886c1603723 Mon Sep 17 00:00:00 2001 From: Victor Toso Date: Wed, 19 Aug 2015 12:05:46 +0200 Subject: char-device: free all memory pool when no clients When no client is connect we should not need to keep the memory pool used by char-device. In most situations this is not significant but when using webdav this could mean freeing MAX_POOL_SIZE bytes Related: https://bugs.freedesktop.org/show_bug.cgi?id=91350 --- server/char_device.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/char_device.c b/server/char_device.c index 3aa88ef3..fe383852 100644 --- a/server/char_device.c +++ b/server/char_device.c @@ -826,6 +826,12 @@ void spice_char_device_client_remove(SpiceCharDeviceState *dev, dev->wait_for_migrate_data = FALSE; spice_char_device_read_from_device(dev); } + + if (dev->num_clients == 0) { + spice_debug("client removed, memory pool will be freed (%lu bytes)", dev->cur_pool_size); + write_buffers_queue_free(&dev->write_bufs_pool); + dev->cur_pool_size = 0; + } } int spice_char_device_client_exists(SpiceCharDeviceState *dev, -- cgit