summaryrefslogtreecommitdiff
path: root/src/vnc-server.c
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2017-09-27 17:35:55 -0400
committerRobert Ancell <robert.ancell@canonical.com>2017-09-27 17:35:55 -0400
commit90c4278a35e4666e7c830fedc8826cd332a1753b (patch)
treef6625149b7e8da1573cfab7ed46c0a99523216eb /src/vnc-server.c
parent2b7eaa44d401a0a187917e53385d079e688f5172 (diff)
downloadlightdm-git-90c4278a35e4666e7c830fedc8826cd332a1753b.tar.gz
Use g_auto to automatically free memory
Diffstat (limited to 'src/vnc-server.c')
-rw-r--r--src/vnc-server.c37
1 files changed, 14 insertions, 23 deletions
diff --git a/src/vnc-server.c b/src/vnc-server.c
index 914a5ebd..1b29f93b 100644
--- a/src/vnc-server.c
+++ b/src/vnc-server.c
@@ -72,23 +72,21 @@ vnc_server_get_listen_address (VNCServer *server)
static gboolean
read_cb (GSocket *socket, GIOCondition condition, VNCServer *server)
{
- GError *error = NULL;
GSocket *client_socket;
+ g_autoptr(GError) error = NULL;
client_socket = g_socket_accept (socket, NULL, &error);
if (error)
g_warning ("Failed to get connection from from VNC socket: %s", error->message);
- g_clear_error (&error);
if (client_socket)
{
GInetSocketAddress *address;
- gchar *hostname;
+ g_autofree gchar *hostname = NULL;
address = G_INET_SOCKET_ADDRESS (g_socket_get_remote_address (client_socket, NULL));
hostname = g_inet_address_to_string (g_inet_socket_address_get_address (address));
g_debug ("Got VNC connection from %s:%d", hostname, g_inet_socket_address_get_port (address));
- g_free (hostname);
g_signal_emit (server, signals[NEW_CONNECTION], 0, client_socket);
}
@@ -99,8 +97,8 @@ read_cb (GSocket *socket, GIOCondition condition, VNCServer *server)
static GSocket *
open_tcp_socket (GSocketFamily family, guint port, const gchar *listen_address, GError **error)
{
- GSocket *socket;
- GSocketAddress *address;
+ g_autoptr(GSocket) socket = NULL;
+ g_autoptr(GSocketAddress) address = NULL;
socket = g_socket_new (family, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP, error);
if (!socket)
@@ -112,10 +110,7 @@ open_tcp_socket (GSocketFamily family, guint port, const gchar *listen_address,
addresses = g_resolver_lookup_by_name (g_resolver_get_default (), listen_address, NULL, error);
if (!addresses)
- {
- g_object_unref (socket);
return NULL;
- }
address = g_inet_socket_address_new (addresses->data, port);
g_resolver_free_addresses (addresses);
}
@@ -123,26 +118,23 @@ open_tcp_socket (GSocketFamily family, guint port, const gchar *listen_address,
address = g_inet_socket_address_new (g_inet_address_new_any (family), port);
if (!g_socket_bind (socket, address, TRUE, error) ||
!g_socket_listen (socket, error))
- {
- g_object_unref (socket);
return NULL;
- }
- return socket;
+ return g_steal_pointer (&socket);
}
gboolean
vnc_server_start (VNCServer *server)
{
GSource *source;
- GError *error = NULL;
+ g_autoptr(GError) ipv4_error = NULL;
+ g_autoptr(GError) ipv6_error = NULL;
g_return_val_if_fail (server != NULL, FALSE);
- server->priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, server->priv->port, server->priv->listen_address, &error);
- if (error)
- g_warning ("Failed to create IPv4 VNC socket: %s", error->message);
- g_clear_error (&error);
+ server->priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, server->priv->port, server->priv->listen_address, &ipv4_error);
+ if (ipv4_error)
+ g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
if (server->priv->socket)
{
@@ -151,10 +143,9 @@ vnc_server_start (VNCServer *server)
g_source_attach (source, NULL);
}
- server->priv->socket6 = open_tcp_socket (G_SOCKET_FAMILY_IPV6, server->priv->port, server->priv->listen_address, &error);
- if (error)
- g_warning ("Failed to create IPv6 VNC socket: %s", error->message);
- g_clear_error (&error);
+ server->priv->socket6 = open_tcp_socket (G_SOCKET_FAMILY_IPV6, server->priv->port, server->priv->listen_address, &ipv6_error);
+ if (ipv6_error)
+ g_warning ("Failed to create IPv6 VNC socket: %s", ipv6_error->message);
if (server->priv->socket6)
{
@@ -181,7 +172,7 @@ vnc_server_finalize (GObject *object)
{
VNCServer *self = VNC_SERVER (object);
- g_free (self->priv->listen_address);
+ g_clear_pointer (&self->priv->listen_address, g_free);
g_clear_object (&self->priv->socket);
g_clear_object (&self->priv->socket6);