[Spice-devel] [PATCH spice-gtk] spice-channel: return if has_error is TRUE in spice_channel_write_msg
Jakub Janků
jjanku at redhat.com
Wed Jun 26 08:02:22 UTC 2019
Avoid linearizing if the message isn't written out anyway
(spice_channel_flush_wire checks() this condition as well).
This also silences the following error:
(spicy:32087): GSpice-CRITICAL **: 16:22:03.147: spice_session_get_read_only: assertion 'SPICE_IS_SESSION(self)' failed
that can be seen if the channel gets disconnected
by the session while having non-empty write queue.
spice_session_channel_destroy() sets channel->priv->session to NULL,
but spice_channel_write_msg() subsequently attempts to call
spice_session_get_read_only() with NULL pointer.
Signed-off-by: Jakub Janků <jjanku at redhat.com>
---
src/spice-channel.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/spice-channel.c b/src/spice-channel.c
index 61de177..aa80edf 100644
--- a/src/spice-channel.c
+++ b/src/spice-channel.c
@@ -897,6 +897,11 @@ static void spice_channel_write_msg(SpiceChannel *channel, SpiceMsgOut *out)
g_return_if_fail(out != NULL);
g_return_if_fail(channel == out->channel);
+ if (channel->priv->has_error) {
+ spice_msg_out_unref(out);
+ return;
+ }
+
if (out->ro_check &&
spice_channel_get_read_only(channel)) {
g_warning("Try to send message while read-only. Please report a bug.");
--
2.21.0
More information about the Spice-devel
mailing list