+static GSocketAddressEnumerator *
+g_socket_address_connectable_proxy_enumerate (GSocketConnectable *connectable)
+{
+ GSocketAddressEnumerator *addr_enum = NULL;
+
+ g_assert (connectable != NULL);
+
+ if (G_IS_INET_SOCKET_ADDRESS (connectable) &&
+ !G_IS_PROXY_ADDRESS (connectable))
+ {
+ GInetAddress *addr;
+ guint port;
+ gchar *uri;
+ gchar *ip;
+
+ g_object_get (connectable, "address", &addr, "port", &port, NULL);
+
+ ip = g_inet_address_to_string (addr);
+ uri = _g_uri_from_authority ("none", ip, port, NULL);
+
+ addr_enum = g_object_new (G_TYPE_PROXY_ADDRESS_ENUMERATOR,
+ "connectable", connectable,
+ "uri", uri,
+ NULL);
+
+ g_object_unref (addr);
+ g_free (ip);
+ g_free (uri);
+ }
+ else
+ {
+ addr_enum = g_socket_address_connectable_enumerate (connectable);
+ }
+
+ return addr_enum;
+}