static void
enumerator_next_async (GSocketClientAsyncConnectData *data)
{
+ /* We need to cleanup the state */
+ g_clear_object (&data->current_socket);
+ g_clear_object (&data->current_addr);
+ g_clear_object (&data->proxy_addr);
+ g_clear_object (&data->connection);
+
g_socket_address_enumerator_next_async (data->enumerator,
data->cancellable,
g_socket_client_enumerator_callback,
else
{
g_object_unref (object);
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
- g_object_unref (data->connection);
- data->connection = NULL;
-
enumerator_next_async (data);
}
}
}
else
{
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
- g_object_unref (data->connection);
- data->connection = NULL;
-
enumerator_next_async (data);
}
}
&data->last_error);
if (!data->connection)
{
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
-
enumerator_next_async (data);
return;
}
G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
_("Trying to proxy over non-TCP connection is not supported."));
- g_object_unref (data->connection);
- data->connection = NULL;
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
-
enumerator_next_async (data);
}
else if (proxy)
_("Proxy protocol '%s' is not supported."),
protocol);
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
- g_object_unref (data->connection);
- data->connection = NULL;
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
-
enumerator_next_async (data);
}
}
{
/* Cancelled, return done with last error being cancelled */
g_clear_error (&data->last_error);
- g_clear_object (&data->current_socket);
- g_clear_object (&data->current_addr);
g_cancellable_set_error_if_cancelled (data->cancellable,
&data->last_error);
{
clarify_connect_error (error, data->connectable,
data->current_addr);
-
set_last_error (data, error);
- g_clear_object (&data->current_socket);
- g_clear_object (&data->current_addr);
/* try next one */
enumerator_next_async (data);