| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| | |
The assertion added in MPD 0.15.14 was too much, it failed when the
MIME type of a stream was NULL.
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/decoder_control.c
src/decoder_control.h
src/input/rewind_input_plugin.c
src/output_control.c
src/output_thread.c
src/player_thread.c
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Duplicate the "mime" attribute of the inner input_stream object,
instead of copying the pointer.
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/input/rewind_input_plugin.c
src/output/httpd_output_plugin.c
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The assumption that MIME type is set only once is not valid with CURL,
as URL redirections may update the MIME type.
This fixes bug #3044.
|
| |
| |
| |
| |
| |
| |
| | |
According to the CURL web site, curl_multi_timeout() was added in
version 7.15.4:
http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some users reported that MPD crashes when using a new CURL version
with the threaded DNS resolver enabled. It seems that
curl_multi_fdset() returns no file descriptor when the DNS resolver
runs in another thread, so MPD does not have any event to wait for.
On the CURL mailing list, somebody suggested to sleep for a fixed
amount of time. This is not an elegant solution, because daemons
should never have to sleep without waiting for an event. I hope the
CURL developers will review the API and remove the threaded DNS
resolver.
Meanwhile, I'm removing the assertion in question, to allow those
unfortunate users running the latest CURL version to continue using
MPD.
|
| |
| |
| |
| |
| | |
Use curl_multi_timeout() to determine the select() timeout, instead of
hard-coding one second.
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
NEWS
configure.ac
src/input/mms_input_plugin.c
|
| | |
|
| | |
|
| |
| |
| |
| | |
Windows compatibility.
|
| | |
|
| |
| |
| |
| |
| | |
input_stream_buffer() has a check for "buffer==NULL", so we don't need
an explicit empty implementation.
|
| | |
|
| |
| |
| |
| | |
All close() implementations must call this method.
|
| |
| |
| |
| | |
Don't limit the "rewind" input plugin to CURL streams.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Major API redesign: don't let the caller allocate the input_stream
object. Let each input plugin allocate its own (derived/extended)
input_stream pointer. The "data" attribute can now be removed, and
all input plugins simply cast the input_stream pointer to their own
structure (with an "struct input_stream base" as the first attribute).
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Make the input_stream implementation hold a reference on the
archive_file object. Allow the caller to "close" the archive_file
object immediately, no matter if the open_stream() method has
succeeded or not.
|
| |
| |
| |
| | |
The archive plugin should decide this.
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
Makefile.am
NEWS
configure.ac
src/input/curl_input_plugin.c
src/input_stream.c
|
| |
| |
| |
| | |
This has been reimplemented in the "rewind" input plugin.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This replaces the rewinding buffer code from the CURL input plugin.
It is more generic, and allows rewinding even when the server sends
Icy-Metadata (which would have been too difficult to implement within
the CURL plugin).
This is a rather complex patch for the stable branch (v0.15.x), but it
fixes a serious problem: the "vorbis" decoder plugin was unable to
play streams with Icy-Metadata, because it couldn't rewind the stream
after detecting the codec (Vorbis vs. FLAC).
|
| | |
|
| |
| |
| |
| |
| | |
This fixes a NULL pointer dereference in case of archive plugin
failure.
|
| |
| |
| |
| |
| | |
Make archive_file a "real" struct, extended by all plugins. Add the
plugin pointer to it. Wrap all method calls in functions.
|
| | |
|
| |
| |
| |
| |
| | |
.. instead of manually checking pathname[0]=='/'.
g_path_is_absolute() is portable.
|
|\|
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/archive/bz2_plugin.c
src/archive_api.h
src/input/file_input_plugin.c
test/run_input.c
|
| |
| |
| |
| | |
Fixed memory leak in error handler.
|
| |
| |
| |
| |
| | |
This code has never made any sense, and has broken some of the archive
plugin.
|
| |
| |
| |
| | |
Should be "lastfm_user", not "lastfm_username".
|
| |
| |
| |
| |
| | |
This code has never made any sense, and has broken some of the archive
plugin.
|
| |
| |
| |
| |
| | |
Not used by any plugin currently, but this eliminates the g_error()
call in input_plugin_config(), so it's worth it.
|
| |
| |
| |
| |
| |
| | |
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
|
| |
| |
| |
| |
| |
| | |
Drop the required GLib version from 2.16 to 2.12, because many current
systems still don't have GLib 2.16. This requires several new
compatibility functions in glib_compat.h.
|
| |
| |
| |
| | |
Add a "mode" argument to open_cloexec() instead.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
|
| |
| |
| |
| |
| | |
Try to be as portable as possible, use GLib path name functions and
macros.
|
| |
| |
| |
| |
| |
| | |
This has been replaced by the last.fm playlist plugin. The input
plugin has never worked well, and was just a playground to experiment
with the last.fm radio protocol.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| | |
When the connection is lost while buffering, the CURL input plugin may
enter an endless loop, because it does not check the EOF condition.
This patch makes fill_buffer() return success only if there's at least
one buffer, which is enough of a check.x
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Accidently, MPD has been using several GLib 2.16 functions for a
while, and nobody noticed yet. To simplify the code base, let's bump
the minimum GLib version for MPD to 2.16. That version is old enough,
and it's reasonable to expect users to have it.
|