GSocket: fix connected state after async connect
authorDan Winship <danw@gnome.org>
Sun, 24 Jul 2011 18:52:03 +0000 (14:52 -0400)
committerDan Winship <danw@gnome.org>
Sun, 24 Jul 2011 18:54:45 +0000 (14:54 -0400)
socket->priv->connected was only being set if g_socket_connect()
succeeded right away; in the case where it returns G_IO_ERROR_PENDING,
it never got set. Fix that by having g_socket_check_connect_result()
set it on success.

gio/gsocket.c

index 070745d..f1ba5dd 100644 (file)
@@ -1607,7 +1607,7 @@ g_socket_accept (GSocket       *socket,
  * If the connect call needs to do network I/O it will block, unless
  * non-blocking I/O is enabled. Then %G_IO_ERROR_PENDING is returned
  * and the user can be notified of the connection finishing by waiting
- * for the G_IO_OUT condition. The result of the connection can then be
+ * for the G_IO_OUT condition. The result of the connection must then be
  * checked with g_socket_check_connect_result().
  *
  * Returns: %TRUE if connected, %FALSE on error.
@@ -1727,6 +1727,8 @@ g_socket_check_connect_result (GSocket  *socket,
         }
       return FALSE;
     }
+
+  socket->priv->connected = TRUE;
   return TRUE;
 }