static void proxy_lookup_cb (GObject *object, GAsyncResult *result, gpointer user_data) { GTask *task = user_data; GProxyAddressEnumeratorPrivate *priv = g_task_get_task_data (task); g_clear_error (&priv->last_error); priv->proxies = g_proxy_resolver_lookup_finish (G_PROXY_RESOLVER (object), result, &priv->last_error); priv->next_proxy = priv->proxies; if (priv->last_error) { complete_async (task); return; } else { next_enumerator (priv); if (priv->addr_enum) { g_socket_address_enumerator_next_async (priv->addr_enum, g_task_get_cancellable (task), address_enumerate_cb, task); return; } } complete_async (task); }
static void didResolveProxy(GProxyResolver* resolver, GAsyncResult* result, bool* isUsingProxyType, bool* isUsingProxy) { GUniqueOutPtr<GError> error; GUniquePtr<char*> uris(g_proxy_resolver_lookup_finish(resolver, result, &error.outPtr())); if (error) { WTFLogAlways("Error determining system proxy settings: %s", error->message); return; } *isUsingProxyType = didResolveProxy(uris.get()); *isUsingProxy = isUsingHttpProxy || isUsingHttpsProxy; }
static void resolved_proxy (GObject *object, GAsyncResult *result, gpointer data) { GProxyResolver *proxy_resolver = G_PROXY_RESOLVER (object); SoupAsyncData *async_data = data; GError *error = NULL; char **proxy_uris = NULL; SoupURI *proxy_uri = NULL; guint status = SOUP_STATUS_OK; proxy_uris = g_proxy_resolver_lookup_finish (proxy_resolver, result, &error); if (error || proxy_uris == NULL || proxy_uris[0] == NULL) { status = SOUP_STATUS_CANT_RESOLVE_PROXY; goto finish; } /* We need to handle direct:// specially, otherwise * SoupSession will try to resolve it as the proxy address. */ if (!g_strcmp0 (proxy_uris[0], "direct://")) goto finish; proxy_uri = soup_uri_new (proxy_uris[0]); if (proxy_uri == NULL) status = SOUP_STATUS_CANT_RESOLVE_PROXY; finish: async_data->callback (async_data->resolver, status, proxy_uri, async_data->user_data); if (async_data->cancellable) g_object_unref (async_data->cancellable); g_strfreev (proxy_uris); if (proxy_uri) soup_uri_free (proxy_uri); g_object_unref (async_data->resolver); g_slice_free (SoupAsyncData, async_data); }
static void _proxy_lookup_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { GError *error = NULL; gchar **proxies; GMainLoop *loop = user_data; proxies = g_proxy_resolver_lookup_finish (G_PROXY_RESOLVER (source_object), result, &error); if (error) { print_and_free_error (error); } else { print_proxies (info, proxies); g_strfreev (proxies); } g_main_loop_quit (loop); }