Check for failure when trying to bind.
[cascardo/f2fchat.git] / friend.c
index fd79643..68deccd 100644 (file)
--- a/friend.c
+++ b/friend.c
@@ -40,14 +40,22 @@ int sock_init(void)
 {
        GSocketAddress *address;
        GInetAddress *any_addr;
+       GError *error;
+       int err = 0;
        any_addr = g_inet_address_new_any(G_SOCKET_FAMILY_IPV6);
        usock = g_socket_new(G_SOCKET_FAMILY_IPV6, G_SOCKET_TYPE_DATAGRAM, G_SOCKET_PROTOCOL_UDP, NULL);
        address = g_inet_socket_address_new(any_addr, 17078);
-       g_socket_bind(usock, address, TRUE, NULL);
-       g_object_unref(any_addr);
+       if (!g_socket_bind(usock, address, TRUE, &error)) {
+               err = error->code;
+               g_error_free(error);
+       }
        g_object_unref(address);
-       message_init(usock);
-       return 0;
+       g_object_unref(any_addr);
+       if (!err)
+               message_init(usock);
+       else
+               g_object_unref(usock);
+       return err;
 }
 
 int friend_send_message(struct friend *friend, char *buffer, size_t len)