summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2013-03-29 10:05:24 +0100
committerHans de Goede <hdegoede@redhat.com>2013-03-29 10:05:24 +0100
commit3d775594b506e4199e850b51af8de762902b849a (patch)
tree1e0e803146693dfd35f2014eaf73600250e03a78 /server
parente3c6f793f7592bce4778986b2e28f9e7f2c56589 (diff)
downloadspice-3d775594b506e4199e850b51af8de762902b849a.tar.gz
spice-3d775594b506e4199e850b51af8de762902b849a.tar.xz
spice-3d775594b506e4199e850b51af8de762902b849a.zip
char_device: Don't set the write-retry timer when not running
The write-retry timer should not be set when we're leaving spice_char_device_write_to_device because the char-dev has been stopped. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'server')
-rw-r--r--server/char_device.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/server/char_device.c b/server/char_device.c
index 368c9bc0..63afee11 100644
--- a/server/char_device.c
+++ b/server/char_device.c
@@ -468,10 +468,13 @@ static int spice_char_device_write_to_device(SpiceCharDeviceState *dev)
dev->cur_write_buf_pos += n;
}
/* retry writing as long as the write queue is not empty */
- if (dev->cur_write_buf) {
- core->timer_start(dev->write_to_dev_timer, CHAR_DEVICE_WRITE_TO_TIMEOUT);
- } else {
- spice_assert(ring_is_empty(&dev->write_queue));
+ if (dev->running) {
+ if (dev->cur_write_buf) {
+ core->timer_start(dev->write_to_dev_timer,
+ CHAR_DEVICE_WRITE_TO_TIMEOUT);
+ } else {
+ spice_assert(ring_is_empty(&dev->write_queue));
+ }
}
spice_char_device_state_unref(dev);
dev->active = dev->active || total;