lib/addr.c, etc.: Return plain addresses from `netaddress_resolve'. Instead of a list of `struct addrinfo' structures, return a vector of `struct resolved', each of which just contains a socket address and length. This is sufficient for all of the existing callers (which have been changed to cope), and means that we don't need any awful hacks because they're easy to free.
server: add a private socket for root root will try and use it if possible; anything connecting on it is allowed through without knowing a password. The jukebox user will be able to use it too although it doesn't actually try. Both these users have RW access to the database so they aren't being given any privilege they don't have already here. The speaker socket moves to the same private directory.
uaudio gains a new 'configure' method, which imposes the audio API's configuration from the global (configuration.h) config. This gets network play working again. There's a new configuration option, rtp_delay_threshold, which allows the courageous to influence the internal timings of the RTP transmitter. The defaults seem to work however. The reason it doesn't go directly to global config is that uaudio needs to be usable from playrtp, which might want to be set to totally different settings to whatever the local DisOrder server instance happens to be.
'api' configuration command now uses uaudio. The list of APIs is only available in server processes (since it currently drags in the API implementations which in turn drags in external audio support libraries, which extends the dependencies of the command-line client unacceptable). disorder-speaker now uses uaudio, abolishing the various speaker-*.c API-specific files. uaudio now handles volume control as well as playback, abolishing mixer.h et al. "rtp" is the preferred name for the RTP API. "network" is retained for backward compatibility. Lightly tested - works for local play on a Mac.
Source code reorganization: - almost all headers now include common.h, which includes a number of universally necessary headers and declarations - the server programs now have a single disorder-server.h header - the cgi is now in its own directory - plugin exports are limited to those programs that actually need them
Add a new 'wait' flag to the rescan command. This allows the caller to request that the rescan command blocks until the rescan is complete. The reason is that if you run the tests on a Linux tmpfs they would with high probability hang, due to the rescan completing before the rescan_monitor had started up. The flags is available in the Python interface but not the C interface or the command-line client. This could easily be fixed if there is demand. There's also a 'fresh' flag, to demand that the rescan start after the receipt of the command (i.e. to guarantee your new tracks make it in) but I disabled that due to the inconvenience of testing it. However the code is still there if anyone feels like writing tests.