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 f770510..ba299b6 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,
-- 
1.8.1.4

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to