e1628ff1a9
Command handling: 1. Changed mpd_read_cb() to delegate to mpd_process_line() for each received command line. 2. mpd_process_line() handles idle state and command list state and delegates to mpd_process_command() to handle each command line. If the command was successful it sends OK to the client according the the command list state. Error responses are sent by mpd_process_command(). 3. mpd_process_command() parses the args and delegates to the individual command handler. mpd_input_filter: 1. Removed handling of command lists. They are handled by mpd_process_line(). 2. Return BEV_OK if there's at least one complete line of input even if there's more data in the input buffer. Idle/noidle: 1. Changed mpd_command_idle() to never write OK to the output buffer. Instead it is the responsibility of the caller to decide on the response. 2. Removed mpd_command_noidle() instead it is handled in mpd_process_line(). If the client is not in idle state noidle is ignored (no response sent) If the client is in idle state then it changes idle state to false and sends OK as the response to the idle command. Command lists: 1. Added command list state to the client context so commands in the list are buffered and only executed after receiving command_list_end. Connection state: 1. Added is_closing flag in the client context to ignore messages received after freeing the events buffer in intent to close the client connection. Command arguments parsing: 1. Updated COMMAND_ARGV_MAX to 70 to match current MPD. 2. Changed mpd_pars_range_arg to handle open-ended range. Command pause: 1. pause is ignored in stopped state instead returning error. Command move: 1. Changed mpd_command_move() to support moving a range. 2. Added db_queue_move_bypos_range() to support moving a range. Command password: 1. Password authentication flag set in handler mpd_command_password() instead of in command processor. Config: 1. Added config value: "max_command_list_size". The maximum allowed size of buffered commands in command list. |
||
---|---|---|
.github | ||
build-aux | ||
docs | ||
htdocs | ||
m4 | ||
scripts | ||
sqlext | ||
src | ||
web-src | ||
.gitignore | ||
.travis.yml | ||
AUTHORS | ||
COPYING | ||
ChangeLog | ||
INSTALL.md | ||
Makefile.am | ||
NEWS | ||
README.md | ||
UPGRADING | ||
_config.yml | ||
configure.ac | ||
mkdocs.sh | ||
mkdocs.yml | ||
owntone.8 | ||
owntone.conf.in | ||
owntone.service.in | ||
owntone.spec.in | ||
owntone@.service.in |
README.md
OwnTone
OwnTone is a media server that lets you play audio sources such as local files, Spotify, pipe input or internet radio to AirPlay 1 and 2 receivers, Chromecast receivers, Roku Soundbridge, a browser or the server’s own sound system. Or you can listen to your music via any client that supports mp3 streaming.
You control the server via a web interface, Apple Remote, an Android remote (e.g. Retune), an MPD client, json API or DACP.
OwnTone also serves local files via the Digital Audio Access Protocol (DAAP) to iTunes (Windows), Apple Music (macOS) and Rhythmbox (Linux), and via the Roku Server Protocol (RSP) to Roku devices.
Runs on Linux, BSD and macOS.
OwnTone was previously called forked-daapd, which again was a rewrite of mt-daapd (Firefly Media Server).
Looking for help?
Visit the OwnTone documentation for usage and set up instructions, API documentation, etc.
If you are looking for information on how to get and install OwnTone, then see the Installation instructions.