aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Redirect stdin *before* we establish a listen socketEric Wong2007-09-052-29/+29
| | | | | | This way we'll avoid listening on fd=0 and have a better chance of having fd=0 as /dev/null git-svn-id: https://svn.musicpd.org/mpd/trunk@6852 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* log: oops, fix a syntax errorEric Wong2007-09-041-1/+1
| | | | | (yes, it helps to actually compile code before committing it) git-svn-id: https://svn.musicpd.org/mpd/trunk@6851 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* log: better bug avoidance for libraries incorrectly handling fd=0Eric Wong2007-09-041-2/+16
| | | | | | | | | | | | | We redirect stdin to /dev/null to work around a libao bug, but this bug has been fixed in libao since 2003 (according to jat). However, there are likely other bugs in other libraries (and even our code!) that handle fd=0 incorrectly and I'd rather not take the risk[1]. So So it's easiest to just keep fd=0==/dev/null for now... [1] - I've seen several of these myself... git-svn-id: https://svn.musicpd.org/mpd/trunk@6849 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* zeroconf: avoid passing NULLs to Avahi *_free() routinesEric Wong2007-09-021-4/+6
| | | | | | This should fix Debian bug #428551 (mpd crashes when restarting the dbus daemon) git-svn-id: https://svn.musicpd.org/mpd/trunk@6844 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Fix endless loop when mpd is launched from a non-interactive shell.Eric Wong2007-09-021-1/+5
| | | | | | | | | | | | | | | | | | Thanks to _noth_ for the patch, this fixes Mantis bug #1534 _noth_ wrote: > When MPD is launched from a non-interactive shell, it enters an endless > loop, filling up its error log file with "error accept()'ing" messages. > This is caused by the fact that stdin is already closed when mpd starts > up. listenOnPort() opens up the first of its sockets as fd 0 (the first > empty fd table position). Then, setup_log_output()->redirect_stdin() > overwrites fd0 (fd=open("/dev/null",...); dup2(fd, STDIN_FILENO);) > without checking if it corresponds to the actual standard input (or if > it is open in the first place). This means that listenSockets[0].fd now > is a fd for /dev/null, thus doIOForInterfaces()->getConnections() can't > accept(2) on it and fails with the above error. The attached patch fixes > this for me. git-svn-id: https://svn.musicpd.org/mpd/trunk@6843 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* interface: fix IPV6 hostname buffer deallocation from automaticsEric Wong2007-09-011-12/+7
| | | | | | | | | | | | The host buffer that hostname pointed to is no longer on the stack by the time the SECURE() message is printed. So make it static and thus accessible to all. We won't be calling this stuff in the middle of a child process/thread/task, so there's no Also, hostname is a constant string we shouldn't modify, so mark it as const char *. git-svn-id: https://svn.musicpd.org/mpd/trunk@6842 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* inputPlugins/flac: improve error messagesEric Wong2007-08-281-12/+13
| | | | | | | | | For the default: case, just use the error message that libFLAC provides instead of using something ambiguous. Also, this gets rid of long lines in the code, making it easier to digest. Of course, we save ~100 bytes of text space in the process :) git-svn-id: https://svn.musicpd.org/mpd/trunk@6830 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* log: cleanup: avoid "magic" numbersEric Wong2007-08-281-6/+8
| | | | | | We used a bare '15' in several places and it's not immediately obvious where it came from. This makes it more obvious git-svn-id: https://svn.musicpd.org/mpd/trunk@6829 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* removing debug messages from signal handlersJ. Alexander Treuman2007-08-274-10/+18
| | | | | | | | | As unfortunate as it is to remove such useful debugging messages, it's necessary to fix a potential deadlock with signal handling. A bunch of functions the debug functions call aren't safe to call from a signal handler. There are some alternate solutions, but they're neither pretty nor simple. So just remove them entirely for now. git-svn-id: https://svn.musicpd.org/mpd/trunk@6828 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* interface: print whole debug message at onceJ. Alexander Treuman2007-08-271-7/+8
| | | | | | Using SECURE once without a \n, and again with one, results in a timestamp mid-line. Let's not do that. git-svn-id: https://svn.musicpd.org/mpd/trunk@6827 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* adding \n to a bunch of error message stringsJ. Alexander Treuman2007-08-275-8/+8
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6826 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* send SIGSTOP to player and decoder processes on pause, tooEric Wong2007-08-272-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | as with the stop command, this will cause the player and decoder to suspend and not wake up hundreds of times a second to poll a variable for wakeup. This will reduce power consumption on some CPUs while mpd is paused and not playing. tests: pause && unpause => OK pause && stop && play => OK pause && exit && restart w/statefile && unpause => OK pause && block sound device && \ unpause => failed to open sound device \ => still paused and suspended => unblock sound device && unpause => OK (playing) In all cases, the player process releases the audio device when paused before going into the suspended state. git-svn-id: https://svn.musicpd.org/mpd/trunk@6822 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* export FATAL() with noreturn attributeEric Wong2007-08-274-8/+5
| | | | | | | | | | | | | | | | | | | | | This attribute was set in log.c, but not exported to other modules in log.h This allows us to remove some unneccessary variable initializations that were added in r6277. I did audioOutput_shout.c a bit differently, to avoid some jumps. before: $ size src/mpd text data bss dec hex filename 225546 4040 14600 244186 3b9da src/mpd after: $ size src/mpd text data bss dec hex filename 224698 4040 14600 243338 3b68a src/mpd git-svn-id: https://svn.musicpd.org/mpd/trunk@6821 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* inputPlugins/mp3_plugin: parse LAME tags for ReplayGain infoJ. Alexander Treuman2007-08-221-46/+104
| | | | | | | | | | | | Parse ReplayGain info in LAME tags and use it if no ID3v2 ReplayGain tags are found. This is currently a bit unsafe, as apparently some LAME tags have bogus ReplayGain values. But I'm finding a lot of MP3s with valid LAME tags that fail the LAME tag CRC check. So until I figure out why that's happening, it's an unreliable method for checking if the LAME tag is valid. A big thanks to tmz for writing the original patch. git-svn-id: https://svn.musicpd.org/mpd/trunk@6798 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* decode: close audio device after initial open if pausedJ. Alexander Treuman2007-08-121-1/+5
| | | | | | | | | | Currently, if we start decoding while the pause flag is set, we open the audio device and leave it opened, blocking other apps from using it. The obvious thing to do is to not open the audio device if the pause flag is set, but the open call also sets the audio format. Therefore I'm leaving the open call in, and just closing it immediately afterwards if the pause flag is set. git-svn-id: https://svn.musicpd.org/mpd/trunk@6745 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* decode: reformatting for better readabilityJ. Alexander Treuman2007-08-121-6/+9
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6742 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* audioOutputs/audioOutput_shout: adding timers backJ. Alexander Treuman2007-08-111-27/+80
| | | | | | | The shout plugin will now feign playback until the connect timeout is hit, preventing connection attempts from blocking playback on local outputs. Note that this patch is very different from remiss' original one. git-svn-id: https://svn.musicpd.org/mpd/trunk@6738 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Cleanup a outcommented debug statementQball Cow2007-08-111-5/+0
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6736 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Extra debug outputQball Cow2007-07-161-3/+16
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6689 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* log: flush the warning log after redirecting stderr to the log filesJ. Alexander Treuman2007-06-291-0/+1
| | | | | | | | | | Previously, the warning log was only flushed if creating the db or logging to stdout. This meant that under normal circumstances (no db creation, logging to files) the warning log was never flushed. This caused a bug when a warning was printed for each call to the status command where the warning buffer would grow endlessly, eventually using more and more CPU to reallocate it. git-svn-id: https://svn.musicpd.org/mpd/trunk@6660 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* replayGain: adding DEBUG messages when computing scaleJ. Alexander Treuman2007-06-251-0/+4
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6658 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* inputPlugins/wavpack_plugin: enable ReplayGain codeJ. Alexander Treuman2007-06-251-14/+3
| | | | | | Turns out the fix was as simple as specifying the OPEN_TAGS flag when opening the file. Thanks again to Kodest for figuring this one out. git-svn-id: https://svn.musicpd.org/mpd/trunk@6657 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* inputPlugins/wavpack_plugin: adding dummy code for ReplayGain supportJ. Alexander Treuman2007-06-251-4/+84
| | | | | | | | | This ReplayGain code is currently disabled because WavpackGetTagItem can't seem to find replaygain_* fields in APEv2 tags (which is how wvgain stores ReplayGain values). Additionally, because APEv2 tags are stored at the end of the file, this code is only implemented for regular files and not HTTP streams. Using HTTP seeking it *may* be possible to implement it for both. git-svn-id: https://svn.musicpd.org/mpd/trunk@6656 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* decode: prefer fileDecodeFunc over streamDecodeFunc for filesJ. Alexander Treuman2007-06-251-9/+10
| | | | | | | | | Only wavpack implements both fileDecodeFunc and streamDecodeFunc, and it's fileDecodeFunc provides more functionality. So try using that first. This commit also fixes a bug where the plugin test loop wouldn't break once a suitable plugin was found if it used fileDecodeFunc. git-svn-id: https://svn.musicpd.org/mpd/trunk@6655 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Updating Kodest's name/email.J. Alexander Treuman2007-06-251-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6654 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Adding WavPack support. Patch courtesy Kodest.J. Alexander Treuman2007-06-244-1/+426
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6651 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Use parsePath for the fifo output's path parameter.J. Alexander Treuman2007-06-131-9/+9
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6623 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Adding parsePath and making parseConfigFilePath use it.J. Alexander Treuman2007-06-133-48/+65
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6622 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Adding FIFO audio output. This is pretty much identical to the old one,J. Alexander Treuman2007-06-134-1/+303
| | | | | except that it now uses a timer for throttling. git-svn-id: https://svn.musicpd.org/mpd/trunk@6621 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Use <= when comparing (current time - start time) to a timeout. This wayJ. Alexander Treuman2007-06-121-2/+2
| | | | | | | if the clock ticks right after we get the start time and the timeout is only one second, we'll still wait a full second instead of returning immediately. git-svn-id: https://svn.musicpd.org/mpd/trunk@6557 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Make the shout timeout configurable. The default is still 2 seconds.J. Alexander Treuman2007-06-121-2/+13
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6556 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Redoing remiss's shout patch. This time, just block on open() instead ofJ. Alexander Treuman2007-06-123-106/+30
| | | | | | | | | | | | | pretending to play while we wait for the connection to timeout. This removes the need for timers, and thus removes the now unnecessary timer_get_runtime_* function(s) from the timer code. The changes made compared to the pre-patch shout plugin are: * Block while connecting, timing out after 2 seconds. * Close the device, and not just the connection, if play returns -1. * Remove sd->last_err (it's always assigned before use). * Some minor cleanups. git-svn-id: https://svn.musicpd.org/mpd/trunk@6555 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Load shout first instead of last. This makes it more likely to block otherJ. Alexander Treuman2007-06-122-2/+2
| | | | | | | outputs, which is actually desired behaviour. This way if the shout server takes a while to respond, the shout output can block until connected without messing up other audio outputs. git-svn-id: https://svn.musicpd.org/mpd/trunk@6554 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Load the shout plugin last. This will make sure it's played to last,J. Alexander Treuman2007-06-102-2/+2
| | | | | reducing the likelyhood of it blocking other outputs. git-svn-id: https://svn.musicpd.org/mpd/trunk@6543 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* If an audio output is in state DEVICE_ENABLE, and openAudioOutput fails,J. Alexander Treuman2007-06-091-6/+10
| | | | | | | | | leave it in that state. Likewise, if an audio output is in state DEVICE_ON, and reopening the device due to a format change fails, change it to state DEVICE_ENABLE. This will prevent flushAudioBuffer from even attempting to play audio on a closed device (even though it would fail anyway). git-svn-id: https://svn.musicpd.org/mpd/trunk@6529 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Tidying up some code.J. Alexander Treuman2007-06-091-17/+10
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6527 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Remove a useless if (quit) block. It's enclosed in two while loops: theJ. Alexander Treuman2007-06-091-4/+0
| | | | | | | top depending on !quit, which doesn't set it anywhere before the if (quit) block is reached, and the inner one which doesn't set quit at all. Since it's a local variable and can't be modified externally, it'll never be hit. git-svn-id: https://svn.musicpd.org/mpd/trunk@6524 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* This should resolve some of the timing issues experienced after switching ↵Roger Bystrøm2007-06-091-8/+76
| | | | | | | | | | | from blocking to non-blocking shout api * Wait ten seconds before declearing the shout server unreachable * Fix a state where it would never attempt to connect if it had previously failed It isn't perfect yet, but I'd like some testing on it from other setups git-svn-id: https://svn.musicpd.org/mpd/trunk@6523 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* switching to us instead of ms on runtimeRoger Bystrøm2007-06-092-3/+3
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6522 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Added timer_get_runtime_ms to know how long the timer has been runningRoger Bystrøm2007-06-092-1/+10
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6521 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Use string concatenation instead of snprintf for the User-Agent HTTPJ. Alexander Treuman2007-06-091-2/+1
| | | | | header. git-svn-id: https://svn.musicpd.org/mpd/trunk@6520 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Tidying up some code.J. Alexander Treuman2007-06-091-12/+14
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6519 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* dmix fix, don't call snd_pcm_drain unless we're already in the RUNNINGWarren Dukes2007-06-081-1/+3
| | | | | | | state (when users press stop, previous snd_pcm_drop(), then snd_pcm_drain() was called. this would lockup dmix) git-svn-id: https://svn.musicpd.org/mpd/trunk@6517 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Send SIGCONT to the decode process before sending it SIGTERM.J. Alexander Treuman2007-06-071-0/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6503 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Set a flag if we've sent the player process SIGSTOP so that we know not toJ. Alexander Treuman2007-06-043-3/+11
| | | | | wait for it to complete an action which it never will. git-svn-id: https://svn.musicpd.org/mpd/trunk@6488 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Don't send the main process SIGUSR1 until we've sent the decode processJ. Alexander Treuman2007-06-041-1/+2
| | | | | SIGSTOP. git-svn-id: https://svn.musicpd.org/mpd/trunk@6486 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Don't kill the player process (and effectively the decode process) whenJ. Alexander Treuman2007-06-045-21/+36
| | | | | | completely stopped. Instead, send them SIGSTOP to pause the process until they're needed again. Then send them SIGCONT instead of re-spawning them. git-svn-id: https://svn.musicpd.org/mpd/trunk@6485 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Adding very experimental streaming support for mp4.J. Alexander Treuman2007-06-041-16/+10
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@6483 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Use strncasecmp instead of strncmp when comparing HTTP headers. It seemsJ. Alexander Treuman2007-06-041-6/+6
| | | | | | | some versions of shoutcast send "content-type" in all lowercase, and I don't trust other servers to get the case right for the rest of the headers we look for. git-svn-id: https://svn.musicpd.org/mpd/trunk@6482 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Add MIME types for the aac and mp4 input plugins. Note that these won'tJ. Alexander Treuman2007-06-042-6/+8
| | | | | | have any effect until the aac and mp4 input plugins actually support a stream decoding API. git-svn-id: https://svn.musicpd.org/mpd/trunk@6481 09075e82-0dd4-0310-85a5-a0d7c8717e4f