Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2018-03-06T12:50:21Zhttps://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/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/787[PATCH] Clean up remaining signedness issues2018-03-06T12:49:49Zgtgbr[PATCH] Clean up remaining signedness issuesRecent versions of gcc on Linux, e.g. gcc on Debian/sarge (or rather, Debian/testing) complains a lot, making warnings less useful for easily spotting problems. The bulk of the warnings is taken care of in the incompatible_pointer patche...Recent versions of gcc on Linux, e.g. gcc on Debian/sarge (or rather, Debian/testing) complains a lot, making warnings less useful for easily spotting problems. The bulk of the warnings is taken care of in the incompatible_pointer patches, this cleans up the rest. After this, Icecast is -Wall clean on Linux again.
While around in src/util.c, fix up some int->size_t's.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/788Use proper function prototypes and declarations (1/2)2018-03-06T12:49:49ZgtgbrUse proper function prototypes and declarations (1/2)void foobar();
is not the same as
void foobar(void);
Fix those, and while around in auth.h, de-lint the enum.void foobar();
is not the same as
void foobar(void);
Fix those, and while around in auth.h, de-lint the enum.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/705Bug in auth.c (version 2.3.0.rc2)2018-03-06T12:49:49ZmartinBug in auth.c (version 2.3.0.rc2)The function check_duplicate_logins in auth.c (2.3.0.rc2, lines 225-266 ) contains a
bug. The "client" object passed to the function gets overwritten inside
it, and a the comparsion "strcmp (client->username, client->username) ==
0" alwa...The function check_duplicate_logins in auth.c (2.3.0.rc2, lines 225-266 ) contains a
bug. The "client" object passed to the function gets overwritten inside
it, and a the comparsion "strcmp (client->username, client->username) ==
0" always returns zero, so any username is always considered duplicate.
Patch suggestion:
```
--- src/auth.c.orig Sat Sep 10 16:44:43 2005
+++ src/auth.c Sat Sep 10 17:19:28 2005
@@ -238,8 +238,8 @@
node = avl_get_first (source->client_tree);
while (node)
{
- client_t *client = (client_t *)node->key;
- if (client->username && strcmp (client->username, client->username) == 0)
+ client_t *existing_client = (client_t *)node->key;
+ if (existing_client->username && strcmp (existing_client->username, client->username) == 0)
{
avl_tree_unlock (source->client_tree);
return 0;
@@ -252,8 +252,8 @@
node = avl_get_first (source->pending_tree);
while (node)
{
- client_t *client = (client_t *)node->key;
- if (client->username && strcmp (client->username, client->username) == 0)
+ client_t *existing_client = (client_t *)node->key;
+ if (existing_client->username && strcmp (existing_client->username, client->username) == 0)
{
avl_tree_unlock (source->pending_tree);
return 0;
```Icecast 2.3Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/707[PATCH] Segfault in src/admin.c2018-03-06T12:49:49Zmartin[PATCH] Segfault in src/admin.cMy Icecast 2.3.0.rc2 was segfaulting, when listmounts.xsl was requested, and there were mounts with fallback configured, so I have done little debugging. The "source->client" object must exist before we can check "source->client->con", s...My Icecast 2.3.0.rc2 was segfaulting, when listmounts.xsl was requested, and there were mounts with fallback configured, so I have done little debugging. The "source->client" object must exist before we can check "source->client->con", see patch. Please take a look at my http-auth-logging patch, too (Ticket #706). Thanks.
```
--- admin.c.orig Sun Sep 11 22:57:35 2005
+++ admin.c Sun Sep 11 23:18:09 2005
@@ -252,7 +252,7 @@
if (source->running)
{
- if (source->client->con)
+ if (source->client && source->client->con)
{
snprintf (buf, sizeof(buf), "%lu",
(unsigned long)(now - source->con->con_time));
```
Icecast 2.3Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/789Use proper function prototypes and declarations (2/2)2018-03-06T12:49:49ZgtgbrUse proper function prototypes and declarations (2/2)ANSI C requires function prototype and declaration to be of the same static'ness.ANSI C requires function prototype and declaration to be of the same static'ness.Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/708Source / mountpoint from SQL / LDAP / flat file (?)2018-03-06T12:49:49ZkiwiSource / mountpoint from SQL / LDAP / flat file (?)Hi there,
I'd really like to have source authentication (eg mount point and password) from a DB / LDAP source instead of using static entries in XML files.
Even the simple way to have include files to add multiples mount point password...Hi there,
I'd really like to have source authentication (eg mount point and password) from a DB / LDAP source instead of using static entries in XML files.
Even the simple way to have include files to add multiples mount point password should be very appreciated.
Can it donc in next icecast version ?
Thanks !
/XavierIcecast 2.3Karl HeyesKarl Heyeshttps://gitlab.xiph.org/xiph/icecast-server/-/issues/798Nothing appears on icecast when i'm broadcasting2018-03-06T12:49:49ZdeepbluesensationsNothing appears on icecast when i'm broadcastingHello there,
My server is saying that i'm broadcasting, but i find no traces of my program on icecast at my usual page, then nobody can listen to my program...
grrrr
The SmurfHello there,
My server is saying that i'm broadcasting, but i find no traces of my program on icecast at my usual page, then nobody can listen to my program...
grrrr
The SmurfMichael 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/732hi-world cup2018-03-06T12:49:49Zsci-fihi-world cupHi,
Clients can't connect to our system. I compiled icecast 2.3.0 from svn, tried the official 2.3.0 src dist, went back to 2.3.0rc3, to no avail.
We're still running MacOSX 10.3.9 aka Panther due to issues with 10.4.x aka Tiger. I c...Hi,
Clients can't connect to our system. I compiled icecast 2.3.0 from svn, tried the official 2.3.0 src dist, went back to 2.3.0rc3, to no avail.
We're still running MacOSX 10.3.9 aka Panther due to issues with 10.4.x aka Tiger. I can't prove it but the update from 10.3.8 to 10.3.9+securityfixes might have something to do with it, but we're stuck with 10.3.9 for the time being. I do remember when we had 10.3.8, we were successfully using icecast 2.2.0 and 2.3.0rc1 when it came out (both compiled myself with similar gcc/ld settings).
We're listed on the YPs as SciFi.homeip.net on Friday and Saturday nights U.S. time; maybe we can schedule some test time per feedback from this ticket.
We're running icecast by relaying the stream from localhost:32720 which is shoutcast 1.9.6b (a fix for MacOSX users which is the port number going negative when set above 32767). btw We use high port numbers to skirt around ISP possibly blocking the usual ones, and we have net.sysctl settings to make sure other apps don't use those ranges up there.
Listeners to our shoutcast streams are working, as are p2p-radio and Peercast, which I also compiled myself from cvs/svn as appropriate. Every netcast app works *but* icecast for the time being, and I can't figure out why.
There is _no_ firewall (software, hardware, or otherwise) between the Mac and the cable modem.
Here is a snip from our icecast error.log for tonight's netcast:
```
[...]
[2005-11-05 19:15:20] INFO main/main Icecast 2.3.0 server started
[2005-11-05 19:15:20] INFO yp/yp_recheck_config Adding new YP server "http://dir.xiph.org/cgi-bin/yp-cgi" (timeout 15s, default interval 30s)
[2005-11-05 19:15:20] INFO yp/yp_recheck_config Adding new YP server "http://www.steamcast.com/sbin/yp.php" (timeout 15s, default interval 30s)
[2005-11-05 19:15:20] INFO yp/yp_update_thread YP update thread started
[2005-11-05 19:15:20] INFO auth/auth_run_thread Authentication thread started
[2005-11-05 19:15:21] INFO slave/start_relay_stream Starting relayed source at mountpoint "/"
[2005-11-05 19:22:05] WARN client/client_read_bytes source connection has died
[2005-11-05 22:57:26] WARN client/client_read_bytes source connection has died
[2005-11-05 22:57:30] WARN client/client_read_bytes source connection has died
[2005-11-05 23:37:05] WARN client/client_read_bytes source connection has died
[...]
```
The above is a mix of clients "out there" and myself running iTunes on the localhost. Nothing can get hold of the stream.
There is nothing in the access.log for icecast, so these clients didn't even get the very beginning icy-html stuff.
We have relays-on-demand turned off; I don't think turning it on made any difference.
The shoutcast server did see the initial connection; here is that snip from its log:
```
<11/05/05@19:15:21> [dest: 127.0.0.1] starting stream (UID: 4)[L: 3]{A: Icecast 2.3.0}(P: 1)
```
This initial connection didn't use to work either. I had to patch the icecast230 src in the following manner to get this much working:
```
---cut-here---
--- src/slave.c_orig 2005-09-30 14:39:08 -0500
+++ src/slave.c 2005-09-30 14:39:26 -0500
@@ -174,7 +174,7 @@
{
char *auth_header;
- streamsock = sock_connect_wto (relay->server, relay->port, 30);
+ streamsock = sock_connect_wto (relay->server, relay->port, 0);
if (streamsock == SOCK_ERROR)
{
WARN3("Failed to relay stream from master server, couldn't connect to http://%s:%d%s",
---cut-here---
```
fwiw I tried this patch to get the client streams working but to no avail:
```
---cut-here---
--- src/net/sock.c_orig 2005-09-30 21:36:15 -0500
+++ src/net/sock.c 2005-10-01 15:37:40 -0500
@@ -433,7 +433,7 @@
if (!buff) return 0;
if (len <= 0) return 0;
- return recv(sock, buff, len, 0);
+ return recv(sock, buff, len, MSG_WAITALL);
}
/* sock_read_line
---cut-here---
```
So there's a clue to get the client streams working, but I'm unable to figure it out further. :(
Here is our full icecast.xml (obfuscating the passwords of course ;) ):
```
--- icecast.xml ---
<icecast>
<limits>
<clients>3</clients>
<sources>1</sources>
<threadpool>25</threadpool>
<queue-size>1048576</queue-size>
<client-timeout>65535</client-timeout>
<header-timeout>65535</header-timeout>
<source-timeout>65535</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>131072</burst-size>
</limits>
<authentication>
<!-- Sources log in with username 'source' -->
<source-password>(duh!)</source-password>
<!-- Relays log in username 'relay' -->
<relay-password></relay-password>
<!-- Admin logs in with the username given below -->
<admin-user>admin</admin-user>
<admin-password>(duh!)</admin-password>
</authentication>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://www.steamcast.com/sbin/yp.php</yp-url>
</directory>
<!--
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
</directory>
-->
<!-- This is the manufactured mount name for your shoutcast
compatible stream. Since the shoutcast DSP (and NSV encoder)
cannot specify a mountpoint, you must enter it here -->
<shoutcast-mount>/stream</shoutcast-mount>
<!-- This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. -->
<hostname>SciFi.homeip.net</hostname>
<!-- You MUST define 2 ports, port and port +1,
for Shoutcast-compatibility -->
<listen-socket>
<!-- Configure the shoutcast DSP with *this* port
the shoutcast DSP actually will connect the
encoder to this port + 1 -->
<port>32710</port>
</listen-socket>
<listen-socket>
<!-- This port *must* be one larger than the one defined
above and defined as 'shoutcast-compat' -->
<port>32711</port>
<shoutcast-compat>1</shoutcast-compat>
</listen-socket>
<relays-on-demand>0</relays-on-demand>
<relay>
<server>127.0.0.1</server>
<port>32720</port>
<mount>/</mount>
<local-mount>/</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<!-- Only define a <mount> section if you want to use advanced options,
like alternative usernames or passwords
-->
<mount>
<mount-name>/</mount-name>
<max-listeners>2</max-listeners>
<no-yp>0</no-yp>
<hidden>0</hidden>
</mount>
<fileserve>1</fileserve>
<paths>
<!-- basedir is only used if chroot is enabled -->
<basedir>/usr/local/share/icecast</basedir>
<!-- Note that if <chroot> is turned on below, these paths must both
be relative to the new root, not the original root -->
<logdir>.</logdir>
<webroot>/usr/local/share/icecast/web</webroot>
<adminroot>/usr/local/share/icecast/admin</adminroot>
<pidfile>/var/run/icecast.pid</pidfile>
<!-- Aliases: treat requests for 'source' path as being for 'dest' path
May be made specific to a port or bound address using the "port"
and "bind-address" attributes.
-->
<!--
<alias source="/foo" dest="/bar"/>
-->
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<!--
<security>
<chroot>0</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
-->
</icecast>
--- end icecast.xml ---
```
Yes the icecast admin can sign-on and look at all the current settings etc. But no clients can get the stream.
Any help, ideas, tests, etc. I would be greatful.
Thank you.
Icecast 2.3Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/800URL listener authenticator2018-03-06T12:49:49ZDavidURL listener authenticatorYour URL auth is not working properly I used the examples in the domumentation altering my url and it does not auth. it just connects to the stream...In addtion with the basic orginal file admin control panel does not show the red key...
Your URL auth is not working properly I used the examples in the domumentation altering my url and it does not auth. it just connects to the stream...In addtion with the basic orginal file admin control panel does not show the red key...
Icecast 2.3Michael 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/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/801Icecast server source details max-listeners2018-03-06T12:49:49ZDavidIcecast server source details max-listenersSpecified on the mount the number of max listeners to 1. Tried connecting form 2 different sources and it still allowed the 2nd connection. In addtion the sever details shows max_listeners "unlimited" instead of 1Specified on the mount the number of max listeners to 1. Tried connecting form 2 different sources and it still allowed the 2nd connection. In addtion the sever details shows max_listeners "unlimited" instead of 1Icecast 2.3Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/802Icecast mounts and Sam 32018-03-06T12:49:49ZDavidIcecast mounts and Sam 3using Sam 3 encoder does not recoginze the username and password for authenticating source when mount is specified in Icecast config. So in effect I can use Sam and Icecast. Only if I don't declare a mount in the icecast config file. Ice...using Sam 3 encoder does not recoginze the username and password for authenticating source when mount is specified in Icecast config. So in effect I can use Sam and Icecast. Only if I don't declare a mount in the icecast config file. Icecast will automatically declare whatever Sam shows and broadcast.
This would normally be ok if I was just streaming 1 broadcast, but I'm trying to manage mutiple broadcast and thier max listener capacity and stream quality.
Is there a workaround for this without declaring a mount? Icecast seems to be declaring mounts on the fly from Sam3, but like I said it leaves connections as unlimited....
Can you help fix this?Icecast 2.3Michael SmithMichael Smithhttps://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/803Max listeners causes server crash2018-03-06T12:49:49ZDavidMax listeners causes server crashI have a mount without a username, where username is blank <username></username>.
I set max listeners to 1 and connected to the source as a 2nd listener and it crashed the server.. First connection was from winamp 2nd connection was fro...I have a mount without a username, where username is blank <username></username>.
I set max listeners to 1 and connected to the source as a 2nd listener and it crashed the server.. First connection was from winamp 2nd connection was from WMP.
Will test the 2nd listener from a differnt computer. because most people will not launch 2 seprate connections from the same machine. stay tuned....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/810[PATCH] Announce ability for range requests2018-03-06T12:49:49Zmcbicecast[PATCH] Announce ability for range requestsThe file server now accepts a Range: header, so it would be best to announce this in the response headers. Two lines of code added to fserve.c, patch follows.
--- fserve.c.orig Thu Sep 8 16:03:51 2005
+++ fserve.c Wed Jan 4 ...The file server now accepts a Range: header, so it would be best to announce this in the response headers. Two lines of code added to fserve.c, patch follows.
--- fserve.c.orig Thu Sep 8 16:03:51 2005
+++ fserve.c Wed Jan 4 15:12:39 2006
@@ -514,6 +514,7 @@
bytes = snprintf (httpclient->refbuf->data, BUFSIZE,
"HTTP/1.1 206 Partial Content\r\n"
"Date: %s\r\n"
+ "Accept-Ranges: bytes\r\n"
"Content-Length: " FORMAT_INT64 "\r\n"
"Content-Range: bytes " FORMAT_INT64 \
"-" FORMAT_INT64 "/" FORMAT_INT64 "\r\n"
@@ -548,6 +549,7 @@
httpclient->respcode = 200;
bytes = snprintf (httpclient->refbuf->data, BUFSIZE,
"HTTP/1.0 200 OK\r\n"
+ "Accept-Ranges: bytes\r\n"
"Content-Length: " FORMAT_INT64 "\r\n"
"Content-Type: %s\r\n\r\n",
content_length,
Michael SmithMichael Smith