Blob Blame History Raw
From fe4d5599a9aec8bcd2ad53d8e124630a53cd8394 Mon Sep 17 00:00:00 2001
From: Christophe Fergeau <cfergeau@redhat.com>
Date: Wed, 9 Jan 2019 14:01:26 +0100
Subject: [PATCH] conn: Use vnc_connection_has_error() extensively

It's better to call this helper rather than directly checking for
priv->coroutine_stop.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
(cherry picked from commit ad6478a1e522f5e0c2f396ac3600dc35df5871a8)
Resolves: rhbz#1688275
---
 src/vncconnection.c | 77 ++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 40 deletions(-)

diff --git a/src/vncconnection.c b/src/vncconnection.c
index fd7468b..bbf4373 100644
--- a/src/vncconnection.c
+++ b/src/vncconnection.c
@@ -736,7 +736,7 @@ static int vnc_connection_read_wire(VncConnection *conn, void *data, size_t len)
 
  reread:
 
-    if (priv->coroutine_stop) return -EINVAL;
+    if (vnc_connection_has_error(conn)) return -EINVAL;
 
     if (priv->tls_session) {
         ret = gnutls_read(priv->tls_session, data, len);
@@ -885,7 +885,7 @@ static int vnc_connection_read(VncConnection *conn, void *data, size_t len)
     char *ptr = data;
     size_t offset = 0;
 
-    if (priv->coroutine_stop) return -EINVAL;
+    if (vnc_connection_has_error(conn)) return -EINVAL;
 
     while (offset < len) {
         size_t tmp;
@@ -941,7 +941,7 @@ static void vnc_connection_flush_wire(VncConnection *conn,
         int ret;
         gboolean blocking = FALSE;
 
-        if (priv->coroutine_stop) return;
+        if (vnc_connection_has_error(conn)) return;
 
         if (priv->tls_session) {
             ret = gnutls_write(priv->tls_session,
@@ -2878,10 +2878,9 @@ static void vnc_connection_tight_update(VncConnection *conn,
 
 static void vnc_connection_update(VncConnection *conn, int x, int y, int width, int height)
 {
-    VncConnectionPrivate *priv = conn->priv;
     struct signal_data sigdata;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     VNC_DEBUG("Notify update area (%dx%d) at location %d,%d", width, height, x, y);
@@ -2896,10 +2895,9 @@ static void vnc_connection_update(VncConnection *conn, int x, int y, int width,
 
 static void vnc_connection_bell(VncConnection *conn)
 {
-    VncConnectionPrivate *priv = conn->priv;
     struct signal_data sigdata;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     VNC_DEBUG("Server beep");
@@ -2911,11 +2909,10 @@ static void vnc_connection_server_cut_text(VncConnection *conn,
                                            const void *data,
                                            size_t len)
 {
-    VncConnectionPrivate *priv = conn->priv;
     struct signal_data sigdata;
     GString *text;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     text = g_string_new_len ((const gchar *)data, len);
@@ -2933,7 +2930,7 @@ static void vnc_connection_resize(VncConnection *conn, int width, int height)
 
     VNC_DEBUG("Desktop resize w=%d h=%d", width, height);
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     priv->width = width;
@@ -2949,7 +2946,7 @@ static void vnc_connection_pixel_format(VncConnection *conn)
     VncConnectionPrivate *priv = conn->priv;
     struct signal_data sigdata;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     sigdata.params.pixelFormat = &priv->fmt;
@@ -2967,7 +2964,7 @@ static void vnc_connection_pointer_type_change(VncConnection *conn, gboolean abs
         return;
     priv->absPointer = absPointer;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     sigdata.params.absPointer = absPointer;
@@ -3028,7 +3025,7 @@ static void vnc_connection_rich_cursor(VncConnection *conn, guint16 x, guint16 y
         priv->cursor = vnc_cursor_new(pixbuf, x, y, width, height);
     }
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     sigdata.params.cursor = priv->cursor;
@@ -3093,7 +3090,7 @@ static void vnc_connection_xcursor(VncConnection *conn, guint16 x, guint16 y, gu
         priv->cursor = vnc_cursor_new(pixbuf, x, y, width, height);
     }
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return;
 
     sigdata.params.cursor = priv->cursor;
@@ -3405,7 +3402,7 @@ static gboolean vnc_connection_server_message(VncConnection *conn)
 
         n_type = vnc_connection_read_u8(conn);
 
-        if (priv->coroutine_stop)
+        if (vnc_connection_has_error(conn))
             break;
 
         switch (n_type) {
@@ -3423,7 +3420,7 @@ static gboolean vnc_connection_server_message(VncConnection *conn)
                                              n_length, 1024 * 1024);
                     break;
                 }
-                if (priv->coroutine_stop)
+                if (vnc_connection_has_error(conn))
                     break;
 
                 if (!priv->audio) {
@@ -3491,7 +3488,7 @@ static gboolean vnc_connection_has_credentials(gpointer data)
     VncConnection *conn = data;
     VncConnectionPrivate *priv = conn->priv;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return TRUE;
     if (priv->want_cred_username && !priv->cred_username)
         return FALSE;
@@ -3508,7 +3505,7 @@ static gboolean vnc_connection_gather_credentials(VncConnection *conn)
 
     VNC_DEBUG("Checking if credentials are needed");
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     if (!vnc_connection_has_credentials(conn)) {
@@ -3546,7 +3543,7 @@ static gboolean vnc_connection_gather_credentials(VncConnection *conn)
 
         g_value_array_free(authCred);
 
-        if (priv->coroutine_stop)
+        if (vnc_connection_has_error(conn))
             return FALSE;
         VNC_DEBUG("Waiting for missing credentials");
         g_condition_wait(vnc_connection_has_credentials, conn);
@@ -3579,13 +3576,13 @@ static gboolean vnc_connection_check_auth_result(VncConnection *conn)
         vnc_connection_read(conn, reason, len);
         reason[len] = '\0';
         VNC_DEBUG("Fail %s", reason);
-        if (!priv->coroutine_stop) {
+        if (!vnc_connection_has_error(conn)) {
             vnc_connection_set_error(conn, "%s", reason);
             vnc_connection_auth_failure(conn, reason);
         }
     } else {
         VNC_DEBUG("Fail auth no result");
-        if (!priv->coroutine_stop) {
+        if (!vnc_connection_has_error(conn)) {
             vnc_connection_set_error(conn, "%s", "Unknown authentication failure");
             vnc_connection_auth_failure(conn, "Unknown authentication failure");
         }
@@ -4197,7 +4194,7 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
 
     /* Get the supported mechanisms from the server */
     mechlistlen = vnc_connection_read_u32(conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         goto error;
     if (mechlistlen > SASL_MAX_MECHLIST_LEN) {
         vnc_connection_set_error(conn,
@@ -4209,7 +4206,7 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
     mechlist = g_malloc(mechlistlen+1);
     vnc_connection_read(conn, mechlist, mechlistlen);
     mechlist[mechlistlen] = '\0';
-    if (priv->coroutine_stop) {
+    if (vnc_connection_has_error(conn)) {
         g_free(mechlist);
         mechlist = NULL;
         goto error;
@@ -4266,14 +4263,14 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
         vnc_connection_write_u32(conn, 0);
     }
     vnc_connection_flush(conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         goto error;
 
 
     VNC_DEBUG("%s", "Getting sever start negotiation reply");
     /* Read the 'START' message reply from server */
     serverinlen = vnc_connection_read_u32(conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         goto error;
     if (serverinlen > SASL_MAX_DATA_LEN) {
         vnc_connection_set_error(conn,
@@ -4292,7 +4289,7 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
         serverin = NULL;
     }
     complete = vnc_connection_read_u8(conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         goto error;
 
     VNC_DEBUG("Client start result complete: %d. Data %u bytes %p '%s'",
@@ -4354,13 +4351,13 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
             vnc_connection_write_u32(conn, 0);
         }
         vnc_connection_flush(conn);
-        if (priv->coroutine_stop)
+        if (vnc_connection_has_error(conn))
             goto error;
 
         VNC_DEBUG("Server step with %u bytes %p", clientoutlen, clientout);
 
         serverinlen = vnc_connection_read_u32(conn);
-        if (priv->coroutine_stop)
+        if (vnc_connection_has_error(conn))
             goto error;
         if (serverinlen > SASL_MAX_DATA_LEN) {
             vnc_connection_set_error(conn,
@@ -4379,7 +4376,7 @@ static gboolean vnc_connection_perform_auth_sasl(VncConnection *conn)
             serverin = NULL;
         }
         complete = vnc_connection_read_u8(conn);
-        if (priv->coroutine_stop)
+        if (vnc_connection_has_error(conn))
             goto error;
 
         VNC_DEBUG("Client step result complete: %d. Data %u bytes %p '%s'",
@@ -4524,7 +4521,7 @@ static gboolean vnc_connection_has_auth_subtype(gpointer data)
     VncConnection *conn = data;
     VncConnectionPrivate *priv = conn->priv;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return TRUE;
     if (priv->auth_subtype == VNC_CONNECTION_AUTH_INVALID)
         return FALSE;
@@ -4597,15 +4594,15 @@ static gboolean vnc_connection_perform_auth_tls(VncConnection *conn)
         VNC_DEBUG("Possible TLS sub-auth %u", auth[i]);
     }
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
     vnc_connection_choose_auth(conn, VNC_AUTH_CHOOSE_SUBTYPE, nauth, auth);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Waiting for TLS auth subtype");
     g_condition_wait(vnc_connection_has_auth_subtype, conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Choose auth %u", priv->auth_subtype);
@@ -4672,15 +4669,15 @@ static gboolean vnc_connection_perform_auth_vencrypt(VncConnection *conn)
         VNC_DEBUG("Possible VeNCrypt sub-auth %u", auth[i]);
     }
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
     vnc_connection_choose_auth(conn, VNC_AUTH_CHOOSE_SUBTYPE, nauth, auth);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Waiting for VeNCrypt auth subtype");
     g_condition_wait(vnc_connection_has_auth_subtype, conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Choose auth %u", priv->auth_subtype);
@@ -4753,7 +4750,7 @@ static gboolean vnc_connection_has_auth_type(gpointer data)
     VncConnection *conn = data;
     VncConnectionPrivate *priv = conn->priv;
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return TRUE;
     if (priv->auth_type == VNC_CONNECTION_AUTH_INVALID)
         return FALSE;
@@ -4790,15 +4787,15 @@ static gboolean vnc_connection_perform_auth(VncConnection *conn)
         VNC_DEBUG("Possible auth %u", auth[i]);
     }
 
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
     vnc_connection_choose_auth(conn, VNC_AUTH_CHOOSE_TYPE, nauth, auth);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Waiting for auth type");
     g_condition_wait(vnc_connection_has_auth_type, conn);
-    if (priv->coroutine_stop)
+    if (vnc_connection_has_error(conn))
         return FALSE;
 
     VNC_DEBUG("Choose auth %u", priv->auth_type);