void DNSResolveQueue::updateIsUsingProxy() { GRefPtr<GProxyResolver> resolver; g_object_get(SoupNetworkSession::defaultSession().soupSession(), "proxy-resolver", &resolver.outPtr(), nullptr); ASSERT(resolver); g_proxy_resolver_lookup_async(resolver.get(), "http://example.com/", nullptr, proxyResolvedForHttpUriCallback, &m_isUsingProxy); g_proxy_resolver_lookup_async(resolver.get(), "https://example.com/", nullptr, proxyResolvedForHttpsUriCallback, &m_isUsingProxy); }
static void use_resolver (gboolean synchronous) { GProxyResolver *resolver; resolver = g_proxy_resolver_get_default (); if (synchronous) { GError *error = NULL; gchar **proxies; proxies = g_proxy_resolver_lookup (resolver, info, cancellable, &error); if (error) print_and_free_error (error); else print_proxies (info, proxies); g_strfreev (proxies); } else { GMainLoop *loop = g_main_loop_new (NULL, FALSE); g_proxy_resolver_lookup_async (resolver, info, cancellable, _proxy_lookup_cb, loop); g_main_loop_run (loop); g_main_loop_unref (loop); } }
static void get_proxy_uri_async (SoupProxyURIResolver *resolver, SoupURI *uri, GMainContext *async_context, GCancellable *cancellable, SoupProxyURIResolverCallback callback, gpointer user_data) { SoupProxyResolverDefault *resolver_default = SOUP_PROXY_RESOLVER_DEFAULT (resolver); SoupProxyResolverDefaultPrivate *priv = soup_proxy_resolver_default_get_instance_private (resolver_default); SoupAsyncData *async_data; char *uri_string; async_data = g_slice_new0 (SoupAsyncData); async_data->resolver = (SoupProxyURIResolver*) g_object_ref (resolver); async_data->cancellable = cancellable; async_data->callback = callback; async_data->user_data = user_data; uri_string = soup_uri_to_string (uri, FALSE); if (async_context) g_main_context_push_thread_default (async_context); g_proxy_resolver_lookup_async (priv->gproxy_resolver, uri_string, cancellable ? g_object_ref (cancellable) : NULL, resolved_proxy, async_data); if (async_context) g_main_context_pop_thread_default (async_context); g_free (uri_string); }
static void g_proxy_address_enumerator_next_async (GSocketAddressEnumerator *enumerator, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GProxyAddressEnumeratorPrivate *priv = GET_PRIVATE (enumerator); GTask *task; task = g_task_new (enumerator, cancellable, callback, user_data); g_task_set_task_data (task, priv, NULL); if (priv->proxies == NULL) { GProxyResolver *resolver = g_proxy_resolver_get_default (); g_proxy_resolver_lookup_async (resolver, priv->dest_uri, cancellable, proxy_lookup_cb, task); return; } if (priv->addr_enum) { if (priv->proxy_address) { return_result (task); return; } else { g_socket_address_enumerator_next_async (priv->addr_enum, cancellable, address_enumerate_cb, task); return; } } complete_async (task); }