[glib] g_socket_client_connect_async: fix when g_socket_connect succeeds immediately
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] g_socket_client_connect_async: fix when g_socket_connect succeeds immediately
- Date: Fri, 10 Sep 2010 17:07:45 +0000 (UTC)
commit bc29aa9b0956dec53c0b957ce879b41329307058
Author: Dan Winship <danw gnome org>
Date: Fri Sep 10 09:12:17 2010 -0400
g_socket_client_connect_async: fix when g_socket_connect succeeds immediately
https://bugzilla.gnome.org/show_bug.cgi?id=629251
gio/gsocketclient.c | 31 ++++++++++++++++++-------------
1 files changed, 18 insertions(+), 13 deletions(-)
---
diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c
index 85496fc..dd2c0d3 100644
--- a/gio/gsocketclient.c
+++ b/gio/gsocketclient.c
@@ -1068,6 +1068,22 @@ g_socket_client_proxy_connect (GSocketClientAsyncConnectData *data)
}
}
+static void
+g_socket_client_socket_connected (GSocketClientAsyncConnectData *data)
+{
+ g_socket_set_blocking (data->current_socket, TRUE);
+
+ data->connection =
+ g_socket_connection_factory_create_connection (data->current_socket);
+ g_object_unref (data->current_socket);
+ data->current_socket = NULL;
+
+ if (data->proxy_addr)
+ g_socket_client_proxy_connect (data);
+ else
+ g_socket_client_async_connect_complete (data);
+}
+
static gboolean
g_socket_client_socket_callback (GSocket *socket,
GIOCondition condition,
@@ -1103,18 +1119,7 @@ g_socket_client_socket_callback (GSocket *socket,
}
}
- g_socket_set_blocking (data->current_socket, TRUE);
-
- data->connection =
- g_socket_connection_factory_create_connection (data->current_socket);
- g_object_unref (data->current_socket);
- data->current_socket = NULL;
-
- if (data->proxy_addr)
- g_socket_client_proxy_connect (data);
- else
- g_socket_client_async_connect_complete (data);
-
+ g_socket_client_socket_connected (data);
return FALSE;
}
@@ -1164,7 +1169,7 @@ g_socket_client_enumerator_callback (GObject *object,
if (g_socket_connect (socket, address, data->cancellable, &tmp_error))
{
data->current_socket = socket;
- g_socket_client_async_connect_complete (data);
+ g_socket_client_socket_connected (data);
g_object_unref (address);
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]