[icecast-dev] Patches - Was: Stream metadata settings

Melanie melanie at t-data.com
Mon Dec 1 06:23:17 PST 2003


Hello,

this is the first patch, it implements some basic multilevel fallback 
handling logic, the time window and the no mount option.

New options are possible within an <mount> section:

<fallback-override>1</fallback-override>

This will allow a source connecting to a mount point to steal the clients 
from it's fallback mount. All clients of the fallback are transferred to 
the pending queue of the newly connected source.
If the main source drops out, it's clients will, by means of 
<fallback-mount>, be connected to the fallback source. With this turned on, 
when the main source comes back online, the clients will be shifted back on 
reconnect. Without it, the clients will keep listening to the fallback.

<no-mount>1</no-mount>

This will refuse listener connection to the mount point in which it 
appears. Sources may still connect. The mount can be used as a fallback, 
this is the only way listeners can be connected to it when this option is 
set. Even if the mount name is known, direct connections are not possible.
The reason for this is something that happened to us: our stream was 
hijacked and the mount point name was spread by IRC so people connected to 
it to listen to the pirate broadcast. Fortunately, no racist content was 
broadcast this time, but I made the addition to prevent that from 
happening. As a licensed station, we are responsible for our content and 
_must_ prevent racist content from airing. If we cannot do this, we will be 
shut down.

<time-window>17:00-05:00</time-window>

This option will restrict _sources_ from connecting to this stream outside 
the time window. We are required by law and contract to broadcast no more 
than 12 hours per day. Actually, we may broadcast all day, but only 12 
hours worth of RIAA/GEMA/GVL music.
I chose to limit source connection rather than listener connections because 
there may be a fallback carrying announcements or royalty-free music or 
such. This way, clients trying to connect to this mountpoint outside of the 
time window may still listen to this other source.

Fallback and reconnect are handled in a multi-level fashion, where each 
fallback may in turn have a fallback. Specifying a circle of fallbacks is 
also possible, however, recovery will not go around the circle more than 
once. There is really no point in doing that, but XML permits it and the 
alternative to making it acceptable would have been to generate a config 
parse error. I didn't really want to add such a showstopper.

Recovery only scans downward to the first connected source, that is all 
that's needed. By definition, no clients can be connected to lower level 
sources, unless they connected directly, in which case it's ok not to pick 
them up.

The patch depends on the bugfix I sent earlier, the second version with 
strdup().

Melanie

-------------- next part --------------
A non-text attachment was scrubbed...
Name: icecast-combined.patch
Type: text/x-patch
Size: 13252 bytes
Desc: icecast-combined.patch
Url : http://lists.xiph.org/pipermail/icecast-dev/attachments/20031201/bc48664b/icecast-combined.bin


More information about the Icecast-dev mailing list