Commit Graph

138 Commits

Author SHA1 Message Date
Max Kellermann d083032236 update: delete ignored symlinks from database
When you disable the "follow_outside_symlinks" or the
"follow_inside_symlinks" setting, the next update should remove the
now-ignored files from the database.
2009-10-27 22:06:28 +01:00
Max Kellermann 1a6ed81193 output_thread: check again if output is open on PAUSE
Basically the same as the 0.15.5 patch "check again if output is open
on CANCEL".  Same race condition, same fix.
2009-10-21 08:07:07 +02:00
Avuton Olrich b2b300b635 Modify version string to post-release version 0.15.6~git 2009-10-18 09:50:17 -07:00
Avuton Olrich 7df1a2c77d mpd version 0.15.5 2009-10-18 09:50:16 -07:00
Max Kellermann d09e19c3dc decoder/flac: fixed two memory leaks in the CUE tag loader
Don't initialize "vc" and "cs" with FLAC__metadata_object_new(); that
value is overwritten by FLAC__metadata_get_tags() and
FLAC__metadata_get_cuesheet().
2009-10-16 17:39:17 +02:00
Max Kellermann 8ae5bc4d79 update: fixed memory leak during container scan
The return value of map_directory_child_fs() must be freed.
2009-10-16 17:38:15 +02:00
Max Kellermann 2c908fde1b output_thread: check again if output is open on CANCEL
When the player thread unpauses, it sends CANCEL to the output thread,
after having checked that the output is still open.  Problem is when
the output thread closes the device before it can process the CANCEL
command - race condition.  This patch adds another "open" check inside
the output thread.
2009-10-16 15:09:22 +02:00
Max Kellermann 6037beabe1 input/curl: fixed endless loop during buffering
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
2009-10-13 16:24:28 +02:00
Max Kellermann 9a3f5ff977 riff, aiff: fixed "limited range" gcc warning
On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
2009-10-11 23:15:38 +02:00
Max Kellermann a1d868eb56 decoder_thread: change the fallback decoder name to "mad"
When there is no Content-Type response header, try the "mad" decoder
plugin.  It uesd to be named "mp3", and we forgot to change the
fallback name in decoder_thread.c.
2009-10-11 23:14:16 +02:00
Max Kellermann af92b1c2d8 input/curl: don't abort if a packet has only metadata
When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes.  "0" however is a special value for "end of file" or
"error".  This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
2009-10-11 23:13:49 +02:00
Avuton Olrich d6d4de1123 Modify version string to post-release version 0.15.5~git 2009-10-03 05:44:26 -07:00
Avuton Olrich 325e380b8e mpd version 0.15.4 2009-10-03 05:44:26 -07:00
Max Kellermann 65693d057b decoder/ffmpeg: use the "artist" tag if "author" is not present
Usually, we read our "artist" tag from ffmpeg's "author" tag.  In some
cases however (e.g. APE), this tag is named "artist".  This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
2009-09-30 15:41:43 +02:00
Max Kellermann b0f9a1454a decoder/faad: skip assertion failure on large ID3 tags
When the ID3 tag in an AAC file is larger than the current buffer, the
function decoder_buffer_consume() aborts.  By using the new function
decoder_buffer_skip() instead, we can safely skip the ID3 tag.
2009-09-30 15:22:47 +02:00
Patrik Weiskircher 803a698f98 output/osx: fix the OS X 10.6 build
Include CoreServices/CoreServices.h.
2009-09-20 23:28:07 +02:00
Max Kellermann a99202a8a4 decoder/vorbis: revert "faster tag scanning with ov_test_callback()"
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
2009-09-10 23:04:01 +02:00
Avuton Olrich e8569af35f Modify version string to post-release version 0.15.4~git 2009-08-29 22:59:24 -07:00
Avuton Olrich 7a690c6b70 mpd version 0.15.3 2009-08-29 22:59:24 -07:00
Rasmus Steinke 408f723701 decoder/vorbis: faster tag scanning with ov_test_callback()
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.
2009-08-24 22:14:22 +02:00
Igor Kuzmin 9d42f4e0ed update: don't re-read unchanged container 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.
2009-08-19 21:21:29 +02:00
Max Kellermann fd8aa54a90 output_init: initialize the "pause" flag
Fix stuttering due to uninitialized variable.
2009-08-18 11:32:54 +02:00
Avuton Olrich 48a80d0b85 Modify version string to post-release version 0.15.3~git 2009-08-15 11:57:50 -07:00
Avuton Olrich 5715534b53 mpd version 0.15.2 2009-08-15 11:57:50 -07:00
Max Kellermann f38ce5408b output/shout: minimize the unpause latency
During the pause loop, manually sleep for 500ms if shout_delay()
returns a value greater than that.  Don't exhaust libshout's buffer.
2009-08-14 11:52:36 +02:00
Max Kellermann 7133f560ec output: fixed shout stuck pause bug
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.
2009-08-14 11:52:12 +02:00
Max Kellermann 7dddd9beda directory: free empty directories after removing them (memleak)
dirvec_delete() does not free the object, we have to call
directory_free() afterwards.
2009-08-14 11:52:00 +02:00
Max Kellermann 5d6f7803e1 update: free temporary string in container scan (memleak)
The return value of map_directory_child_fs() must be freed.
2009-08-14 11:51:51 +02:00
Max Kellermann 1c4f407a6d decoder/flac: don't allocate cuesheet twice (memleak)
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.
2009-08-14 11:51:42 +02:00
Max Kellermann e44f313912 update: free empty path string (memleak)
When you pass an empty string to directory_update_init(), it was not
freed by update_task().
2009-08-14 11:51:35 +02:00
Max Kellermann 47ed89bd4c decoder/flac: parse all replaygain tags
The FLAC replaygain parser used the "||" operator.  This made the code
stop after the first value which was found.
2009-07-22 13:31:48 +02:00
Max Kellermann 322ef3cb80 mad: skip ID3 frames when libid3tag is disabled
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.
2009-07-22 12:57:03 +02:00
Max Kellermann 0ce727d5d4 ape: added protection against large memory allocations
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.
2009-07-19 17:38:46 +02:00
Max Kellermann a988b9b025 ape: check the tag size (fixes integer underflow)
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.
2009-07-18 22:45:56 +02:00
Avuton Olrich 19f1bfdf40 Modify version string to post-release version 0.15.2~git 2009-07-15 13:36:41 -07:00
Avuton Olrich d7bad6ae02 mpd version 0.15.1 2009-07-15 13:36:41 -07:00
Max Kellermann 966a886ef5 NEWS: fixed typo 2009-07-14 14:24:02 +02:00
Max Kellermann c0c5119788 decoder/flac: fix assertion failure in tag_free() call
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.
2009-07-06 22:09:30 +02:00
Max Kellermann 64ca94c910 output/httpd: include sys/types.h
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.
2009-07-06 14:40:06 +02:00
Max Kellermann badb827712 log: fix double free() bug during shutdown
Don't free an internal configuration value in log_init().  Call
config_get_path() instead of manually calling parsePath().
2009-07-05 07:14:24 +02:00
Max Kellermann 15d4c841ce database: fixed NULL pointer dereference after charset change
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.
2009-06-30 16:29:40 +02:00
Max Kellermann 40851b7cac output_all: don't resume playback when stopping during pause
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.
2009-06-29 22:20:36 +02:00
Max Kellermann f8f5d40532 NEWS: updated NEWS file for 0.15.1 2009-06-25 11:29:08 +02:00
Avuton Olrich 8758e97794 mpd version 0.15 2009-06-23 18:43:57 -07:00
Max Kellermann d5ddecb15a listen: bind() failure on secondary address is non-fatal
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.
2009-06-10 08:01:07 +02:00
Daniel Kahn Gillmor 05dfdfdb39 alsa_mixer: add mixer_index option
This allows you to select controls with duplicate names.
2009-04-28 09:15:48 +02:00
Max Kellermann 11bcd7f013 curl: moved proxy settings to "input" block
The old global settings "http_proxy_host", "http_proxy_port",
"http_proxy_user" and "http_proxy_password" continue to work.
2009-04-25 13:35:04 +02:00
Max Kellermann 472b994779 player_thread: pause when all audio outputs fail to play
When all audio outputs have been closed due to failures, pause the
playback instead of stopping it.  This way, the user may resume
at the current position after the problem has been dealt with.
2009-04-25 11:55:36 +02:00
Max Kellermann 54863dff8a NEWS: flagged some new features "experimental"
The "lastfm" input plugin is far from complete, because MPD does not
support nesting playlists yet.  The "fluidsynth" decoder plugin
suffers from shortcomings in the libfluidsynth library:

 http://www.mail-archive.com/fluid-dev@nongnu.org/msg01099.html
2009-04-02 07:12:38 +02:00
Avuton Olrich 88362cbcca news: add more miscellaneous missing news 2009-04-01 06:05:57 -07:00