Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2018-10-18T08:03:57Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2004calls to abort() should be removed and checks for memory allocation failture ...2018-10-18T08:03:57ZPhilipp Schafftcalls to abort() should be removed and checks for memory allocation failture to be addedicecast calls abort() 3 times. All 3 times are related to memory allocation. It is used to avoid the need to handle errors on memory allocation. In many other places memory allocation is not checked to be successful.
* all calls to abor...icecast calls abort() 3 times. All 3 times are related to memory allocation. It is used to avoid the need to handle errors on memory allocation. In many other places memory allocation is not checked to be successful.
* all calls to abort() should be removed.
* all calls to malloc(), calloc() and realloc() should be checked handling errors correctly.
* There should be a policy on what happens on memory allocation failure (icecast dropping clients/resources OR dieing?)
* icecast should (at high/all cost) try to inform the user about this problem.
* memory failure can have many reasons. Not just the system being out of memory.Icecast 2.5.0Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2008A hang in send_ogg_headers()2020-02-14T13:10:21ZartemA hang in send_ogg_headers()I've recently had the following hang of icecast2 server. Not sure if it's the first time, but it's pretty rare anyway, so i can't reliably reproduce, but this time i managed to debug a little.
I'm running on ubuntu 12.04 vps with defaul...I've recently had the following hang of icecast2 server. Not sure if it's the first time, but it's pretty rare anyway, so i can't reliably reproduce, but this time i managed to debug a little.
I'm running on ubuntu 12.04 vps with default package (icecast2-2.3.2-9ubuntu1), didn't try to pull the latest svn version yet.
```
$ tail /var/log/icecast2
...
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
[2014-02-16 08:27:40] DBUG client/client_send_bytes Client connection died
...
```
```
$ strace -p `pidof icecast2` -f 2>&1 | grep send
...
[pid 26113] send(14, 0x5ff8e559, 2406954578, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e558, 2406954579, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e557, 2406954580, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e556, 2406954581, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e555, 2406954582, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e554, 2406954583, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e553, 2406954584, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e552, 2406954585, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e551, 2406954586, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e550, 2406954587, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e54f, 2406954588, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e54e, 2406954589, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e54d, 2406954590, 0) = -1 EPIPE (Broken pipe)
[pid 26113] send(14, 0x5ff8e54c, 2406954591, 0) = -1 EPIPE (Broken pipe)
...
```
You may notice how buffer address decreases by 1 and buffer length increases by 1 on every line; no other `send()` calls happen, so i could easily backtrace them:
```
$ gdb -p `pidof icecast`
...
Breakpoint 1, 0xb7461e40 in send () from /lib/i386-linux-gnu/tls/i686/nosegneg/libpthread.so.0
(gdb) bt
#0 0xb7461e40 in send () from /lib/i386-linux-gnu/tls/i686/nosegneg/libpthread.so.0
#1 0x08067c40 in sock_write_bytes (sock=14, buff=0x5f08fe9d, len=2422676750) at sock.c:360
#2 0x0804f9aa in connection_send (con=0x9748ac8, buf=0x5f08fe9d, len=2422676750) at connection.c:303
#3 0x08058d20 in client_send_bytes (client=0x9740a38, buf=0x5f08fe9d, len=2422676750) at client.c:202
#4 0x0805e6c2 in send_ogg_headers (headers=0xb666e848, client=0x9740a38) at format_ogg.c:500
#5 write_buf_to_client (client=0x9740a38) at format_ogg.c:534
#6 0x08054f57 in send_to_listener (deletion_expected=0, client=0x9740a38, source=0xb647c7d8) at source.c:544
#7 source_main (source=0xb647c7d8) at source.c:716
#8 0x0805564f in source_client_thread (arg=0xb647c7d8) at source.c:1225
#9 0x08068b2f in _start_routine (arg=0xb6674970) at thread.c:655
#10 0xb745ad4c in start_thread () from /lib/i386-linux-gnu/tls/i686/nosegneg/libpthread.so.0
#11 0xb7398ace in clone () from /lib/i386-linux-gnu/tls/i686/nosegneg/libc.so.6
...
```
Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2010Improve Icecast htpasswd hash storage security2023-02-21T23:42:29ZThomas B. RückerImprove Icecast htpasswd hash storage securityCurrently Icecast uses unsalted md5 hashes of passwords.
Once an attacker obtains access to those the risk is high that simple passwords will be broken by simple md5 look-up through web search.
We should move to using bcrypt, as it's li...Currently Icecast uses unsalted md5 hashes of passwords.
Once an attacker obtains access to those the risk is high that simple passwords will be broken by simple md5 look-up through web search.
We should move to using bcrypt, as it's license permits us to incorporate it, also it should allow us to be compatible with the standard htpasswd(1) manipulation tool.
In the meanwhile using forwarded http authentication potentially offers higher security by deferring authentication to another http server.Icecast 2.5.0Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2016Add IP address of the source in error.log2018-03-06T12:49:48ZFrancois LafontAdd IP address of the source in error.logHere is typical content of error.log during a source connection:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_pa...Here is typical content of error.log during a source connection:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2014-05-02 13:43:49] INFO source/source_main listener count on /test1.mp3 now 0
[2014-05-02 13:43:57] INFO source/get_next_buffer End of Stream /test1.mp3
[2014-05-02 13:43:57] INFO source/source_shutdown Source "/test1.mp3" exiting
```
It will be great if the IP source address was indicate in error.log. For example, something like that:
```
[2014-05-02 13:43:49] INFO connection/_handle_source_request Source (IP=192.168.0.26) logging in at mountpoint "/test1.mp3"
[2014-05-02 13:43:49] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2014-05-02 13:43:49] INFO source/source_main listener count on /test1.mp3 now 0
[2014-05-02 13:43:57] INFO source/get_next_buffer End of Stream /test1.mp3
[2014-05-02 13:43:57] INFO source/source_shutdown Source (IP=192.168.0.26) "/test1.mp3" exiting
```
Isn't it? ;-)
Francois LafontIcecast 2.5.0Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2017out of band Opus Metadata updates not allowed2018-11-10T09:27:15Zkidxout of band Opus Metadata updates not allowedMessage: Mountpoint will not accept URL updates.
Return Code: 1Message: Mountpoint will not accept URL updates.
Return Code: 1Icecast 2.5.0Gitlab BotGitlab Bothttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2018Add a web interface equivalent of SIGHUP2018-03-06T12:49:47ZwillwhAdd a web interface equivalent of SIGHUPI run icecast2 on windows, and it'd be great to have some HTTP interface I could POST to, to call a reload to add mounts, without kicking any sources or clients from the running mounts.
Thanks guys!I run icecast2 on windows, and it'd be great to have some HTTP interface I could POST to, to call a reload to add mounts, without kicking any sources or clients from the running mounts.
Thanks guys!Icecast 2.5.0Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2019[PATCH] Add PLS Playlist Format2018-03-06T12:49:47ZMarvin Scholz[PATCH] Add PLS Playlist FormatThis patch adds support for the pls playlist format.This patch adds support for the pls playlist format.Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2020[PATCH] Fix autogen.sh to work properly on Mac OS2018-03-06T12:49:47ZMarvin Scholz[PATCH] Fix autogen.sh to work properly on Mac OSThis patch fixes autogen.sh, so it will not exit with the error that libtool is not installed on Mac OS.
The command `libtoolize` on Mac OS is called `glibtoolize`, this patch makes it check for both versions.
This patch fixes autogen.sh, so it will not exit with the error that libtool is not installed on Mac OS.
The command `libtoolize` on Mac OS is called `glibtoolize`, this patch makes it check for both versions.
Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2024configure does not find speex when using non-standard prefix2018-10-17T14:49:29ZRoland Hermansconfigure does not find speex when using non-standard prefixI tried to compile icecast 2.4.0 using a non-standard prefix as follows:
```
./configure --prefix=<mydir>
```
The libraries libogg, libvorbis and libtheora are found, but libspeex is not:
```
checking for libogg... ok
checking for lib...I tried to compile icecast 2.4.0 using a non-standard prefix as follows:
```
./configure --prefix=<mydir>
```
The libraries libogg, libvorbis and libtheora are found, but libspeex is not:
```
checking for libogg... ok
checking for libvorbis... ok
checking for libtheora... ok
checking for libspeex... configure: WARNING: Speex support disabled!
```
The reason for this is that the configure script does not append SPEEX_CFLAGS to CPPFLAGS. Attached patch contains a fix for m4/speex.m4 that temporarily modifies CPPFLAGS in a way similar to the other libraries.Icecast 2.5.0Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2028Non-existing community link on server information page2018-03-06T12:49:47ZRoland HermansNon-existing community link on server information pageClicking on the Community link of the Server Information web page /server_version.xsl results in a 404 error: "The requested URL /community.php was not found on this server.".
Steps to reproduce:
1. Open the Icecast web interface in a b...Clicking on the Community link of the Server Information web page /server_version.xsl results in a 404 error: "The requested URL /community.php was not found on this server.".
Steps to reproduce:
1. Open the Icecast web interface in a browser
2. Click on Version in the menu
3. Click on the community link (http://icecast.org/community.php)
Actual result:
404 error
Expected result:
Web page with information on the Icecast community is shown.Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2031Admin functions do not accept URL encoded values2018-03-06T12:49:47ZBradAdmin functions do not accept URL encoded valuesThe admin functions should accept/decode the mount GET value since / is a reserved character.
This works:
http://192.168.1.10:8000/admin/metadata?mount=/mystream&mode=updinfo&song=ACDC+Back+In+Black
This doesn't:
http://192.168.1.10:80...The admin functions should accept/decode the mount GET value since / is a reserved character.
This works:
http://192.168.1.10:8000/admin/metadata?mount=/mystream&mode=updinfo&song=ACDC+Back+In+Black
This doesn't:
http://192.168.1.10:8000/admin/metadata?mount=%F2mystream&mode=updinfo&song=ACDC+Back+In+Black
Response is: 400 - Source does not exist
Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2033Json output fails parser lint2018-03-06T12:49:47ZKompilerJson output fails parser lintStrange json output that fails the json lint test and php fails to parse. Here's a sample output that is broke.
sample broken json:
{"icestats":{"admin":"icemaster@localhost","host":"localhost","location":"Earth","server_id":"Icecast ...Strange json output that fails the json lint test and php fails to parse. Here's a sample output that is broke.
sample broken json:
{"icestats":{"admin":"icemaster@localhost","host":"localhost","location":"Earth","server_id":"Icecast 2.4.0","server_start":"Tue, 29 Jul 2014 00:53:00 +0200","server_start_iso8601":"2014-07-29T00:53:00+0200","source":[{"audio_info":"bitrate=256;channels=2;samplerate=44100","bitrate":256,"channels":2,"genre":"Various","listener_peak":0,"listeners":0,"listenurl":"http://localhost:8000/User","samplerate":44100,"server_description":"User live in the mix on server.tv!","server_name":"server.tv - User","server_type":"audio/mpeg","server_url":"http://server.tv/live/index/User","stream_start":"Tue, 29 Jul 2014 00:53:01 +0200","stream_start_iso8601":"2014-07-29T00:53:01+0200",,{"audio_info":"bitrate=256;channels=2;samplerate=44100","bitrate":256,"channels":2,"genre":"Various","listener_peak":0,"listeners":0,"listenurl":"http://localhost:8000/autodj","samplerate":44100,"server_description":"server.tv Replays","server_name":"server.tv Radio","server_type":"audio/mpeg","server_url":"http://server.tv/","stream_start":"Tue, 29 Jul 2014 00:53:01 +0200","stream_start_iso8601":"2014-07-29T00:53:01+0200","title":"server.tv Radio: User - M”ix,]}}Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2037Check if Icecast returns HTTP 200 on disallowed metadata updates2018-03-06T12:49:47ZThomas B. RückerCheck if Icecast returns HTTP 200 on disallowed metadata updatesWe've had a report that some version of Icecast might be doing this.
http://lists.xiph.org/pipermail/icecast/2014-August/012905.html
We should check if this is the case and if so consider changing it to a 403, accompanied by a sensible ...We've had a report that some version of Icecast might be doing this.
http://lists.xiph.org/pipermail/icecast/2014-August/012905.html
We should check if this is the case and if so consider changing it to a 403, accompanied by a sensible error message.Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2039Icecast segfault : auth_url.c2018-03-06T12:49:47ZTeddyIcecast segfault : auth_url.cHi !
I'm using Icecast 2.4.0 with stream_auth authentication option.
When Nicecast (OSX streaming client) connects and sends metadata, a segfault occurs.
I investigated a bit, and it seems that _client->username_ and _client->password_...Hi !
I'm using Icecast 2.4.0 with stream_auth authentication option.
When Nicecast (OSX streaming client) connects and sends metadata, a segfault occurs.
I investigated a bit, and it seems that _client->username_ and _client->password_ (auth_url.c, lines 542/543) are both _null_.
My icecast.xml config file is almost genuine (changed the port, and configured a mountpoint with stream_auth). Please see attachments.
Here is a GDB run :
```
(gdb) run -c etc/icecast.xml
Starting program: /home/radioking/icecast-dbg/icecast-2.4.0/build/bin/icecast -c etc/icecast.xml
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7fda700 (LWP 16800)]
[New Thread 0x7ffff7f59700 (LWP 16801)]
[New Thread 0x7ffff7ed8700 (LWP 16802)]
[New Thread 0x7ffff14ca700 (LWP 16803)]
[New Thread 0x7ffff1449700 (LWP 16804)]
[Thread 0x7ffff1449700 (LWP 16804) exited]
[New Thread 0x7ffff083f700 (LWP 16805)]
[New Thread 0x7ffff07be700 (LWP 16806)]
[Thread 0x7ffff083f700 (LWP 16805) exited]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7fda700 (LWP 16800)]
strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: Aucun fichier ou dossier de ce type.
```
And the backtrace :
```
(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
#1 0x000000000040ba9c in util_url_escape (src=0x0) at util.c:269
#2 0x000000000041e0db in url_stream_auth (auth_user=<optimized out>)
at auth_url.c:542
#3 0x000000000041ac80 in stream_auth_callback (auth=0x64cf20, auth_user=0x684280)
at auth.c:248
#4 0x000000000041a5cf in auth_run_thread (arg=arg@entry=0x64cf20) at auth.c:311
#5 0x0000000000421e77 in _start_routine (arg=0x657550) at thread.c:657
#6 0x00007ffff68c4182 in start_thread (arg=0x7ffff7fda700) at pthread_create.c:312
#7 0x00007ffff65f130d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
```Icecast 2.5.0Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2047Icecast 2.4.0 - status-json.xsl - parse error2018-03-06T12:49:47ZGhost UserIcecast 2.4.0 - status-json.xsl - parse errorHello,
The attached status json file does not parse.
The file is here:
http://www.noizeukradio.com:8000/status-json.xsl
This topic looks similar:
http://icecast.imux.net/viewtopic.php?t=8240
Thanks,
DavidHello,
The attached status json file does not parse.
The file is here:
http://www.noizeukradio.com:8000/status-json.xsl
This topic looks similar:
http://icecast.imux.net/viewtopic.php?t=8240
Thanks,
DavidIcecast 2.5.0Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2054[PATCH] On-Demand relay mount doesn't has on_demand set on startup2018-03-06T12:49:47ZMarvin Scholz[PATCH] On-Demand relay mount doesn't has on_demand set on startupA `<relay>` that has the `on-demand` option set is missing this information on icecast's first startup, when looking at the stats xml
```
<source mount="/diff.mp3">
<listener_peak>0</listener_peak>
<listeners>0</listeners>
...A `<relay>` that has the `on-demand` option set is missing this information on icecast's first startup, when looking at the stats xml
```
<source mount="/diff.mp3">
<listener_peak>0</listener_peak>
<listeners>0</listeners>
<listenurl>http://localhost:8000/diff.mp3</listenurl>
<max_listeners>unlimited</max_listeners>
<public>0</public>
</source>
```
missing the `<on_demand>1</on_demand>` on first startup. When a listener connects and it therefore connects to the relayed stream, it will have this set. The patch makes sure that this is set initially too.Icecast 2.5.0Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2055Changing relay on-demand settings messes things up2018-03-06T12:49:38ZMarvin ScholzChanging relay on-demand settings messes things upIf a relay is configure in Icecast like the following:
```
<relay>
<server>stream.server.de</server>
<port>8000</port>
<mount>/24.mp3</mount>
<local-mount>/diff.mp3</local-mount>
<relay-shoutcast...If a relay is configure in Icecast like the following:
```
<relay>
<server>stream.server.de</server>
<port>8000</port>
<mount>/24.mp3</mount>
<local-mount>/diff.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
<on-demand>1</on-demand>
</relay>
```
and the `on-demand` value is changed to 0 and config re-read with SIGHUP, it will still show as on-demand in the stats and the whole relay mount will disappear and reappear quite randomly.
When initially 0 and changed to 1 it seems to have no effect at all.Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2056On-demand relay mount vanishes shortly right after last player disconnects2023-02-27T11:40:50ZMarvin ScholzOn-demand relay mount vanishes shortly right after last player disconnectsIf a on demand relay is configured, and the last listener disconnects, it vanishes from the stats for a short period of time.
This is because in `source.c` the `source_shutdown()` function deletes the source stats:
```
stats_event(so...If a on demand relay is configured, and the last listener disconnects, it vanishes from the stats for a short period of time.
This is because in `source.c` the `source_shutdown()` function deletes the source stats:
```
stats_event(source->mount, NULL, NULL);
```
There would be different approaches to fix this:
1. Do not fix it at all
2. If it is a on-demand mount, only remove the data that will probably change
3. Remove all data and trigger immediate refresh of mount data (inefficient?)Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2057Rewrite HTTP handling to correctly implement HTTP/1.12018-11-09T14:06:15ZMarvin ScholzRewrite HTTP handling to correctly implement HTTP/1.1Icecast should support HTTP/1.1 especially since we already do this partially for PUT support.
HEAD should probably be added too, since it might be useful and some players maybe do it to check content-type, length…
Additionally to compl...Icecast should support HTTP/1.1 especially since we already do this partially for PUT support.
HEAD should probably be added too, since it might be useful and some players maybe do it to check content-type, length…
Additionally to completely support PUT and stay in spec we need to support chunked encoding.Icecast 2.6Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2058[PATCH] Replace logging macros2018-03-06T12:49:47ZMarvin Scholz[PATCH] Replace logging macrosReplace the old logging macros with variadic argument macros.
`ERROR0`, `ERROR1`, `ERROR2`, `ERROR3`, `ERROR4` are replaced with `LOG_ERROR`
`WARN0`, `WARN1`, `WARN2`, `WARN3` are replaced with `LOG_WARN`
`INFO0`, `INFO1`, `INFO2`, `INF...Replace the old logging macros with variadic argument macros.
`ERROR0`, `ERROR1`, `ERROR2`, `ERROR3`, `ERROR4` are replaced with `LOG_ERROR`
`WARN0`, `WARN1`, `WARN2`, `WARN3` are replaced with `LOG_WARN`
`INFO0`, `INFO1`, `INFO2`, `INFO3` are replaced with `LOG_INFO`
`DEBUG0`, `DEBUG1`, `DEBUG2`, `DEBUG3`, `DEBUG4` are replaced with `LOG_DEBUG`
Additionally a bit formatting was done, to match common c code style (only where it really shouted for attention, while looking through the files)Thomas B. RückerThomas B. Rücker