return (socket->priv->remote_address = g_object_ref_sink (g_socket_address_from_native (buffer, len)));
}
-void
-g_socket_listen (GSocket *socket)
+gboolean
+g_socket_listen (GSocket *socket,
+ GError **error)
{
- g_return_if_fail (G_IS_SOCKET (socket));
+ g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
- listen (socket->priv->fd, socket->priv->backlog);
+ if (listen (socket->priv->fd, socket->priv->backlog) < 0)
+ {
+ g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno), "could not listen: %s", g_strerror (errno));
+ return FALSE;
+ }
+
+ return TRUE;
}
gboolean
GSocket * g_socket_accept (GSocket *socket,
GError **error);
-void g_socket_listen (GSocket *socket);
+gboolean g_socket_listen (GSocket *socket,
+ GError **error);
gssize g_socket_receive (GSocket *socket,
gchar *buffer,
return 0;
}
- g_socket_listen (socket);
+ if (!g_socket_listen (socket, &error)) {
+ g_error (error->message);
+ return 0;
+ }
g_print ("listening on port 31882...\n");