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.
This commit is contained in:
Jonathan Matthew 2009-01-26 09:51:36 +01:00 committed by Sebastian Dröge
parent 66de4c1bba
commit 5a0e94b8a7
2 changed files with 23 additions and 6 deletions

View file

@ -836,9 +836,14 @@ AG_GST_CHECK_FEATURE(SHOUT2, [Shoutcast/Icecast client library], shout2, [
dnl *** soup ***
translit(dnm, m, l) AM_CONDITIONAL(USE_SOUP, true)
AG_GST_CHECK_FEATURE(SOUP, [soup http client plugin (2.4)], souphttpsrc, [
PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.3.2, HAVE_SOUP="yes", [
HAVE_SOUP="no"
AC_MSG_RESULT(no)
PKG_CHECK_MODULES(SOUP, libsoup-gnome-2.4 >= 2.3.2, [
HAVE_SOUP="yes"
AC_DEFINE(HAVE_LIBSOUP_GNOME, 1, [soup gnome integration])
],[
PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.3.2, HAVE_SOUP="yes", [
HAVE_SOUP="no"
AC_MSG_RESULT(no)
])
])
AC_SUBST(SOUP_CFLAGS)
AC_SUBST(SOUP_LIBS)

View file

@ -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"));