Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2018-03-06T12:49:49Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/781Facilitate auditing by explicitly using "unsigned int" instead of just "unsig...2018-03-06T12:49:49ZgtgbrFacilitate auditing by explicitly using "unsigned int" instead of just "unsigned"Improves readability and makes code more consistent.Improves readability and makes code more consistent.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/780[PATCH] Make refbufs use size_t for sizes instead of unsigned long2018-03-06T12:49:49Zgtgbr[PATCH] Make refbufs use size_t for sizes instead of unsigned longThis may or may not solve any real issues on 64bit archs at the moment, but it surely is more correct and makes large parts of Icecast code more consistent, where adding casts would be necessary otherwise.
This is the first of a long se...This may or may not solve any real issues on 64bit archs at the moment, but it surely is more correct and makes large parts of Icecast code more consistent, where adding casts would be necessary otherwise.
This is the first of a long series of patches that are supposed to enhance Icecast's maintainability, portability and correctness. They are the result of an ongoing (and by now week-long) audit that shows that there are subtle issues hidden in Icecast that only work by accident at this point -- fixing those will make it much easier on the long run to maintain Icecast's quality.Karl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/764[Request] Icecast: Source/DJ authentication system2018-03-06T12:49:49ZGitlab Bot[Request] Icecast: Source/DJ authentication systemHave a choice to authenticate the source, a bit like listener auth.
In my scenario it would be very handy to be able to send over the source auth details to a php script like url authentication for listeners and then only let the DJ con...Have a choice to authenticate the source, a bit like listener auth.
In my scenario it would be very handy to be able to send over the source auth details to a php script like url authentication for listeners and then only let the DJ connecting to stream if its their turn and if for some reason we need to we can tell the script to return that the source isnt allowed to stream as we have disabled them (maybe due to abusive DJ/inactive DJ that wont leave), this will also make it easier to make sure we know which DJ is currently streaming.
Im not sure if this would be suitable solution for everyone, but the choice would be handy and im sure theres more than just me that would like to see this feature.
Thanks for listening,
Daniel @ Y3K-Radio
^^^ above is a copy of my post at the Icecast Forums (as karlH requested I post it here)Karl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/741IceCast 2.3.0 Dies2018-03-06T12:49:49ZbdupreeIceCast 2.3.0 DiesI have ezstream streaming 64 Kb ogg 24x7 to IceCast 2.3.0. ezstream, libvorbis and libogg are at the latest releases. Every so often IceCast dies. No rhyme or reason to it. Sometimes it dies in a matter of hours. Sometimes it runs for we...I have ezstream streaming 64 Kb ogg 24x7 to IceCast 2.3.0. ezstream, libvorbis and libogg are at the latest releases. Every so often IceCast dies. No rhyme or reason to it. Sometimes it dies in a matter of hours. Sometimes it runs for weeks. When it failes there are no errors in the logs to indicate why. After a failure ezstream logs show connection failures (via loopback) over and over and over.
One mode of failure has IceCast consuming 100% CPU, the other has all IceCast processes terminated. The server, itself, for all intents and purposes appears to be running normally with its usual load (< 1.0) and memory consumption. (The server: SlackWare 10.0 Linux colo running 2.4.31, apache 1.3.34, mysql, postgresql, openssl, postfix, etc. on 1.3 GHz Duron, 512MB RAM, 40GB PATA disk, 10/100 NIC) All other aspects of the server are extremely stable, the box only goes down when I take it down.
I'm planning on rebuilding IceCast with debugging symbols and upping the ulimit to see if it'll drop a core for me, but I was wondering if anybody has additional insights?
--Bill DuPree
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/738Errorcode when client wants to connect to "full" mountpoint should be changed2020-10-15T13:51:17ZrobeErrorcode when client wants to connect to "full" mountpoint should be changedHi,
the errorcode that clients receive when they want to connect to a mountpoint which has reached its maxlisteners limit should be changed from the current "404 File Not Found" to something more meaningful, since this is the same error...Hi,
the errorcode that clients receive when they want to connect to a mountpoint which has reached its maxlisteners limit should be changed from the current "404 File Not Found" to something more meaningful, since this is the same errorcode that gets returned when the requested mountpoint doesn't exist.
A possible solution to this would be returning 403 with a customized reason phrase like "Mountpoint full" (or similar) in the header (since this is the only thing (if any) that gets forwarded to the user with most clients). The HTTP 1.1 RFC (#2616) allows this:
6.1.1:
[..]
The individual values of the numeric status codes defined for
HTTP/1.1, and an example set of corresponding Reason-Phrase's, are
presented below. The reason phrases listed here are only
recommendations -- they MAY be replaced by local equivalents without
affecting the protocol.
[..]Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/734stats by mountpoint2018-03-06T12:49:49ZGitlab Botstats by mountpointHi, I guess this has been talked before.. but many of my customers wants to check their stats.. as they have no admin privileges they can not check how many listeners are connected to their mountpoint.
Of course, creating a separate scr...Hi, I guess this has been talked before.. but many of my customers wants to check their stats.. as they have no admin privileges they can not check how many listeners are connected to their mountpoint.
Of course, creating a separate script to capture the output for /admin/ will work... but it would be nice if icecast can doit by itself.
regards and thanks!
epeMichael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/733change the intro file without loosing the connected users2018-03-06T12:49:49ZGitlab Botchange the intro file without loosing the connected userscopy from the forum:
hi all
i think i find a bug
i would like to use two intro file 'randomly' (for example, change it in every 3 minutes)
i started my server, i modified my config, reload the server, in the log i see that the config...copy from the forum:
hi all
i think i find a bug
i would like to use two intro file 'randomly' (for example, change it in every 3 minutes)
i started my server, i modified my config, reload the server, in the log i see that the config is loaded with the new intro file, but i still get the old one if i connect to the server.
if i restart the server i will get the new intro file, but in this case i loose my listeners.
is there any way to do what i want? maybe i try it in a wrong way? i also tried to give more than one intro file in the config but it does not worked.
thx for your help.
my system:
linux 2.4.27
debian 3.1
i made backport from debian unstable:
ii icecast2 2.3.0-2 Ogg Vorbis and MP3 streaming media server
so it's 2.3.0.
init script from debian (in fact it sends a HUP to the server)
...
reload|force-reload)
echo "Reloading $DESC configuration files."
start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
;;
...
my configs:
...
<relay>
<server>127.0.0.1</server>
<port>18000</port>
<mount>/</mount>
<local-mount>/</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<mount>
<mount-name>/</mount-name>
<intro>2.mp3</intro>
</mount>
...Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/709icecast with +- 1100 users eats 1 gig memory and crashes ...2018-03-06T12:49:49ZGitlab Boticecast with +- 1100 users eats 1 gig memory and crashes ...Icecast 2.2.0 on Linux Fedora Core 1 (running on a dell 2650) uses about 1 giga of memory when 1100 users are connected and eventually crashes (icecast process stops) without meaningfull info in log or coredump files ...
The icecast fro...Icecast 2.2.0 on Linux Fedora Core 1 (running on a dell 2650) uses about 1 giga of memory when 1100 users are connected and eventually crashes (icecast process stops) without meaningfull info in log or coredump files ...
The icecast front-end servers (to which users can connect) get their 44 mp3 sources from an icecast relay server (to which encoders or other servers can connect) using the master relay function. Additionally the front-ends use also the icecast fileserving. I will paste both the front-end and relay configuration files :
*Front-end configuration file :*
```
<icecast>
<limits>
<clients>5000</clients>
<sources>75</sources>
<threadpool>5</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<source-password>foo</source-password>
<relay-password>foo</relay-password>
<admin-user>joe</admin-user>
<admin-password>foo</admin-password>
</authentication>
<hostname>fe1.foo.bar</hostname>
<listen-socket>
<port>8000</port>
<bind-address>A.B.29.12</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>C.D.1.12</bind-address>
</listen-socket>
<master-server>A.B.29.51</master-server>
<master-server-port>8000</master-server-port>
<master-update-interval>120</master-update-interval>
<master-password>foo</master-password>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/streampower/customers</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
<alias source="/radio1-mid" dest="/radio1-mid.mp3"/>
<alias source="/radio1-low" dest="/radio1-low.mp3"/>
<alias source="/radio1-high" dest="/radio1-high.mp3"/>
<alias source="/ra2vlb-mid" dest="/ra2vlb-mid.mp3"/>
<alias source="/ra2vlb-low" dest="/ra2vlb-low.mp3"/>
<alias source="/ra2vlb-high" dest="/ra2vlb-high.mp3"/>
<alias source="/ra2ant-mid" dest="/ra2ant-mid.mp3"/>
<alias source="/ra2ant-low" dest="/ra2ant-low.mp3"/>
<alias source="/ra2ant-high" dest="/ra2ant-high.mp3"/>
<alias source="/ra2lim-mid" dest="/ra2lim-mid.mp3"/>
<alias source="/ra2lim-low" dest="/ra2lim-low.mp3"/>
<alias source="/ra2lim-high" dest="/ra2lim-high.mp3"/>
<alias source="/ra2ovl-mid" dest="/ra2ovl-mid.mp3"/>
<alias source="/ra2ovl-low" dest="/ra2ovl-low.mp3"/>
<alias source="/ra2ovl-high" dest="/ra2ovl-high.mp3"/>
<alias source="/ra2wvl-mid" dest="/ra2wvl-mid.mp3"/>
<alias source="/ra2wvl-low" dest="/ra2wvl-low.mp3"/>
<alias source="/ra2wvl-high" dest="/ra2wvl-high.mp3"/>
<alias source="/klara-mid" dest="/klara-mid.mp3"/>
<alias source="/klara-low" dest="/klara-low.mp3"/>
<alias source="/klara-high" dest="/klara-high.mp3"/>
<alias source="/klaracontinuo-mid" dest="/klaracontinuo-mid.mp3"/>
<alias source="/klaracontinuo-low" dest="/klaracontinuo-low.mp3"/>
<alias source="/klaracontinuo-high" dest="/klaracontinuo-high.mp3"/>
<alias source="/stubru-mid" dest="/stubru-mid.mp3"/>
<alias source="/stubru-low" dest="/stubru-low.mp3"/>
<alias source="/stubru-high" dest="/stubru-high.mp3"/>
<alias source="/donna-mid" dest="/donna-mid.mp3"/>
<alias source="/donna-low" dest="/donna-low.mp3"/>
<alias source="/donna-high" dest="/donna-high.mp3"/>
<alias source="/donnahitbits-mid" dest="/donnahitbits-mid.mp3"/>
<alias source="/donnahitbits-low" dest="/donnahitbits-low.mp3"/>
<alias source="/donnahitbits-high" dest="/donnahitbits-high.mp3"/>
<alias source="/sporza-mid" dest="/sporza-mid.mp3"/>
<alias source="/sporza-low" dest="/sporza-low.mp3"/>
<alias source="/sporza-high" dest="/sporza-high.mp3"/>
<alias source="/rvi-mid" dest="/rvi-mid.mp3"/>
<alias source="/rvi-low" dest="/rvi-low.mp3"/>
<alias source="/rvi-high" dest="/rvi-high.mp3"/>
<alias source="/reserve-mid" dest="/reserve-mid.mp3"/>
<alias source="/reserve-low" dest="/reserve-low.mp3"/>
<alias source="/reserve-high" dest="/reserve-high.mp3"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>1</loglevel>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>
```
*Relay configuration file :*
```
<icecast>
<limits>
<clients>1000</clients>
<sources>100</sources>
<threadpool>5</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<source-password>foo</source-password>
<relay-password>foo</relay-password>
<admin-user>joe</admin-user>
<admin-password>foo</admin-password>
</authentication>
<hostname>relay.foo.bar</hostname>
<listen-socket>
<port>8000</port>
<bind-address>A.B.29.51</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>W.X.14.223</bind-address>
</listen-socket>
<listen-socket>
<port>8000</port>
<bind-address>Y.Z.112.16</bind-address>
</listen-socket>
<!-- Radio 1 -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-mid.mp3</mount>
<local-mount>/radio1-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-low.mp3</mount>
<local-mount>/radio1-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/radio1-high.mp3</mount>
<local-mount>/radio1-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Vlaams Brabant -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-mid.mp3</mount>
<local-mount>/ra2vlb-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-low.mp3</mount>
<local-mount>/ra2vlb-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2vlb-high.mp3</mount>
<local-mount>/ra2vlb-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Antwerpen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-mid.mp3</mount>
<local-mount>/ra2ant-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-low.mp3</mount>
<local-mount>/ra2ant-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ant-high.mp3</mount>
<local-mount>/ra2ant-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Limburg -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-mid.mp3</mount>
<local-mount>/ra2lim-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-low.mp3</mount>
<local-mount>/ra2lim-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2lim-high.mp3</mount>
<local-mount>/ra2lim-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 Oost Vlaanderen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-mid.mp3</mount>
<local-mount>/ra2ovl-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-low.mp3</mount>
<local-mount>/ra2ovl-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2ovl-high.mp3</mount>
<local-mount>/ra2ovl-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio 2 West Vlaanderen -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-mid.mp3</mount>
<local-mount>/ra2wvl-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-low.mp3</mount>
<local-mount>/ra2wvl-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/ra2wvl-high.mp3</mount>
<local-mount>/ra2wvl-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Klara -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-mid.mp3</mount>
<local-mount>/klara-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-low.mp3</mount>
<local-mount>/klara-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klara-high.mp3</mount>
<local-mount>/klara-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Klara Continuo -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-mid.mp3</mount>
<local-mount>/klaracontinuo-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-low.mp3</mount>
<local-mount>/klaracontinuo-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/klaracontinuo-high.mp3</mount>
<local-mount>/klaracontinuo-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Studio Brussel -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-mid.mp3</mount>
<local-mount>/stubru-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-low.mp3</mount>
<local-mount>/stubru-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/stubru-high.mp3</mount>
<local-mount>/stubru-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Donna -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-mid.mp3</mount>
<local-mount>/donna-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-low.mp3</mount>
<local-mount>/donna-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donna-high.mp3</mount>
<local-mount>/donna-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Donna Hit Bits -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-mid.mp3</mount>
<local-mount>/donnahitbits-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-low.mp3</mount>
<local-mount>/donnahitbits-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/donnahitbits-high.mp3</mount>
<local-mount>/donnahitbits-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Sporza -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-mid.mp3</mount>
<local-mount>/sporza-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-low.mp3</mount>
<local-mount>/sporza-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/sporza-high.mp3</mount>
<local-mount>/sporza-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Radio Vlaanderen Internationaal -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-mid.mp3</mount>
<local-mount>/rvi-mid.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-low.mp3</mount>
<local-mount>/rvi-low.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/rvi-high.mp3</mount>
<local-mount>/rvi-high.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
<!-- Reserve -->
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-mid.mp3</mount>
<local-mount>/reserve-mid.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-low.mp3</mount>
<local-mount>/reserve-low.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>E.F.10.110</server>
<port>8000</port>
<mount>/reserve-high.mp3</mount>
<local-mount>/reserve-high.mp3</local-mount>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Extra -->
<relay>
<server>G.H.88.79</server>
<port>80</port>
<mount>/high.ogg</mount>
<local-mount>/urgent-high.ogg</local-mount>
<hidden>1</hidden>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
<server>G.H.88.79</server>
<port>80</port>
<mount>/low.ogg</mount>
<local-mount>/urgent-low.ogg</local-mount>
<hidden>1</hidden>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<fileserve>0</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/var/log/icecast</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>1</loglevel>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>
```
Could the crash be caused by a memory leak ?Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/704Request: Add server name to config file2018-03-06T12:50:21ZGitlab BotRequest: Add server name to config fileCurrently Icecast reports to clients that it is "Icecast 2.2.0" or whichever version. It would be nice to override this in the config file for security reasons.Currently Icecast reports to clients that it is "Icecast 2.2.0" or whichever version. It would be nice to override this in the config file for security reasons.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/702feature request for icecast on demand encoding2018-03-06T12:50:21Zskinkiefeature request for icecast on demand encodingWhen a stream is requested, icecast should start ices to start encoding, and stopping it when noone listens. That could be extented to requesting a stream with specific properties, such as channels and bitrate.When a stream is requested, icecast should start ices to start encoding, and stopping it when noone listens. That could be extented to requesting a stream with specific properties, such as channels and bitrate.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/697Icecast down when connection limit is reached2018-03-06T12:50:21ZyashengIcecast down when connection limit is reachedThis bug was induce by changeset [9733] and [9740]. In connection.c,
```
if (client_create (&client, con, NULL) < 0)
{
global_unlock();
client_send_404 (client, "Icecast connection ...This bug was induce by changeset [9733] and [9740]. In connection.c,
```
if (client_create (&client, con, NULL) < 0)
{
global_unlock();
client_send_404 (client, "Icecast connection limit reached");
continue;
}
```
But,
1. client can be NULL if the calloc in client_create() fails
1. even if client is not NULL, client->refbuf is still NULL
And the server will go down in client_send_404()
Karl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/688Compiling icecast on Solaris 10 AMD64 using SUN Studio10 cc2018-03-06T12:50:21Zmoinakg2002Compiling icecast on Solaris 10 AMD64 using SUN Studio10 ccI have built icecast on an AMD64 Laptop running Solaris 10,
using the SUN Studio10 compiler. Studio10 cc does not have
the predefined "__FUNCTION__" identifier. Instead it provides
"__func__". So src/logging.h needs a fix as given below:...I have built icecast on an AMD64 Laptop running Solaris 10,
using the SUN Studio10 compiler. Studio10 cc does not have
the predefined "__FUNCTION__" identifier. Instead it provides
"__func__". So src/logging.h needs a fix as given below:
*** logging.h.orig Tue May 31 19:10:15 2005
--- logging.h Tue May 31 19:14:24 2005
***************
*** 33,38 ****
--- 33,42 ----
#define __FUNCTION__ strrchr (__FILE__, '\\') ? strrchr (__FILE__, '\\') + 1 : __FILE__
#endif
+ #ifdef __SUNPRO_C
+ #define __FUNCTION__ __func__
+ #endif
+
#define ERROR0(y) log_write(errorlog, 1, CATMODULE "/", __FUNCTION__, y)
#define ERROR1(y, a) log_write(errorlog, 1, CATMODULE "/", __FUNCTION__, y, a)
#define ERROR2(y, a, b) log_write(errorlog, 1, CATMODULE "/", __FUNCTION__, y, a, b)
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/684IceCast crashes with more than 10 listen-socket port definitions2018-03-06T12:50:21ZGitlab BotIceCast crashes with more than 10 listen-socket port definitionsIcecast crashes if I define more than 10 listen-socket ports. Is there a limit that's not documented or is this a bug? I'm using the Windows build that OddSock compiled on 7/13/05.
Icecast crashes if I define more than 10 listen-socket ports. Is there a limit that's not documented or is this a bug? I'm using the Windows build that OddSock compiled on 7/13/05.
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/676icecast sends bad Content-Type2018-03-06T12:50:21ZGitlab Boticecast sends bad Content-TypeI started icecast server by icecast -c /etc/icecast2/icecast.xml and then
went to URL http://localhost:8000 where Icecast was running. The image
localhost:8000/corner_topleft.jpg is sent with Content-Type:
application/octet-stream but th...I started icecast server by icecast -c /etc/icecast2/icecast.xml and then
went to URL http://localhost:8000 where Icecast was running. The image
localhost:8000/corner_topleft.jpg is sent with Content-Type:
application/octet-stream but the content type is actually image/jpeg.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/675Starting icecast 2.1.0 server according to official Icecast 2.1.0 documentati...2018-03-06T12:50:21ZclockStarting icecast 2.1.0 server according to official Icecast 2.1.0 documentation doesn't workhttp://icecast.org/docs/icecast-2.1.0/icecast2_basicsetup.html says:
"Once the configuration file is modified, you should be able to start the server with the following command
icecast -c /path/to/icecast.xml"
kestrel root # icecast -c ...http://icecast.org/docs/icecast-2.1.0/icecast2_basicsetup.html says:
"Once the configuration file is modified, you should be able to start the server with the following command
icecast -c /path/to/icecast.xml"
kestrel root # icecast -c /etc/icecast2/icecast.xml
ERROR: You should not run icecast2 as root
Use the changeowner directive in the config file
Though I have configured Icecast according to this guide. Excerpt from my
config file /etc/icecast2/icecast.xml showing the discussed variables (I left
the remainder to default):
<source-password>censored</source-password>
<admin-password>spearburn</admin-password>
<listen-socket>
<port>8000</port>
<bind-address>127.0.0.1</bind-address>
</listen-socket>
<logdir>/var/log</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/670Extend slave mechanism to allow for multiple master servers.2018-03-06T12:50:21ZGitlab BotExtend slave mechanism to allow for multiple master servers.Extend slave mechanism to allow for multiple master servers so that the slave can relay from several master icecast servers.Extend slave mechanism to allow for multiple master servers so that the slave can relay from several master icecast servers.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/668A few queries about Icecast2018-03-06T12:50:21Zstudent4lifeA few queries about IcecastFour questions really, is it possible to customise the status.xsl, so it has static html code (or something like) on it, I ask because I would rather like to add DJ times and profiles on the that particular page, and accept for minimal s...Four questions really, is it possible to customise the status.xsl, so it has static html code (or something like) on it, I ask because I would rather like to add DJ times and profiles on the that particular page, and accept for minimal stuff like titles and text that's already there I've been able to do very little with the xsl sheet without it being rejected by the server.
Secondly is it possible to have text appear when no streaming is taking place on the server, so that it displays a message like "sorry no one is broadcasting at this time."
Thirdly how the hell do I get the fallback-mount and override to work, I've followed the examples shown on a number of sites including the official docs for Icecast 2.20, nothing seems to work, (actually I tell a lie it may have worked once!) is there a problem with the fact I'm using SAM 3.18 or that I have the authentication turned on in the primary stream. Also can you fallback to stream static mp3s or m3u playlists, opinion seems to be rather divided on this.
Finally assuming I can get the fallback working, how do i hide it on the status page, as I just want to use it as a short term fallback to fill between DJs rather than have users connect to it in its own right. Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/659Icecast 2.2.0 win32 doesn't display Korean metadata properly2018-03-06T12:50:21ZKyungjoon LeeIcecast 2.2.0 win32 doesn't display Korean metadata properlyIcecast 2.2.0 for Windows doesn't display Korean metadata properly.
Source level stats -> click on source -> look at artist on right.
Here's some sample Korean text: 가나다 &#44032;&#45208;&#45796;Icecast 2.2.0 for Windows doesn't display Korean metadata properly.
Source level stats -> click on source -> look at artist on right.
Here's some sample Korean text: 가나다 가나다Karl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/656iceast-kh rev 9168 fails to compile in connection.c2018-03-06T12:50:21Zpadaniusiceast-kh rev 9168 fails to compile in connection.clatest revision of iceast-kh failes to compile (previous was OK) :
gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -ffast-math -fsigned-char -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/include -pthread -g -O2 -c `test -f 'sighandle...latest revision of iceast-kh failes to compile (previous was OK) :
gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -ffast-math -fsigned-char -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/include -pthread -g -O2 -c `test -f 'sighandler.c' || echo './'`sighandler.c
source='connection.c' object='connection.o' libtool=no \
depfile='.deps/connection.Po' tmpdepfile='.deps/connection.TPo' \
depmode=gcc3 /bin/sh ../depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I.. -Wall -ffast-math -fsigned-char -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/include -pthread -g -O2 -c `test -f 'connection.c' || echo './'`connection.c
connection.c: In function `connection_complete_source':
connection.c:501: error: structure has no member named `con'
connection.c:502: error: structure has no member named `con'
connection.c:503: error: structure has no member named `parser'
connection.c:504: error: structure has no member named `parser'
make[3]: *** [connection.o] Error 1
make[3]: Leaving directory `/usr/src/icecast-kh/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/src/icecast-kh/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/icecast-kh'
make: *** [all] Error 2
Gitlab BotGitlab Bothttps://gitlab.xiph.org/xiph/icecast-server/-/issues/652Move clients to fallback when source disconnects2018-03-06T12:50:21ZTristanMove clients to fallback when source disconnectsCurrently, when a source disconnects, icecast2 appears to drop that mount's listening clients -- even if it has a fallback-mount defined. It would be nice if the existing clients were gracefully moved to the fallback instead of being di...Currently, when a source disconnects, icecast2 appears to drop that mount's listening clients -- even if it has a fallback-mount defined. It would be nice if the existing clients were gracefully moved to the fallback instead of being disconnected.
I know there's a mechanism to move clients, but I don't have prior knowledge of when the source will disconnect (ezstream is prone to SIGSEGV).Michael SmithMichael Smith