diff options
Diffstat (limited to 'libsoup/soup-context.c')
-rw-r--r-- | libsoup/soup-context.c | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/libsoup/soup-context.c b/libsoup/soup-context.c index c5afec61..1235525e 100644 --- a/libsoup/soup-context.c +++ b/libsoup/soup-context.c @@ -33,34 +33,13 @@ #include "soup-ssl.h" #include "soup-www-auth-context.h" -GHashTable *soup_hosts; /* KEY, VALUE: SoupHost */ - -/** - * soup_context_get: - * @uri: the stringified URI. - * - * Returns a pointer to the %SoupContext representing @uri. If a context - * already exists for the URI, it is returned with an added reference. - * Otherwise, a new context is created with a reference count of one. - * - * Return value: a %SoupContext representing @uri. - */ -SoupContext * -soup_context_get (const gchar *uri) -{ - SoupUri *suri; - SoupContext *con; - - g_return_val_if_fail (uri != NULL, NULL); - - suri = soup_uri_new (uri); - if (!suri) return NULL; - - con = soup_context_from_uri (suri); - soup_uri_free (suri); +struct _SoupContext { + SoupUri *uri; + SoupHost *server; + guint refcnt; +}; - return con; -} +GHashTable *soup_hosts; /* KEY, VALUE: SoupHost */ /** * soup_context_uri_hash: @@ -163,7 +142,7 @@ authenticate (SoupAuthContext *ac, SoupAuth *auth, SoupMessage *msg) * Return value: a %SoupContext representing @uri. */ SoupContext * -soup_context_from_uri (SoupUri *suri) +soup_context_from_uri (const SoupUri *suri) { SoupHost *serv = NULL; SoupContext *ret; @@ -348,21 +327,39 @@ try_existing_connections (SoupContext *ctx, return FALSE; } +static const SoupUri * +get_proxy (void) +{ + static SoupUri *proxy = NULL; + static gboolean inited = FALSE; + + if (!inited) { + char *proxy_string; + + proxy_string = getenv ("SOUP_PROXY"); + if (proxy_string) + proxy = soup_uri_new (proxy_string); + inited = TRUE; + } + + return proxy; +} + static gboolean try_create_connection (struct SoupContextConnectData *data) { SoupContext *ctx = data->ctx; - SoupContext *proxy; + const SoupUri *proxy_uri; data->timeout_tag = 0; - proxy = soup_get_proxy (); - if (proxy) { + proxy_uri = get_proxy (); + if (proxy_uri) { data->connection = soup_proxy_connection_new (ctx->uri, ctx->server->ac, - proxy->uri, - proxy->server->ac); + proxy_uri, + NULL); } else { data->connection = soup_connection_new (ctx->uri, ctx->server->ac); |