- if ((ret = connect (socket->priv->fd, (struct sockaddr *) buffer, len)) < 0)
- {
- if (errno == EINPROGRESS)
- {
- source = _g_fd_source_new (socket->priv->fd, G_IO_OUT | G_IO_ERR, cancellable);
-
- data = g_new (ConnectData, 1);
-
- data->socket = socket;
- data->callback = callback;
- data->cancellable = cancellable;
- data->user_data = user_data;
- data->address_length = len;
- memcpy (data->address_buffer, buffer, len);
-
- g_source_set_callback (source, (GSourceFunc) connect_callback, data, g_free);
-
- g_source_attach (source, NULL);
- }
- else
- {
- g_simple_async_report_error_in_idle (G_OBJECT (socket), callback, user_data, G_IO_ERROR, g_io_error_from_errno (errno), "error connecting: %s", g_strerror (errno));
- }
- }
- else
- {
- result = g_simple_async_result_new (G_OBJECT (socket), callback, user_data, g_socket_connect_async);
-
- g_simple_async_result_complete_in_idle (result);
-
- g_object_unref (result);
- }