Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2021-10-26T10:06:39Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2421admin/includes/confirm.xsl missing -> Confirmation in admin webGUI cannot be ...2021-10-26T10:06:39ZThomas Schlienadmin/includes/confirm.xsl missing -> Confirmation in admin webGUI cannot be doneHi.
When installing with `./autogen.sh && ./configure && make -j5 install` the file admin/includes/confirm.xsl is missing and therefore, if a confirmation is needed in the admin webGUI, it cannot be done.
I fixed this by adding `includ...Hi.
When installing with `./autogen.sh && ./configure && make -j5 install` the file admin/includes/confirm.xsl is missing and therefore, if a confirmation is needed in the admin webGUI, it cannot be done.
I fixed this by adding `includes/confirm.xsl` in the `nobase_dist_admin_DATA` part of https://gitlab.xiph.org/xiph/icecast-server/-/blob/master/admin/Makefile.am.
Is there a proper way to do merge requests for this project? If I try to clone the repo in this Gitlab I only get the error that I do not have the rights to do that.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2084Add support for ANSI streaming2021-10-26T09:40:29ZPhilipp SchafftAdd support for ANSI streamingStreaming in Text+ANSI Codes should be added to icecast. This would allow to to send shows of e.g. text adventures or other text games and applications.Streaming in Text+ANSI Codes should be added to icecast. This would allow to to send shows of e.g. text adventures or other text games and applications.Icecast 2.6https://gitlab.xiph.org/xiph/icecast-server/-/issues/2414issue in status-json2021-10-26T00:50:03ZAngelo Hongensissue in status-jsonHey guys and girls, I have an issue with the json status output. We rely heavily on it for getting the stats.
When we have a service with multiple sources, the json script isn't outputting correct json. Look at the following example. Th...Hey guys and girls, I have an issue with the json status output. We rely heavily on it for getting the stats.
When we have a service with multiple sources, the json script isn't outputting correct json. Look at the following example. The json['icestats']['source'] key contains an array of 3 sources. The first one is correctly formatted, but the next to have a surplus comma at the end, and are missing the closing curly brace.
I've looked at the status-json.xsl and xml2json.xslt files, but I have no idea where this behaviour is coming from.
Any ideas? Fixes?
```
{
"icestats": {
"admin": "icemaster@localhost",
"host": "server.domain.nl",
"location": "Earth",
"server_id": "Icecast 2.4.4",
"server_start": "Wed, 19 May 2021 23:03:50 +0200",
"server_start_iso8601": "2021-05-19T23:03:50+0200",
"source": [{
"audio_info": "bitrate=192",
"bitrate": 192,
"genre": "Folk, Piraten",
"listener_peak": 124,
"listeners": 0,
"listenurl": "http://server.domain.nl:8123/autodj",
"server_description": "ZenderXXX Radio NL ",
"server_name": "ZenderXXX Radio NL ",
"server_type": "audio/mpeg",
"server_url": "https://www.ZenderXXX.nl",
"stream_start": "Wed, 19 May 2021 23:03:52 +0200",
"stream_start_iso8601": "2021-05-19T23:03:52+0200",
"title": "Walter Ostanek - Baby Doll Polka",
"dummy": null
}, {
"bitrate": 192,
"genre": "Folk, Piraten",
"listener_peak": 190,
"listeners": 0,
"listenurl": "http://server.domain.nl:8123/backup",
"server_description": "Internet Radiostation",
"server_name": "ZenderXXX Radio NL",
"server_type": "audio/mpeg",
"server_url": "https://www.ZenderXXX.nl",
"stream_start": "Sat, 19 Jun 2021 09:15:09 +0200",
"stream_start_iso8601": "2021-06-19T09:15:09+0200",
"title": "RECLAME - Adverteren Op ZenderXXX",
,
{
"bitrate": 192,
"genre": "Folk, Piraten",
"listener_peak": 136,
"listeners": 125,
"listenurl": "http://server.domain.nl:8123/stream",
"server_description": "Internetradio station",
"server_name": "ZenderXXX Radio NL",
"server_type": "audio/mpeg",
"server_url": "https://www.ZenderXXX.nl",
"stream_start": "Wed, 23 Jun 2021 09:47:27 +0200",
"stream_start_iso8601": "2021-06-23T09:47:27+0200",
"title": "STUDIO XXX",
]
}
}
```https://gitlab.xiph.org/xiph/icecast-server/-/issues/2393playlist.log not supporting Unicode/UTF-8 chars2021-10-26T00:48:31ZMike Mackayplaylist.log not supporting Unicode/UTF-8 charsWhen a songs metadata contains Unicode/UTF-8 Chars, the playlist.log file is not writing them correctly. For example, when playing a track by Björk, the Artist name was correctly shown on the stream and in the main web GUI, however the p...When a songs metadata contains Unicode/UTF-8 Chars, the playlist.log file is not writing them correctly. For example, when playing a track by Björk, the Artist name was correctly shown on the stream and in the main web GUI, however the playlist.log file had "Bj?rk" instead.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2418Linking fails with "multiple definition of `global_client_list'"2021-10-26T00:32:54ZThomas SchlienLinking fails with "multiple definition of `global_client_list'"Hi,
the linking, at least on Ubuntu 21.04 and Alpine Linux (docker latest), fails with:
```
CCLD icecast
/usr/bin/ld: icecast-logging.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_li...Hi,
the linking, at least on Ubuntu 21.04 and Alpine Linux (docker latest), fails with:
```
CCLD icecast
/usr/bin/ld: icecast-logging.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-sighandler.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-connection.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-global.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-util.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-slave.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-source.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-stats.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-client.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-xslt.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-fserve.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-admin.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_ogg.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_mp3.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_midi.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_flac.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_ebml.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_kate.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_skeleton.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_opus.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-event.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-event_exec.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth_htpasswd.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth_anonymous.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth_static.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth_enforce_auth.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-auth_url.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-yp.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
/usr/bin/ld: icecast-format_vorbis.o:/home/schlien/devel/icecast-server/src/client.h:146: multiple definition of `global_client_list'; icecast-main.o:/home/schlien/devel/icecast-server/src/client.h:146: first defined here
collect2: error: ld returned 1 exit status
```
I used `./autogen.sh && ./configure && make -j5 install` to compile.
If I can provide any more information, please let me know.
Best regards,
Thomashttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2415SSL=1 in icecast.xml and url inside .m3u and .xsph2021-10-26T00:28:24Zla-colleSSL=1 in icecast.xml and url inside .m3u and .xsphWhen we are using the SSL port declared with:
```xml
<listen-socket>
<port>8000</port>
</listen-socket>
<listen-socket>
<port>8002</port>
<ssl>1</ssl>
</listen-socket>
```
on the status page, the url...When we are using the SSL port declared with:
```xml
<listen-socket>
<port>8000</port>
</listen-socket>
<listen-socket>
<port>8002</port>
<ssl>1</ssl>
</listen-socket>
```
on the status page, the url is in https with the right port, but inside the generated .m3u file it is http:// with the right port, so it is wrong.
.m3u file example:
```
http://live.bidon.org:8002/amiens
```
It should be
```
http://live.bidon.org:8000/amiens
```
or
```
https://live.bidon.org:8002/amiens
```
.xspf file example:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<playlist xmlns="http://xspf.org/ns/0/" version="1">
<title/>
<creator/>
<trackList>
<track>
<location>http://live.bidon.org:8000/amiens</location>
<title/>
<annotation>Stream Title: test
Stream Description: test
Content Type:audio/mpeg
Current Listeners: 7
Peak Listeners: 13
Stream Genre: Various</annotation>
<info>http://www.test.org</info>
</track>
</trackList>
</playlist>
```https://gitlab.xiph.org/xiph/icecast-server/-/issues/2311Parametrize TLS/SSL Protocol in Icecast config file2021-09-28T12:50:45ZGitlab BotParametrize TLS/SSL Protocol in Icecast config fileWe currently have the option of enabling SSL, defining ciphers and certificate files. Would you please add the option to define the protocol.
Example could be:
```
<SSL_Protocol>SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_SSLv2|SSL_OP_...We currently have the option of enabling SSL, defining ciphers and certificate files. Would you please add the option to define the protocol.
Example could be:
```
<SSL_Protocol>SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3</SSL_Protocol>
```
The current ability to define ciphers is great but some ciphers are backwards compatible. From a security standpoint, it would be great to be able to control the protocols available.
Is there a workaround for me without needing to recompile as I've installed from Xiph repository.
Thank you so much for your time!Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2369Allow for master list to contain authentication credentials (when consumed by...2021-07-26T16:00:10ZThomas B. RückerAllow for master list to contain authentication credentials (when consumed by relay client)Extension of functionality merged as part of #1878
Add handling of auth credentials as part of URL.Extension of functionality merged as part of #1878
Add handling of auth credentials as part of URL.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2405Recovering from fallback directs to wrong mount2021-05-08T14:13:53ZLauri HeikkiläRecovering from fallback directs to wrong mountDon't know should one re-open old issue https://gitlab.xiph.org/xiph/icecast-server/-/issues/642 or not, but here's a new one...
One has two mounts (/mount_a and mount_b) with the same fallback mount<br>
-> The sources for both relayed ...Don't know should one re-open old issue https://gitlab.xiph.org/xiph/icecast-server/-/issues/642 or not, but here's a new one...
One has two mounts (/mount_a and mount_b) with the same fallback mount<br>
-> The sources for both relayed mounts (/remote_mount_a and /remote_mount_b) go down<br>
-> All listeners get directed to /backup mount<br>
-> Both relayed sources recover<br>
-> All listeners get directed to single mount, for example /mount_a, even though they were listening /mount_b before
```
<relay>
<server>a.remote.server.com</server>
<mount>/remote_mount_a</mount>
<local-mount>/mount_a</local-mount>
</relay>
<mount type="normal">
<mount-name>/mount_a</mount-name>
<fallback-mount>/backup</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<relay>
<server>remote.server.com</server>
<mount>/remote_mount_b</mount>
<local-mount>/local_mount_b</local-mount>
</relay>
<mount type="normal">
<mount-name>/mount_b</mount-name>
<fallback-mount>/backup</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<relay>
<server>b.remote.server.com</server>
<mount>/remote_backup</mount>
<local-mount>/backup</local-mount>
<on-demand>1</on-demand>
</relay>
```Icecast 2.5.0https://gitlab.xiph.org/xiph/icecast-server/-/issues/2411listeners on fallback-mount don't find initially mount2021-05-08T14:13:09ZSonny Lehnlisteners on fallback-mount don't find initially mountHi there,
if listeners connect to stream1.ogg while this is down and fallback is active the
listeners are moved to wait.ogg = good, so far
If then stream2.ogg comes up, the listeners from wait.ogg are transferred to
stream2.ogg and d...Hi there,
if listeners connect to stream1.ogg while this is down and fallback is active the
listeners are moved to wait.ogg = good, so far
If then stream2.ogg comes up, the listeners from wait.ogg are transferred to
stream2.ogg and don't wait till the initially mount stream1.ogg comes up.
Why is that?
Do I have a wrong configuration:
######################################################################
please see attached picture, I can't post the content of the xml in this editor
######################################################################
![icecast-xml](/uploads/a80bdd92fc6f1b5fd20b864fea8e4fb1/icecast-xml.jpg)
Greetings from Sonnyhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2407status-json.xsl can return invalid JSON at startup2021-04-15T12:13:43ZFunctionstatus-json.xsl can return invalid JSON at startup[I wrote this issue last year](https://github.com/xiph/Icecast-Server/issues/38) but on the GitHub repo. I thought i'd post it here in hopes that someone sees it :)
The page may return this code right after starting Icecast:
```json
{"...[I wrote this issue last year](https://github.com/xiph/Icecast-Server/issues/38) but on the GitHub repo. I thought i'd post it here in hopes that someone sees it :)
The page may return this code right after starting Icecast:
```json
{"icestats":"server_start":"Sat, 03 Oct 2020 15:45:30 +0200","server_start_iso8601":"2020-10-03T15:45:30+0200","dummy":null}}
```
(notice the double closing `}`)
This is invalid JSON, and as i couldn't find a difference between 2.4.4 (which i'm using) and the latest version of the file in master i strongly assume this bug is present in all recent versions. Please correct me if i'm wrong.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2335`<no-mount>` (`<mount>`'s child) is noop in 2.5.x2021-04-14T10:51:43ZPhilipp Schafft`<no-mount>` (`<mount>`'s child) is noop in 2.5.xThe tag `<no-mount>` (which is a child element of `<mount>`) doesn't seem to do anything in 2.5.x. However according to source code comment it should disallow direct access to the mount.
This may interact with the ACL system.The tag `<no-mount>` (which is a child element of `<mount>`) doesn't seem to do anything in 2.5.x. However according to source code comment it should disallow direct access to the mount.
This may interact with the ACL system.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2400global stats key listeners incorrect after client got dropped from pending_tr...2021-03-22T23:22:29ZPhilipp Schafftglobal stats key listeners incorrect after client got dropped from pending_tree for max_listenersThe global stats key `listeners` is incorrect after a client is dropped from the `pending_tree` as the mount is full. this happens on client move (as per admin request or fallback).
The code can be found looking in source.c for:
```
...The global stats key `listeners` is incorrect after a client is dropped from the `pending_tree` as the mount is full. this happens on client move (as per admin request or fallback).
The code can be found looking in source.c for:
```
ICECAST_LOG_INFO("Client deleted, exceeding maximum listeners for this "
"mountpoint (%s).", source->mount);
```https://gitlab.xiph.org/xiph/icecast-server/-/issues/642Fallback overrides when it shouldn't2021-01-29T10:17:57ZGitlab BotFallback overrides when it shouldn'tI have a server with two mounts which have the same fallback mount.
Actually, I have three mounts, with one having a second as its fallback
and that second having the common fallback. But you get the idea.
All these mounts have fallbac...I have a server with two mounts which have the same fallback mount.
Actually, I have three mounts, with one having a second as its fallback
and that second having the common fallback. But you get the idea.
All these mounts have fallback-override set.
The problem is that if I connect to any of the mounts for which the
fallback mount is configured, all mounts currently falling back to that
mount will be pulled forward to the connecting stream, not just listeners
who tuned in via the connected mount.
Example. A and B are configured to fall back to C. Listeners tune into
both A and B when neither is connected and drop through to C. A source
connects to B. All listeners through both A and B are pulled forward to B.
This only affects listeners tuned in at the time the source connects.
Using the above example, anyone tuning into A after B connects will still
get C.
This is using Icecast 2.2 compiled from source on Debian 3.0.Icecast 2.3Michael SmithMichael Smithhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2388Indefinite 100% CPU when disconnecting from SSL port when Icecast is running ...2021-01-23T08:17:31ZredactedscribeIndefinite 100% CPU when disconnecting from SSL port when Icecast is running inside a Podman container*UPDATE: This bug seems hard to track down and the solution as described below of spawning the Podman container as root rather than rootlessly doesn't actually work. It definitely seemed to be the fix last night, but I've now encountered...*UPDATE: This bug seems hard to track down and the solution as described below of spawning the Podman container as root rather than rootlessly doesn't actually work. It definitely seemed to be the fix last night, but I've now encountered the same high CPU usage problem that spawning as rootless was producing, but as root. Noteworthy is that I tested the same build process on the host system without containers, and the bug was no more, but judging how the bug has seemed to have has disappeared completely and then returned a few times, I'm not certain of the results. Leaving this report up as it could still lead to an answer.*
The easiest way for me to communicate the issue is through these steps:
- [Create a Let's Encrypt cert](https://certbot.eff.org/).
- Create `icecast.pem` using what Let's Encrypt produced: `fullchain.pem` + `privkey.pem`.
- Place `icecast.pem` into same dir as `Containerfile` and `entrypoint.sh` (attached files).
- [Install Podman](https://podman.io/getting-started/installation).
- As an unprivileged user, run: `podman build --force-rm -f Containerfile -t icecast`. This builds Icecast 2.4.4 from source with `--with-curl` and `--with-openssl` flags (`OpenSSL/1.1.1g` is what Alpine currently serves).
- Open ports `8000/tcp` and `8001/tcp` on the host if needed.
- Spawn an Icecast container (replace `<hostname>`):
```sh
podman run --rm --interactive --tty --publish 8000:8000 --publish 8001:8001 \
--env IC_HOSTNAME="<hostname>" \
--env IC_HTTP_PORT="8001" \
--env IC_HTTPS_PORT="8000" \
--env IC_LOG_LEVEL="4" \
--name icecast \
icecast
```
- To monitor Icecast's logs via the host, you can use `podman exec icecast tail /usr/local/var/log/icecast/access.log -f` and `podman exec icecast tail /usr/local/var/log/icecast/error.log -f`.
- Stream to the server's HTTPS port `8000` using a source client (in my case, Butt on Windows) with the default credentials.
- After connection, disconnect. `htop` on the host should now report 100% CPU for the container process, and reconnection via the source client should no longer be possible.
- Pressing `s` in `htop` on one of the two `icecast -c /usr/local/etc/icecast.xml` commands listed running at ~100% CPU, `strace` shows intense polling spam:
```sh
...
poll([{fd=7, events=POLLIN}], 1, 250) = 1 ([{fd=7, revents=POLLIN}])
read(7, read(7, read(7, read(7, ) = 1 ([{fd=7, revents=POLLIN}])
poll([{fd=7, events=POLLIN}], 1, 250) = 1 ([{fd=7, revents=POLLIN}])
read(7, "", 5) = 0
read(7, read(7, read(7, poll([{fd=7, events=POLLIN}], 1, 250) = 1 ([{fd=7, revents=POLLIN}])
...
```
For the other high CPU Icecast command, `strace` shows less spam:
```sh
...
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 300) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=4, events=POLLIN}], 2, 300) = 0 (Timeout)
...
```
- With the container still running, running `podman exec icecast netstat -t` on the host shows Alpine waiting:
```sh
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 <hostname>:46372 <hostname>:8000 FIN_WAIT2
tcp 0 0 <hostname>:8000 <hostname>:46372 CLOSE_WAIT
netstat: /proc/net/tcp6: No such file or directory
```
It looks like the connection is never closed properly, as visiting `https://<hostname>:8000/admin/` and pressing `Kill Source` brings things back to normal. This is specifically confined to SSL as connecting to the HTTP port `8001` and then disconnecting has no adverse effects. Only the HTTPS port is affected.
~~The solution for me has been to spawn the Podman container as root rather than rootlessly. When doing so, Icecast doesn't get stuck in a loop waiting for the connection to drop after disconnection from HTTPS port (or whatever the exact issue is). Ideally, Icecast could function in a container run rootlessly as this is a major advantage of Podman's approach to containers over Docker's.~~
I am unsure if there is a bug on Podman's side (concerning container networking, or possible misconfiguration on my part), but I don't believe Icecast should be able to get stuck in this scenario producing 100% CPU indefinitely. Therefore, I have reported this here rather than to Podman.
Thanks.
Infos:
```
Icecast 2.4.4 (from source) running on Alpine inside the container
Podman 1.9.3
Fedora release 32 (Thirty Two)
Linux 5.6.19-300.fc32.x86_64
```
[icecast-indefinite-100_-cpu-bug-report.tar](/uploads/4840719fa9fe143617af35b9c78f6895/icecast-indefinite-100_-cpu-bug-report.tar)https://gitlab.xiph.org/xiph/icecast-server/-/issues/2404Issues in log file dublicate items since start of 20212021-01-04T20:47:54ZHans-Georg AlthoffIssues in log file dublicate items since start of 2021I have figured out, that user access is repeating the same data several times since the beginning of the year.
Usual the lines are ordered by time. Now I can see, that ip adresses are repeating with the same date and time.
This is corr...I have figured out, that user access is repeating the same data several times since the beginning of the year.
Usual the lines are ordered by time. Now I can see, that ip adresses are repeating with the same date and time.
This is corrupting my programm[access.log.old](/uploads/10f05b8ae9d6960d4a921d4654ab6e9c/access.log.old), which I use to analyse the data.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2402Auth url webhooks not working2020-11-14T16:56:42ZJohn MidsonAuth url webhooks not workingHi guys,
Sorry if I'm missing something obvious, but I really can't make authentication url working.
I have Icecast configs:
```
<mount>
<mount-name>/aac_high</mount-name>
<authentication type="url">
<option...Hi guys,
Sorry if I'm missing something obvious, but I really can't make authentication url working.
I have Icecast configs:
```
<mount>
<mount-name>/aac_high</mount-name>
<authentication type="url">
<option name="listener_add" value="http://localhost:3000/api/v1/listeners/add"/>
<option name="listener_remove" value="http://localhost:3000/api/v1/listeners/remove"/>
<option name="auth_header" value="icecast-auth-user: 1"/>
</authentication>
</mount>
```
By calling `/aac_hight` I got 401 despite server is configured to return correct header:
```
$ curl http://localhost:8000/aac_high
<?xml version="1.0"?>
<report xmlns="http://icecast.org/specs/reportxml-0.0.1" version="0.0.1"><incident><state definition="25387198-0643-4577-9139-7c4f24f59d4a"><text>You need to authenticate</text></state></incident><extension application="http://icecast.org/specs/legacy-icestats"><icestats xmlns="http://icecast.org/specs/legacystats-0.0.1"><modules/></icestats></extension></report>
```
In Icecast's `error.log` I'm getting:
```
[2020-11-05 11:44:02] INFO auth/queue_auth_client auth on /aac_high has 1 pending
[2020-11-05 11:44:02] INFO auth_url/url_add_client client auth (http://localhost:3000/api/v1/listeners/add) failed with ""
[2020-11-05 11:44:02] WARN reportxml/reportxml_database_build_report No matching definition for "25387198-0643-4577-9139-7c4f24f59d4a"
```
So, looks like it is trying to reach `http://localhost:3000/api/v1/listeners/add` but in server logs I don't see any incoming request at all.
Callback on localhost:3000 working fine:
```
$ curl -v -X POST http://localhost:3000/api/v1/listeners/add
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 3000 (#0)
> POST /api/v1/listeners/add HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
< icecast-auth-user: 1
< Server: Dominion
< Date: Thu, 05 Nov 2020 12:19:24 GMT
< Connection: keep-alive
< Content-Length: 0
<
* Connection #0 to host localhost left intact
```
Icecast is built from master branch, additional info:
```
$ ./icecast -v
Icecast 2.4.99.2
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
```
Will appreciate any hint what is going wrong. Thanks!https://gitlab.xiph.org/xiph/icecast-server/-/issues/2337RFE: Please add a possibility for a relay to transcode the stream2020-11-09T19:35:07Zpetr tomasekRFE: Please add a possibility for a relay to transcode the streamWith Icecast I'm missing the possibility to create transcoding relays in a simple manner. I'd suggest there could be a new configuration option which would specify a binary/script which the stream would go through.
Something like this:
...With Icecast I'm missing the possibility to create transcoding relays in a simple manner. I'd suggest there could be a new configuration option which would specify a binary/script which the stream would go through.
Something like this:
```xml
<relay>
<server>127.0.0.1</server>
<port>8001</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>
<on-demand>1</on-demand>
<retry-delay>30</retry-delay>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
<transcode-bin>/usr/local/bin/transcodestreamXYZ</transcode-bin>
</relay>
```
Thanks!https://gitlab.xiph.org/xiph/icecast-server/-/issues/2389Infinite loop login/passwd when htpasswd is used2020-10-26T17:36:34ZtormyvancoolInfinite loop login/passwd when htpasswd is usedSetting up **Icecast 2.4.4** Windows version (**W7 64bit** and **HTTP** protocol (I don't use HTTPS)) I got a strange issue, not reported by the error.log
The created user, gets an infinite loop of LOGIN popups.
Writing the correct logi...Setting up **Icecast 2.4.4** Windows version (**W7 64bit** and **HTTP** protocol (I don't use HTTPS)) I got a strange issue, not reported by the error.log
The created user, gets an infinite loop of LOGIN popups.
Writing the correct login and password, the popup is always returned and the user never get access.
Even giving to the user a login string as http://user:password@My_Public_Ip:8000/stream (where **/stream** is my mountpoint)
- 8000 is the port I use
- It's opened in bidirectional way on my router and firewall
- protocols: TCP/UDP
Please here below just the lines for the auth
in attachment ou find my *icecast.xml* "anonymized", as requested by your Policies, and the chunck of the *error.log* where I got the infinite loop
It resulted impossible to use Login and Password (at the moment).
Users should be very limited, that's why I put just 3
The MyAuth file is correctly generated and managed bui the UI
```
<!-- Normal mounts -->
<mount type="normal">
<mount-name>/stream</mount-name>
<max-listeners>3</max-listeners>
<authentication type="htpasswd">
<option name="filename" value="myauth"/>
<option name="allow_duplicate_users" value="0"/>
</authentication>
</mount>
```
[icecast.xml](/uploads/48fd92adae020bc51b2ab90b14e816c4/icecast.xml)
[error.log](/uploads/debf531d6f79a2f2cfd0d73f9789a687/error.log)https://gitlab.xiph.org/xiph/icecast-server/-/issues/2399Crash Icecast 2.4.4 on CentOS 7.52020-10-19T17:28:24ZMediaKCrash Icecast 2.4.4 on CentOS 7.5Linked from previous report `https://gitlab.xiph.org/xiph/icecast-server/-/issues/2344`
My radio stream service exits on minimal load.
I'm using Icecast 2.4.4
OpenSSL 1.0.2k-fips 26 Jan 2017
On CentOs 7.8
WHM/CPANEL: v90.0.15
`Oct 18 ...Linked from previous report `https://gitlab.xiph.org/xiph/icecast-server/-/issues/2344`
My radio stream service exits on minimal load.
I'm using Icecast 2.4.4
OpenSSL 1.0.2k-fips 26 Jan 2017
On CentOs 7.8
WHM/CPANEL: v90.0.15
`Oct 18 02:18:33 server1 kernel: traps: icecast[16512] general protection ip:7f2327a88c09 sp:7ffdab32ab80 error:0 in libssl.so.1.0.2k[7f2327a5c000+67000]
`
With added errors
`Oct 18 02:18:33 server1 systemd: icecast.service: main process exited, code=killed, status=11/SEGV
Oct 18 02:18:33 server1 systemd: Unit icecast.service entered failed state.
Oct 18 02:18:33 server1 systemd: icecast.service failed.`
How can this be resolved?