mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-03 05:59:10 +00:00
ext/gnomevfs/gstgnomevfssrc.c: gnome_vfs_uri_is_local() alone is not a good indicator whether we can operate in pull-...
Original commit message from CVS: * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnome_vfs_src_check_get_range): gnome_vfs_uri_is_local() alone is not a good indicator whether we can operate in pull-mode with a specific URI, as it returns FALSE for file:// URIs that point to an NFS-mounted path. Be more conservative here: whitelist local files, blacklist http URIs and use the old mechanism for anything else (fixes #334216).
This commit is contained in:
parent
a493113257
commit
06ee16b3ff
2 changed files with 41 additions and 11 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2006-03-11 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* ext/gnomevfs/gstgnomevfssrc.c:
|
||||||
|
(gst_gnome_vfs_src_check_get_range):
|
||||||
|
gnome_vfs_uri_is_local() alone is not a good indicator
|
||||||
|
whether we can operate in pull-mode with a specific URI,
|
||||||
|
as it returns FALSE for file:// URIs that point to an
|
||||||
|
NFS-mounted path. Be more conservative here: whitelist
|
||||||
|
local files, blacklist http URIs and use the old
|
||||||
|
mechanism for anything else (fixes #334216).
|
||||||
|
|
||||||
2006-03-10 Thomas Vander Stichele <thomas at apestaart dot org>
|
2006-03-10 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* configure.ac:
|
* configure.ac:
|
||||||
|
|
|
@ -1075,26 +1075,45 @@ static gboolean
|
||||||
gst_gnome_vfs_src_check_get_range (GstBaseSrc * basesrc)
|
gst_gnome_vfs_src_check_get_range (GstBaseSrc * basesrc)
|
||||||
{
|
{
|
||||||
GstGnomeVFSSrc *src;
|
GstGnomeVFSSrc *src;
|
||||||
gboolean is_local;
|
const gchar *protocol;
|
||||||
|
|
||||||
src = GST_GNOME_VFS_SRC (basesrc);
|
src = GST_GNOME_VFS_SRC (basesrc);
|
||||||
|
|
||||||
if (src->uri == NULL) {
|
if (src->uri == NULL) {
|
||||||
GST_WARNING_OBJECT (src, "no URI set yet");
|
GST_WARNING_OBJECT (src, "no URI set yet");
|
||||||
/* don't know what to do, let the basesrc class decide for us */
|
|
||||||
if (GST_BASE_SRC_CLASS (parent_class)->check_get_range)
|
|
||||||
return GST_BASE_SRC_CLASS (parent_class)->check_get_range (basesrc);
|
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_local = gnome_vfs_uri_is_local (src->uri);
|
if (gnome_vfs_uri_is_local (src->uri)) {
|
||||||
|
GST_LOG_OBJECT (src, "local URI (%s), assuming random access is possible",
|
||||||
|
GST_STR_NULL (src->uri_name));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (src, "%s URI (%s), random access %spossible",
|
/* blacklist certain protocols we know won't work getrange-based */
|
||||||
(is_local) ? "local" : "remote", GST_STR_NULL (src->uri_name),
|
protocol = gnome_vfs_uri_get_scheme (src->uri);
|
||||||
(is_local) ? "" : "not ");
|
if (protocol == NULL)
|
||||||
|
goto undecided;
|
||||||
|
|
||||||
return is_local;
|
if (strcmp (protocol, "http") == 0) {
|
||||||
|
GST_LOG_OBJECT (src, "blacklisted protocol '%s', no random access possible"
|
||||||
|
" (URI=%s)", protocol, GST_STR_NULL (src->uri_name));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fall through to undecided */
|
||||||
|
|
||||||
|
undecided:
|
||||||
|
{
|
||||||
|
/* don't know what to do, let the basesrc class decide for us */
|
||||||
|
GST_LOG_OBJECT (src, "undecided about URI '%s', let base class handle it",
|
||||||
|
GST_STR_NULL (src->uri_name));
|
||||||
|
|
||||||
|
if (GST_BASE_SRC_CLASS (parent_class)->check_get_range)
|
||||||
|
return GST_BASE_SRC_CLASS (parent_class)->check_get_range (basesrc);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
Loading…
Reference in a new issue