[Spice-devel] [PATCH libcacard 1/2] vscclient: Catch write errors
Jason Andryuk
jandryuk at gmail.com
Tue Jul 24 18:34:58 UTC 2018
The GIOStatus return value indicates errors, so catch it and check it to
know if we should return an error.
Signed-off-by: Jason Andryuk <jandryuk at gmail.com>
---
Truth be told, I can't remember exactly why I had to write this. Could
status be G_IO_STATUS_ERROR, but err still be NULL? Since I added
debugging output with those value, it maybe the case.
src/vscclient.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/vscclient.c b/src/vscclient.c
index fa60162..56e2ced 100644
--- a/src/vscclient.c
+++ b/src/vscclient.c
@@ -69,12 +69,21 @@ do_socket_send(GIOChannel *source,
{
gsize bw;
GError *err = NULL;
+ GIOStatus status;
g_return_val_if_fail(socket_to_send->len != 0, FALSE);
g_return_val_if_fail(condition & G_IO_OUT, FALSE);
- g_io_channel_write_chars(channel_socket,
+ status = g_io_channel_write_chars(channel_socket,
(gchar *)socket_to_send->data, socket_to_send->len, &bw, &err);
+ if (verbose) {
+ printf("status: %d bytes written: %d err: %p\n", status, bw, err);
+ }
+
+ if (status == G_IO_STATUS_ERROR) {
+ return FALSE;
+ }
+
if (err != NULL) {
g_error("Error while sending socket %s", err->message);
return FALSE;
--
2.17.1
More information about the Spice-devel
mailing list