From dbb99a6517bb7a1d059d7962ddba5ae5524abee3 Mon Sep 17 00:00:00 2001 From: Yonit Halperin Date: Tue, 7 May 2013 14:39:12 -0400 Subject: red_channel: add spice_channel_client_error spice_channel_client_error prints warning and shutdowns the channel_client that hit the error. This macro is useful for errors that are specific for one session and that are unrecoverable only with respect to this session. Prefer disconnecting a client over aborting when possible. --- server/red_channel.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server/red_channel.h b/server/red_channel.h index f7705100..ba299b66 100644 --- a/server/red_channel.h +++ b/server/red_channel.h @@ -328,6 +328,17 @@ struct RedChannel { #endif }; +/* + * When an error occurs over a channel, we treat it as a warning + * for spice-server and shutdown the channel. + */ +#define spice_channel_client_error(rcc, format, ...) \ + do { \ + spice_warning("rcc %p type %u id %u: " format, rcc, \ + rcc->channel->type, rcc->channel->id, ## __VA_ARGS__); \ + red_channel_client_shutdown(rcc); \ + } while (0) + /* if one of the callbacks should cause disconnect, use red_channel_shutdown and don't * explicitly destroy the channel */ RedChannel *red_channel_create(int size, -- cgit