1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00
icecast-server/TODO

92 lines
3.2 KiB
Plaintext
Raw Normal View History

2.0 CRITICAL - These are the things without which 2.0 cannot be released
____________
- make install doesn't install everything. Needs to set up config file to point
at appropriate places, install web directory somewhere, put config file
somewhere. Should icecast automatically (i.e. without needing -c) look for
the config file in /etc/icecast.xml or something?
- libshout 2.0 and ices 2.0 releases, also an ices 0.x release that works with
this. Without source clients, icecast isn't much use...
- integrate/include all the documentation done by external groups.
- generally we don't do proper checking for the correct versions of various
libraries (this is probably more of an issue with ices2, but it also affects
icecast)
BUGS
----
- stats get off? this needs testing more testing.
- some stuff (like 'genre') isn't making it into the stats dump
- make install - doesn't install configs?
- logging - bytes send and time listening may both be broken?
FEATURES
--------
- pull out vorbis comments. and send to stats. This seems to be being
done, but it isn't working right.
- directory server GUID checks
directory server does GET /GUID-asldjfasldfjalsdkfjasldkfj HTTP/1.0
and either gets a 404 if it's wrong, or a 200 if it's correct.
- adding new stats type, event. events don't modify the global stats tree,
ie, source /1234.ogg disconnected
- support W3C Extended Logging (http://www.w3.org/TR/WD-logfile.html)
toggle between this and Apache Combined Log Format in the config file.
default to apache style.
- allow using get_predata() stuff to send an "intro" to any newly-connected
user?
- stats to list currently connected clients: ip and hostname
- stream switching (drop clients to another stream on disconnect of source)
- a) fallbacks from named location to new mountpoint
- OR b) fallbacks for connected clients to new mountpoint (so newly-connecting
clients just get a 404 on the old path)
- OR c) combination - first one, plus generic alias ability?
- /admin/* for all admin functionality
- configuring fallbacks
- mp3 metadata injection
- remote shutdown?
- general registerable url-handlers in connection.c rather than hard-coded list
(already getting unmaintainable)
- httpp - split out query string for further processing
- option to use ipv6 (equiv to using <bind-address>::</bindaddress>, I think.
- abstract all admin functionality to a set of commands, and command handlers.
Make /admin/* just parse according to a set of rules, and dispatch generic
commands through that.
Use this for alternative admin interfaces (GUI? telnet interface?)
- listener authentication (per mountpoint?)
- all timer-based functionality (yp updates, slave/relay checks) should have a
single timer thread which dispatches events through the normal event
mechanism (to worker threads from the main pool). This will reduce the
extraneous thread count.
- atomic admin function to: set fallback from A->B, remove A, move mountpoint
B to A. Needs forced-source removal first.
- race condition between avl_tree_unlock(pending_tree) and
thread_cond_wait(&fserv_cond) in fserv.c, it's a pain to fix but should be.
- do we need to use locks on the avl client_trees in source.c and fserv.c?