mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 07:26:15 +01:00
gsocketclient: Handle cancellation between CONNECTING and CONNECTED
If a g_socket_client_connect_async() operation is cancelled between the CONNECTING and CONNECTED events (i.e. while in the g_socket_connection_connect_async() call), the code in g_socket_client_connected_callback() would previously unconditionally loop round and try the next socket address from the address enumerator (by calling enumerator_next_async()). This would correctly handle the cancellation and return from the overall task — but not before emitting a spurious RESOLVING event. Avoid emitting the spurious RESOLVING event by explicitly handling cancellation at the beginning of g_socket_client_connected_callback(). https://bugzilla.gnome.org/show_bug.cgi?id=735179
This commit is contained in:
parent
607d5a7858
commit
cb320cb5fe
@ -1492,6 +1492,12 @@ g_socket_client_connected_callback (GObject *source,
|
|||||||
GProxy *proxy;
|
GProxy *proxy;
|
||||||
const gchar *protocol;
|
const gchar *protocol;
|
||||||
|
|
||||||
|
if (g_task_return_error_if_cancelled (data->task))
|
||||||
|
{
|
||||||
|
g_object_unref (data->task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!g_socket_connection_connect_finish (G_SOCKET_CONNECTION (source),
|
if (!g_socket_connection_connect_finish (G_SOCKET_CONNECTION (source),
|
||||||
result, &error))
|
result, &error))
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user