}
else if (last_error)
{
- g_propagate_error (error, tmp_error);
+ g_propagate_error (error, last_error);
}
else
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
g_socket_set_blocking (data->current_socket, TRUE);
connection = g_socket_connection_factory_create_connection (data->current_socket);
+ g_object_unref (data->current_socket);
g_simple_async_result_set_op_res_gpointer (data->result,
connection,
g_object_unref);
g_simple_async_result_complete (data->result);
g_object_unref (data->result);
+ g_object_unref (data->enumerator);
+ g_slice_free (GSocketClientAsyncConnectData, data);
}
g_source_set_callback (source,
(GSourceFunc) g_socket_client_socket_callback,
data, NULL);
- g_source_attach (source, NULL);
+ g_source_attach (source, g_main_context_get_thread_default ());
g_source_unref (source);
g_object_unref (address);