[gnome-network-displays/cc-tmp: 10/80] Fixups 1




commit f34cf22f809c011ba6292b99c4bce47d9a099d77
Author: Benjamin Berg <bberg redhat com>
Date:   Tue Jul 26 13:15:17 2022 +0200

    Fixups 1

 src/cc/cc-comm.c | 25 ++++++++++++++-----------
 src/nd-cc-sink.c | 12 +++++++++---
 2 files changed, 23 insertions(+), 14 deletions(-)
---
diff --git a/src/cc/cc-comm.c b/src/cc/cc-comm.c
index 6c5818d..10ab243 100644
--- a/src/cc/cc-comm.c
+++ b/src/cc/cc-comm.c
@@ -269,17 +269,15 @@ cc_comm_make_connection (NdCCSink *sink, GError **error)
 }
 
 gboolean
-cc_comm_ensure_connection (NdCCSink * sink)
+cc_comm_ensure_connection (NdCCSink * sink, GError ** error)
 {
   NdCCSink * self = ND_CC_SINK (sink);
-  g_autoptr(GError) error = NULL;
+  g_autoptr(GError) err = NULL;
 
-  if (!G_IS_TLS_CONNECTION (self->connection) && !cc_comm_make_connection (self, &error))
+  if (!G_IS_TLS_CONNECTION (self->connection) && !cc_comm_make_connection (self, &err))
   {
-    g_warning ("CCComm: Failed to make connection: %s", error->message);
-    g_error_free (error);
-    self->state = ND_SINK_STATE_ERROR;
-    g_object_notify (G_OBJECT (self), "state");
+    g_warning ("CCComm: Failed to make connection: %s", err->message);
+    g_propagate_error (error, g_steal_pointer (&err));
     return FALSE;
   }
 
@@ -293,13 +291,18 @@ cc_comm_tls_send (NdCCSink      * sink,
                   uint8_t       * message,
                   gssize          size,
                   gboolean        expect_input,
-                  GError        * error)
+                  GError        **error)
 {
   NdCCSink * self = ND_CC_SINK (sink);
   GOutputStream *ostream;
   gssize io_bytes;
 
-  cc_comm_ensure_connection (self);
+  if (!G_IS_TLS_CONNECTION (self->connection))
+    {
+      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_CONNECTED,
+                           "Connection has not been established");
+      return FALSE:
+    }
 
   g_debug ("Writing data:");
   cc_comm_dump_message (message, size);
@@ -435,7 +438,7 @@ cc_comm_send_request (NdCCSink *sink, enum MessageType message_type, char *utf8_
                               sock_buffer,
                               packed_size+4,
                               expect_input,
-                              error);
+                              &error);
 
   if (!send_ok || error != NULL)
   {
@@ -459,7 +462,7 @@ cc_comm_send_ping (gpointer userdata)
   NdCCSink *self = ND_CC_SINK (userdata);
 
   if (!cc_comm_ensure_connection(self, &error)) return FALSE;
-  send_request(self, MESSAGE_TYPE_PING, NULL);
+  cc_comm_send_request(self, MESSAGE_TYPE_PING, NULL);
 
   return TRUE;
 }
diff --git a/src/nd-cc-sink.c b/src/nd-cc-sink.c
index d34765b..a9bfa04 100644
--- a/src/nd-cc-sink.c
+++ b/src/nd-cc-sink.c
@@ -262,7 +262,7 @@ static void
 closed_cb (NdCCSink *sink, CCClient *client)
 {
   /* Connection was closed, do a clean shutdown */
-  send_request(ND_CC_SINK (sink), MESSAGE_TYPE_DISCONNECT, NULL);
+  cc_comm_send_request(ND_CC_SINK (sink), MESSAGE_TYPE_DISCONNECT, NULL);
 
   nd_cc_sink_sink_stop_stream (ND_SINK (sink));
 }
@@ -330,8 +330,14 @@ nd_cc_sink_sink_start_stream (NdSink *sink)
   g_debug ("NdCCSink: Attempting connection to Chromecast: %s", self->remote_name);
 
   // open a TLS connection to the CC device
-  if (!cc_comm_ensure_connection(self))
-    return NULL;
+  if (!cc_comm_ensure_connection(self, &error))
+    {
+      self->state = ND_SINK_STATE_ERROR;
+      g_object_notify (G_OBJECT (self), "state");
+      g_clear_object (&self->server);
+
+      return NULL;
+    }
 
   // TODO: listen to all incoming messages
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]