[gnio] Add error checking to g_tcp_listener_socket_factory



commit 9f82834fe8bee15a6dc5f2c098357c3bb2950613
Author: Alexander Larsson <alexl redhat com>
Date:   Wed May 6 11:37:33 2009 +0200

    Add error checking to g_tcp_listener_socket_factory
---
 gio/gtcplistener.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/gio/gtcplistener.c b/gio/gtcplistener.c
index 334b3f7..b53c596 100644
--- a/gio/gtcplistener.c
+++ b/gio/gtcplistener.c
@@ -69,7 +69,7 @@ g_tcp_listener_socket_factory (GSocketListener  *listener,
                              G_SOCKET_TYPE_STREAM,
 			     NULL);
 
-      if (socket)
+      if (!g_socket_has_error (socket, NULL))
         /* we can do ipv6, so bind to :: */
         address = g_inet_address_new_any (G_SOCKET_FAMILY_IPV6);
 
@@ -83,14 +83,27 @@ g_tcp_listener_socket_factory (GSocketListener  *listener,
         }
     }
 
+  if (g_socket_has_error (socket, error))
+    return NULL;
+
   g_socket_set_reuse_address (socket, TRUE);
 
   sockaddr = g_inet_socket_address_new (address, tcp_listener->priv->port);
 
-  /* XXX fix */
-  g_socket_bind (socket, sockaddr, NULL);
-  g_socket_listen (socket, NULL);
+  if (!g_socket_bind (socket, sockaddr, error))
+    {
+      g_object_unref (socket);
+      socket = NULL;
+      goto err;
+    }
+
+  if (!g_socket_listen (socket, error))
+    {
+      g_object_unref (socket);
+      socket = NULL;
+    }
 
+ err:
   g_object_unref (sockaddr);
   g_object_unref (address);
 



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