summaryrefslogtreecommitdiffstats
path: root/ext/soup/gstsouphttpsrc.c
diff options
context:
space:
mode:
authorJonathan Matthew <jonathan@d14n.org>2009-01-26 09:51:36 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-01-26 09:55:24 +0100
commit5a0e94b8a75be2e59617af31326bd5defaab0ac5 (patch)
treee1c91c31ad4fc97076aed575a4f2e7691fb3eed8 /ext/soup/gstsouphttpsrc.c
parent66de4c1bba5b2da9a50218e0f84071a10385e28e (diff)
Use libsoup-gnome for proxy configuration if available
If libsoup-gnome is found use this as it will give us the GNOME proxy configuration. Otherwise use normal libsoup. The GNOME proxy configuration will only be used if the proxy properties are not set on souphttpsrc and if the http_proxy environment variable is not set. Fixes bug #552140.
Diffstat (limited to 'ext/soup/gstsouphttpsrc.c')
-rw-r--r--ext/soup/gstsouphttpsrc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c
index 139d3337..ad7433c1 100644
--- a/ext/soup/gstsouphttpsrc.c
+++ b/ext/soup/gstsouphttpsrc.c
@@ -25,6 +25,8 @@
* <para>
* An HTTP proxy must be specified by its URL.
* If the "http_proxy" environment variable is set, its value is used.
+ * If built with libsoup's GNOME integration features, the GNOME proxy
+ * configuration will be used, or failing that, proxy autodetection.
* The element-souphttpsrc::proxy property can be used to override the
* default.
* </para>
@@ -94,7 +96,11 @@
#endif
#include <gst/gstelement.h>
#include <gst/gst-i18n-plugin.h>
+#ifdef HAVE_LIBSOUP_GNOME
+#include <libsoup/soup-gnome.h>
+#else
#include <libsoup/soup.h>
+#endif
#include "gstsouphttpsrc.h"
#include <gst/tag/tag.h>
@@ -1127,15 +1133,21 @@ gst_soup_http_src_start (GstBaseSrc * bsrc)
return FALSE;
}
- if (src->proxy == NULL)
+ if (src->proxy == NULL) {
src->session =
soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
- src->context, SOUP_SESSION_USER_AGENT, src->user_agent, NULL);
- else
+ src->context, SOUP_SESSION_USER_AGENT, src->user_agent,
+#ifdef HAVE_LIBSOUP_GNOME
+ SOUP_SESSION_ADD_FEATURE, SOUP_TYPE_PROXY_RESOLVER_GNOME,
+#endif
+ NULL);
+ } else {
src->session =
soup_session_async_new_with_options (SOUP_SESSION_ASYNC_CONTEXT,
src->context, SOUP_SESSION_PROXY_URI, src->proxy,
SOUP_SESSION_USER_AGENT, src->user_agent, NULL);
+ }
+
if (!src->session) {
GST_ELEMENT_ERROR (src, LIBRARY, INIT,
(NULL), ("Failed to create async session"));