Icecast 2.3.1 reports "too many sources connected" when it probably shouldn't.
I have configured Icecast with 8 and six "special" streams, to set up a local fallback file to play for each, in case a source isn't currently connected.
The sources are connected in sets of three. When the first set connects, all works fine. When the second set connects, (at least) the last client gets refused with "too many sources connected". The sources all get connected before any of them start sending data. I'm thinking Icecast might calculate that it already has six sources (three connected, three fallbacks) and adding three more adds up to nine, which is one more than allowed.
Raising to 16 fixed the problem, so there is an easy workaround, but to me it's counterintuitive that it should work that way.
This bug, in turn, sparks a bug in libshout, which killed the program providing the last tree streams (double free or corruption), but that's a whole other bug report.
Snippets from icecast.xml:
<limits>
<clients>200</clients>
<sources>8</sources>
<threadpool>6</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<mount>
<mount-name>/rocket_hi.ogg</mount-name>
<fallback-mount>/silence.ogg</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/rocket_hi.mp3</mount-name>
<fallback-mount>/silence_hi.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/rocket_lo.mp3</mount-name>
<fallback-mount>/silence_lo.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/thsradio_hi.ogg</mount-name>
<fallback-mount>/silence.ogg</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/thsradio_hi.mp3</mount-name>
<fallback-mount>/silence_hi.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/thsradio_lo.mp3</mount-name>
<fallback-mount>/silence_lo.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>