It compiles!
[cascardo/gnio.git] / gnio / gsocket.c
index ba6595b..1d54f1c 100644 (file)
@@ -376,6 +376,30 @@ g_socket_get_reuse_address (GSocket *socket)
   return socket->priv->reuse_address;
 }
 
+gboolean
+g_socket_has_socket_error (GSocket  *socket,
+                           GError  **error)
+{
+  gint sockerr;
+  gsize sockerr_size = sizeof (sockerr);
+
+  g_return_val_if_fail (G_IS_SOCKET (socket), FALSE);
+
+  if (getsockopt (socket->priv->fd, SOL_SOCKET, SO_ERROR, (gpointer) &sockerr, &sockerr_size) < 0)
+    {
+      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno), "could not get socket error: %s", g_strerror (errno));
+      return TRUE;
+    }
+
+  if (sockerr != 0)
+    {
+      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (sockerr), "error connecting: %s", g_strerror (sockerr));
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
 GSocketAddress *
 g_socket_get_local_address (GSocket  *socket,
                             GError  **error)