| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
using ov_test_callback with function CALLBACKS_STREAMONLY will cause
scanning to stop after the comment field. ov_open (and ov_test)
default to CALLBACKS_DEFAULT which scans the file structure causing a
huge slowdown. The speed improvement is huge: It scanned my files
around 10x faster This procedure has been recommended by monthy (main
vorbis developer) and was said to be safe for scanning files.
|
|
|
|
|
|
|
| |
MPD checks if every flac (possibly other types as well) file contains
cuesheet on every update, which produces unneeded I/O. My music
collection is on NFS share, so it's quite noticeable. IMHO, it
shouldn't re-read unchanged files, so I wrote simple patch to fix it.
|
|
|
|
| |
Fix stuttering due to uninitialized variable.
|
| |
|
| |
|
|
|
|
|
| |
During the pause loop, manually sleep for 500ms if shout_delay()
returns a value greater than that. Don't exhaust libshout's buffer.
|
|
|
|
|
|
| |
Explicitly make the output thread leave the ao_pause() loop. This
patch is a workaround, and the "pause" flag is not managed in a
thread-safe way, but that's good enough for now.
|
|
|
|
|
| |
dirvec_delete() does not free the object, we have to call
directory_free() afterwards.
|
|
|
|
| |
The return value of map_directory_child_fs() must be freed.
|
|
|
|
|
|
|
| |
The function flac_cue_track() first calls FLAC__metadata_object_new(),
then overwrites this pointer with FLAC__metadata_get_cuesheet(). This
allocate two FLAC__StreamMetadata objects, but the first pointer is
lost, and never freed.
|
|
|
|
|
| |
When you pass an empty string to directory_update_init(), it was not
freed by update_task().
|
| |
|
|
|
|
|
| |
The FLAC replaygain parser used the "||" operator. This made the code
stop after the first value which was found.
|
|
|
|
|
| |
When one metadata check fails, return quickly. This removes 2 levels
of indent.
|
|
|
|
| |
This belongs into "git annotate" or AUTHORS.
|
|
|
|
|
|
|
| |
When libid3tag is disabled, the libmad decoder plugin is unable to
identify ID3 frames. If the file starts with an (unidentified) ID3
frame, it assumes that the file is not a valid MP3 song. This patch
solves this by adding minimal stubs for the ID3 functions.
|
|
|
|
|
|
| |
The function tag_ape_load() retrieves a 32 bit unsigned integer from
the input file, and passes it to g_malloc(). This is dangerous, and
may be used for a denial of service attack on MPD.
|
|
|
|
|
| |
Extend the tagLen check after reading it. Removed the second
(redundant) check after the subtraction.
|
|
|
|
|
|
|
| |
The expression "tagLen - size > 0" may result in an integer underflow
and a buffer overflow, when "size" is larger than "tagLen". "size" is
read from the input file, and must not be trusted. This patch changes
the expression to "tagLen > size", which is a lot safer.
|
|
|
|
| |
--enable means "enable", not "disable".
|
| |
|
| |
|
|
|
|
|
| |
If the encoder plugin API is disabled at compile time, don't compile
test/run_encoder.c.
|
| |
|
| |
|
|
|
|
|
| |
The first patch by Patrick didn't work, because his "#ifdef HAVE_OSX"
line would have required config.h.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Initialize flac_data.tag right after flac_data_init(). This way, the
"goto fail" won't jump to the point where tag_free(NULL) can be
called.
|
|
|
|
|
|
| |
On Mac OS X, the httpd plugin cannot be compiled, because OS X's
system headers do nto include sys/types.h, although they use
u_int32_t.
|
| |
|
|
|
|
|
| |
Don't free an internal configuration value in log_init(). Call
config_get_path() instead of manually calling parsePath().
|
|
|
|
|
|
|
| |
When the filesystem_charset is changed in mpd.conf, MPD should discard
the old database. In this error branch, MPD did not fill the GError
object properly, and logged a warning message instead, which caused a
segmentation fault.
|
|
|
|
|
|
|
| |
- introduce a section explaining the mpd.conf format, as done in the man page:
is it better to re-explain it here or ointing the user to the man page,
avoiding information dupplication?
- reorganizze some sections of the manual to give them a linear aspect...
|
| |
|
|
|
|
|
| |
When the PAUSE loop ends, re-check the next command before calling
ao_play() again.
|
|
|
|
|
|
|
|
| |
When MPD was paused, and the client sent the "stop" command (or
"clear"), a glitch caused MPD to continue playback for a split second.
This was because audio_output_all_cancel() calls
audio_output_all_update(), which reopens all output devices, and
re-ignites the playback loop.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
When decoding a local file, the decoder thread tries to run all
matching decoders, until one succeeds. Both file_decode() and
stream_decode() can decode a stream, but MPD closes the stream before
calling file_decode(). Problem is: when this decoder fails, and the
next's stream_decode() method is invoked, the input_stream is still
closed. This patch reopens it.
|
|
|
|
|
|
|
|
|
| |
Several users had problems with binding MPD to "localhost". The cause
was duplicate /etc/hosts entries: the resolver library returns
127.0.0.1 twice, and of course, MPD attempts to bind to "both" of
them. This patch makes failures non-fatal, given that at least one
address was bound successfully. This is a workaround; users should
rather fix their /etc/hosts file.
|
| |
|
|
|
|
| |
Dump each socket address before binding to it.
|
|
|
|
| |
list_OK is returned only after command_list_ok_begin.
|
| |
|
| |
|
|
|
|
|
| |
This warning is useless. I assume the author added it for debugging
purposes.
|