Icecast-Server issueshttps://gitlab.xiph.org/xiph/icecast-server/-/issues2023-03-06T15:12:48Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2375Cross-Origin Preflight OPTIONS sends 4012023-03-06T15:12:48ZBradley HiltonCross-Origin Preflight OPTIONS sends 401When a browser does a cross-origin request with preflight, icecast server fails with `401 Authentication Required` when there is no way to include the user credentials.
https://www.w3.org/TR/cors/#preflight-requestWhen a browser does a cross-origin request with preflight, icecast server fails with `401 Authentication Required` when there is no way to include the user credentials.
https://www.w3.org/TR/cors/#preflight-requesthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2374Double quote in user agent causes malfomed log file2019-07-28T07:50:31ZNeil PalmerDouble quote in user agent causes malfomed log fileSome devices include a double quote character in their user agent.
The icecast log file quotes the user agent field, but does not escape any quotes inside of this, causing an invalid format.
Example:
> "Mozilla/5.0 (Linux; Android 5....Some devices include a double quote character in their user agent.
The icecast log file quotes the user agent field, but does not escape any quotes inside of this, causing an invalid format.
Example:
> "Mozilla/5.0 (Linux; Android 5.1; Alba 8" Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Safari/537.36"https://gitlab.xiph.org/xiph/icecast-server/-/issues/2373Incorrect status code2020-10-15T16:20:55ZPhilipp SchafftIncorrect status codeIn case of 'mountpoint will not accept URL updates' and other admin errors Icecast might send incorrect HTTP status headers.
This happens at least in branch ph3-mdoule-client-tests.In case of 'mountpoint will not accept URL updates' and other admin errors Icecast might send incorrect HTTP status headers.
This happens at least in branch ph3-mdoule-client-tests.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2372Icecast 'locks up' on SIGHUP if there are duplicate listener-sockets in the c...2020-10-10T10:13:32ZThomas B. RückerIcecast 'locks up' on SIGHUP if there are duplicate listener-sockets in the configAs reported by 'szett' on IRC.
Excerp of the offending config file:
<listen-socket>
<port>8000</port>
<!-- <bind-address>127.0.0.1</bind-address> -->
<!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</li...As reported by 'szett' on IRC.
Excerp of the offending config file:
<listen-socket>
<port>8000</port>
<!-- <bind-address>127.0.0.1</bind-address> -->
<!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</listen-socket>
<!-- SOCKET FOR SOURCES -->
<listen-socket>
<port>8000</port>
<!-- <bind-address>127.0.0.1</bind-address> -->
<!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</listen-socket>Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2371Memory leaked due during source timeouts2019-04-01T12:52:31ZThomas B. RückerMemory leaked due during source timeouts```
==4664== Memcheck, a memory error detector
==4664== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4664== Using Valgrind-3.14.0-3a3000290b-20181009X and LibVEX; rerun with -h for copyright info
==4664== Command: ic...```
==4664== Memcheck, a memory error detector
==4664== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4664== Using Valgrind-3.14.0-3a3000290b-20181009X and LibVEX; rerun with -h for copyright info
==4664== Command: icecast -c /etc/icecast.xml
==4664== Parent PID: 4663
==4664==
--4664--
--4664-- Valgrind options:
--4664-- --log-file=valgrind.log
--4664-- -v
--4664-- --tool=memcheck
--4664-- --leak-check=yes
--4664-- --show-reachable=yes
--4664-- --num-callers=20
--4664-- --track-fds=yes
--4664-- Contents of /proc/version:
--4664-- Linux version 4.19.3 (xogium@C2ArchLinux) (gcc version 8.2.0 (GCC)) #2 SMP PREEMPT Thu Nov 22 15:00:50 EST 2018
--4664--
--4664-- Arch and hwcaps: ARM64, LittleEndian, baseline
--4664-- Page sizes: currently 4096, max supported 65536
--4664-- Valgrind library directory: /usr/lib/valgrind
--4664-- Reading syms from /usr/bin/icecast
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/ld-2.28.so
--4664-- Reading syms from /usr/lib/valgrind/memcheck-arm64-linux
--4664-- object doesn't have a dynamic symbol table
--4664-- Scheduler: using generic scheduler lock implementation.
--4664-- Reading suppressions file: /usr/lib/valgrind/default.supp
==4664== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-4664-by-root-on-???
==4664== embedded gdbserver: writing to /tmp/vgdb-pipe-to-vgdb-from-4664-by-root-on-???
==4664== embedded gdbserver: shared mem /tmp/vgdb-pipe-shared-mem-vgdb-4664-by-root-on-???
==4664==
==4664== TO CONTROL THIS PROCESS USING vgdb (which you probably
==4664== don't want to do, unless you know exactly what you're doing,
==4664== or are doing some strange experiment):
==4664== /usr/lib/valgrind/../../bin/vgdb --pid=4664 ...command...
==4664==
==4664== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==4664== /path/to/gdb icecast
==4664== and then give GDB the following command
==4664== target remote | /usr/lib/valgrind/../../bin/vgdb --pid=4664
==4664== --pid is optional if only one valgrind process is running
==4664==
--4664-- REDIR: 0x40175c0 (ld-linux-aarch64.so.1:strlen) redirected to 0x580c8c94 (vgPlain_arm64_linux_REDIR_FOR_strlen)
--4664-- REDIR: 0x4017300 (ld-linux-aarch64.so.1:strcmp) redirected to 0x580c8ce8 (vgPlain_arm64_linux_REDIR_FOR_strcmp)
--4664-- REDIR: 0x40171f0 (ld-linux-aarch64.so.1:index) redirected to 0x580c8cbc (vgPlain_arm64_linux_REDIR_FOR_index)
--4664-- Reading syms from /usr/lib/valgrind/vgpreload_core-arm64-linux.so
--4664-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-arm64-linux.so
--4664-- Reading syms from /usr/lib/libssl.so.1.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libcurl.so.4.5.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libspeex.so.1.5.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libtheora.so.0.3.10
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libvorbis.so.0.4.8
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libxslt.so.1.1.32
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libxml2.so.2.9.8
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/liboggkate.so.1.2.2
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libkate.so.1.3.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libogg.so.0.8.3
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libpthread-2.28.so
--4664-- Reading syms from /usr/lib/libc-2.28.so
--4664-- Reading syms from /usr/lib/libcrypto.so.1.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libnghttp2.so.14.17.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libidn2.so.0.3.4
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libssh2.so.1.0.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libpsl.so.5.3.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libgssapi_krb5.so.2.2
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libkrb5.so.3.3
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libk5crypto.so.3.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libcom_err.so.2.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libz.so.1.2.11
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libm-2.28.so
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libdl-2.28.so
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libicuuc.so.63.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/liblzma.so.5.2.4
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libunistring.so.2.1.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libkrb5support.so.0.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libkeyutils.so.1.8
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libresolv-2.28.so
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libicudata.so.63.1
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libstdc++.so.6.0.25
--4664-- Reading syms from /usr/lib/libgcc_s.so.1
--4664-- REDIR: 0x4d40990 (libc.so.6:memcpy) redirected to 0x484d1c0 (memcpy)
--4664-- REDIR: 0x4d3f0d0 (libc.so.6:rindex) redirected to 0x484b040 (rindex)
--4664-- REDIR: 0x4d3a5b0 (libc.so.6:malloc) redirected to 0x48480a0 (malloc)
--4664-- REDIR: 0x4d3ebc0 (libc.so.6:strlen) redirected to 0x484b678 (strlen)
--4664-- REDIR: 0x4d3e380 (libc.so.6:strcmp) redirected to 0x484c840 (strcmp)
--4664-- REDIR: 0x4d3f058 (libc.so.6:strncpy) redirected to 0x484b950 (strncpy)
--4664-- REDIR: 0x4d3b3c8 (libc.so.6:calloc) redirected to 0x484a3c0 (calloc)
--4664-- REDIR: 0x4d3fb08 (libc.so.6:strstr) redirected to 0x4850600 (strstr)
--4664-- REDIR: 0x4d3ffd0 (libc.so.6:memchr) redirected to 0x484ca20 (memchr)
--4664-- REDIR: 0x4d42350 (libc.so.6:strchrnul) redirected to 0x484fde0 (strchrnul)
--4664-- REDIR: 0x4d407e0 (libc.so.6:strncasecmp) redirected to 0x484c1c0 (strncasecmp)
--4664-- REDIR: 0x4d3ac10 (libc.so.6:free) redirected to 0x4849270 (free)
--4664-- REDIR: 0x4d3ee9c (libc.so.6:strncmp) redirected to 0x484bef0 (strncmp)
--4664-- REDIR: 0x4d3e270 (libc.so.6:index) redirected to 0x484b1f0 (index)
--4664-- REDIR: 0x4d403d8 (libc.so.6:mempcpy) redirected to 0x484fee0 (mempcpy)
--4664-- REDIR: 0x4d40540 (libc.so.6:stpcpy) redirected to 0x484ec60 (stpcpy)
--4664-- Reading syms from /usr/lib/libnss_files-2.28.so
--4664-- object doesn't have a symbol table
--4664-- REDIR: 0x4d3e480 (libc.so.6:strcpy) redirected to 0x484b790 (strcpy)
--4664-- REDIR: 0x4d40200 (libc.so.6:memset) redirected to 0x484f308 (memset)
--4664-- REDIR: 0x4d3ae60 (libc.so.6:realloc) redirected to 0x484a5f0 (realloc)
--4664-- REDIR: 0x4d40780 (libc.so.6:strcasecmp) redirected to 0x484c0f0 (strcasecmp)
--4664-- REDIR: 0x4d400c0 (libc.so.6:bcmp) redirected to 0x484eaf0 (bcmp)
--4664-- REDIR: 0x4d40980 (libc.so.6:memmove) redirected to 0x484f3d0 (memmove)
--4664-- REDIR: 0x4da1f28 (libc.so.6:__memcpy_chk) redirected to 0x48504f8 (__memcpy_chk)
--4664-- REDIR: 0x4da1f48 (libc.so.6:__memmove_chk) redirected to 0x484fd68 (__memmove_chk)
--4664-- Reading syms from /usr/lib/libnss_mdns_minimal.so.2
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libnss_dns-2.28.so
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libnss_mymachines.so.2
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/librt-2.28.so
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libcap.so.2.26
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libmount.so.1.1.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libblkid.so.1.1.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libuuid.so.1.3.0
--4664-- object doesn't have a symbol table
--4664-- Reading syms from /usr/lib/libnss_myhostname.so.2
--4664-- object doesn't have a symbol table
--4664-- Discarding syms at 0x788c150-0x78933ec in /usr/lib/libnss_files-2.28.so (have_dinfo 1)
--4664-- Discarding syms at 0x7fb3ee0-0x7fb5584 in /usr/lib/libnss_mdns_minimal.so.2 (have_dinfo 1)
--4664-- Discarding syms at 0x7fc8e90-0x7fcbc30 in /usr/lib/libnss_dns-2.28.so (have_dinfo 1)
==4664==
==4664== FILE DESCRIPTORS: 4 open at exit.
==4664== Open file descriptor 3: /home/xogium/valgrind.log
==4664== <inherited from parent>
==4664==
==4664== Open file descriptor 2: /dev/pts/3
==4664== <inherited from parent>
==4664==
==4664== Open file descriptor 1: /dev/pts/3
==4664== <inherited from parent>
==4664==
==4664== Open file descriptor 0: /dev/pts/3
==4664== <inherited from parent>
==4664==
==4664==
==4664== HEAP SUMMARY:
==4664== in use at exit: 418,488 bytes in 84 blocks
==4664== total heap usage: 13,504 allocs, 13,420 frees, 5,094,700 bytes allocated
==4664==
==4664== Searching for pointers to 84 not-freed blocks
==4664== Checked 372,232 bytes
==4664==
==4664== 64 bytes in 2 blocks are still reachable in loss record 1 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x4017557: strdup (in /usr/lib/ld-2.28.so)
==4664== by 0x4013CCF: _dl_load_cache_lookup (in /usr/lib/ld-2.28.so)
==4664== by 0x4008317: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x401197B: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664== by 0x11488F: ??? (in /usr/bin/icecast)
==4664==
==4664== 64 bytes in 2 blocks are still reachable in loss record 2 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x400A997: _dl_new_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400580F: _dl_map_object_from_fd (in /usr/lib/ld-2.28.so)
==4664== by 0x4008157: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x401197B: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664== by 0x11488F: ??? (in /usr/bin/icecast)
==4664==
==4664== 109 bytes in 5 blocks are still reachable in loss record 3 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x4017557: strdup (in /usr/lib/ld-2.28.so)
==4664== by 0x4013CCF: _dl_load_cache_lookup (in /usr/lib/ld-2.28.so)
==4664== by 0x4008317: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400BED7: openaux (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x400C1F7: _dl_map_object_deps (in /usr/lib/ld-2.28.so)
==4664== by 0x40119C3: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664==
==4664== 109 bytes in 5 blocks are still reachable in loss record 4 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x400A997: _dl_new_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400580F: _dl_map_object_from_fd (in /usr/lib/ld-2.28.so)
==4664== by 0x4008157: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400BED7: openaux (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x400C1F7: _dl_map_object_deps (in /usr/lib/ld-2.28.so)
==4664== by 0x40119C3: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664==
==4664== 1,728 bytes in 7 blocks are still reachable in loss record 5 of 11
==4664== at 0x484A464: calloc (vg_replace_malloc.c:752)
==4664== by 0x400F1B3: _dl_check_map_versions (in /usr/lib/ld-2.28.so)
==4664== by 0x40119FB: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664== by 0x11488F: ??? (in /usr/bin/icecast)
==4664==
==4664== 2,382 bytes in 2 blocks are still reachable in loss record 6 of 11
==4664== at 0x484A464: calloc (vg_replace_malloc.c:752)
==4664== by 0x400A727: _dl_new_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400580F: _dl_map_object_from_fd (in /usr/lib/ld-2.28.so)
==4664== by 0x4008157: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x401197B: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664== by 0x11488F: ??? (in /usr/bin/icecast)
==4664==
==4664== 5,904 bytes in 5 blocks are still reachable in loss record 7 of 11
==4664== at 0x484A464: calloc (vg_replace_malloc.c:752)
==4664== by 0x400A727: _dl_new_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400580F: _dl_map_object_from_fd (in /usr/lib/ld-2.28.so)
==4664== by 0x4008157: _dl_map_object (in /usr/lib/ld-2.28.so)
==4664== by 0x400BED7: openaux (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x400C1F7: _dl_map_object_deps (in /usr/lib/ld-2.28.so)
==4664== by 0x40119C3: dl_open_worker (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4011537: _dl_open (in /usr/lib/ld-2.28.so)
==4664== by 0x4DCF05B: do_dlopen (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFBC7: _dl_catch_exception (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCFC77: _dl_catch_error (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF16B: dlerror_run (in /usr/lib/libc-2.28.so)
==4664== by 0x4DCF21B: __libc_dlopen_mode (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6667: nss_load_library (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB6F27: __nss_lookup_function (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB7183: __nss_next2 (in /usr/lib/libc-2.28.so)
==4664== by 0x4DB772B: __nss_endent (in /usr/lib/libc-2.28.so)
==4664== by 0x4DA6EFF: endhostent (in /usr/lib/libc-2.28.so)
==4664==
==4664== 57,344 bytes in 14 blocks are indirectly lost in loss record 8 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x4C7CDB7: ogg_stream_init (in /usr/lib/libogg.so.0.8.3)
==4664== by 0x1310B3: ??? (in /usr/bin/icecast)
==4664==
==4664== 114,688 bytes in 14 blocks are indirectly lost in loss record 9 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x4C7CDC7: ogg_stream_init (in /usr/lib/libogg.so.0.8.3)
==4664== by 0x1310B3: ??? (in /usr/bin/icecast)
==4664==
==4664== 229,376 bytes in 14 blocks are indirectly lost in loss record 10 of 11
==4664== at 0x4848114: malloc (vg_replace_malloc.c:299)
==4664== by 0x4C7CDA7: ogg_stream_init (in /usr/lib/libogg.so.0.8.3)
==4664== by 0x1310B3: ??? (in /usr/bin/icecast)
==4664==
==4664== 408,128 (6,720 direct, 401,408 indirect) bytes in 14 blocks are definitely lost in loss record 11 of 11
==4664== at 0x484A464: calloc (vg_replace_malloc.c:752)
==4664== by 0x131097: ??? (in /usr/bin/icecast)
==4664==
==4664== LEAK SUMMARY:
==4664== definitely lost: 6,720 bytes in 14 blocks
==4664== indirectly lost: 401,408 bytes in 42 blocks
==4664== possibly lost: 0 bytes in 0 blocks
==4664== still reachable: 10,360 bytes in 28 blocks
==4664== suppressed: 0 bytes in 0 blocks
==4664==
==4664== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==4664== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==4664== could not unlink /tmp/vgdb-pipe-from-vgdb-to-4664-by-root-on-???
==4664== could not unlink /tmp/vgdb-pipe-to-vgdb-from-4664-by-root-on-???
==4664== could not unlink /tmp/vgdb-pipe-shared-mem-vgdb-4664-by-root-on-???
```Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2370Url events don't work when an "action" option is configured2019-02-02T04:30:49Zspr0cketeerUrl events don't work when an "action" option is configured```
<event-bindings>
<event type="url" trigger="source-connect">
...
...
<option name="action" value="mount_add" />
```
Bug is in event_url.c:event_get_url()
https://gitlab.xiph.org/xiph/icecast-server/blob/master/s...```
<event-bindings>
<event type="url" trigger="source-connect">
...
...
<option name="action" value="mount_add" />
```
Bug is in event_url.c:event_get_url()
https://gitlab.xiph.org/xiph/icecast-server/blob/master/src/event_url.c#L134
Should be `free(self->action)` not `free(self->url)`https://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/2368Sending of fallback files is not rate limited2018-12-18T23:49:04ZBo AndersonSending of fallback files is not rate limitedCurrently (2.4.2 Linux), fallback files are sent at an uncapped rate which could be potentially several times faster than the playback bitrate. This causes `fallback-override` to be very ineffective. Because we are sending the files fast...Currently (2.4.2 Linux), fallback files are sent at an uncapped rate which could be potentially several times faster than the playback bitrate. This causes `fallback-override` to be very ineffective. Because we are sending the files faster than the client plays it back, its buffer gets fuller and fuller until it reaches its limit of what is potentially several minutes or hours worth of fallback file audio to play. When the client is moved back to the original mountpoint, they have to wait until they've played all of this extra fallback audio before reaching the live stream again which at that point will be very delayed compared to the the incoming stream.
Instead, the fallback files should be rate limited so that it only sends at most its playback bitrate every second. It may well be this bitrate has to be given in the form of a setting, but I feel this is an important issue to fix regardless.
---
(Migrated from https://github.com/xiph/Icecast-Server/issues/28)https://gitlab.xiph.org/xiph/icecast-server/-/issues/2367Add ability to define which port Icecast should consider to be world reachable2018-12-16T23:05:43ZRemco BrinkAdd ability to define which port Icecast should consider to be world reachableI'm running Icecast in a reverse proxy setup with nginx, where nginx is taking care of SSL. Two listeners are configured, port 8000 on 127.0.0.1 for the nginx reverse proxy and port 8080 on 0.0.0.0 for clients to access streams. This set...I'm running Icecast in a reverse proxy setup with nginx, where nginx is taking care of SSL. Two listeners are configured, port 8000 on 127.0.0.1 for the nginx reverse proxy and port 8080 on 0.0.0.0 for clients to access streams. This setup allows me to serve my playlists over HTTPS, but unfortunately the generated m3u files now point to the incorrect port (8000, which only listens on 127.0.0.1).
Adding a configuration parameter that lets me specify which port I want to use for reporting to YP as well as which port Icecast should use in the generated m3u files would seem to solve this problem.
A patch was created by [Damien Garrido](https://damiengarrido.wordpress.com/2015/03/22/icecast-reachable-behind-reverse-proxy/) that solves this problem by adding an `<exposed-port></exposed-port>` configuration variable. Having this functionality included in Icecast would be a great help.
[exposed_port.icecast.patch](/uploads/803334e218a7f4e8c51aad38673ae9c7/exposed_port.icecast.patch)https://gitlab.xiph.org/xiph/icecast-server/-/issues/2366Icecast does list POST support for Admin interface but has it disabled for le...2019-02-02T04:30:49ZPhilipp SchafftIcecast does list POST support for Admin interface but has it disabled for legacy-global-sourceIcecast lists POST support in it's Allow. However it is by default disabled for legacy-global-source on admin/. POST should be allowed as well.Icecast lists POST support in it's Allow. However it is by default disabled for legacy-global-source on admin/. POST should be allowed as well.Philipp SchafftPhilipp Schafft2018-12-14https://gitlab.xiph.org/xiph/icecast-server/-/issues/2365Discussion on the handling of portless Host:-headers2020-10-11T15:59:37ZPhilipp SchafftDiscussion on the handling of portless Host:-headersKarl updated Icecast in 64d2fc1faa46cf98b0576521c4975d3ae43ff252 to ignore Host:-headers that do not include a port. This was done due to the fact that winamp and foobar2000 do send invalid Host:-headers. They do not include the port eve...Karl updated Icecast in 64d2fc1faa46cf98b0576521c4975d3ae43ff252 to ignore Host:-headers that do not include a port. This was done due to the fact that winamp and foobar2000 do send invalid Host:-headers. They do not include the port even if non-default ports are used. When this header is used this results in invalid playlists to be generated. (Other (future) uses such as vhosting may also be affected).
foobar2000 seems to have fixed this. This was the result of a quick test with @laama. Thanks to him.
Winamp 5.53 1898 Beta from 2008 as well as Winamp 5.8 as downloaded today are still affected.
The following solution and workarounds come to mind:
* Nullsoft fixes their software. (Judge yourself if this is going to happen.) This is the only solution. It is the only correct way to do this.
* Keep ignoring Host:-headers that do not include a port. This may break legitimate clients.
* Try to match Host:-headers against listen sockets. This may break vhosting.
* Implement a way to list valid vhosts and set default vhosts per listen socket.
* Ignore Host:-headers without a port but implement a per listen socket default vhost setting.
Note that we can not accept/reject Host:-headers without port based on if we listen on a default port socket or not without type="virtual" listen sockets. This will otherwise break all kinds of redirects.
This ticket is mostly for discussion.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2364https stream play 1 second and stop2019-05-13T11:56:47ZMichelhttps stream play 1 second and stopWe have sometimes a problems with playing in https on Icecast v 2.4.3 it starts playing and stops after a second.
But only an issue on https, the http streams are fine. When we restart the Icecast it works fine for days.
Yesterday i bul...We have sometimes a problems with playing in https on Icecast v 2.4.3 it starts playing and stops after a second.
But only an issue on https, the http streams are fine. When we restart the Icecast it works fine for days.
Yesterday i bult a new RPM for Icecast 2.4.4 on the last version of CentOS Linux release 7.6.1810 (Core) include the openssl update. (OpenSSL 1.0.2k-fips 26 Jan 2017)
I run it on the debug mode (4). Tonight i have the same problem on https on mount /live a mp3 192k stream. It play 2 seconds and stop. (when i try to use include .m3u so https.../live.m3u he go to http in the software player)
Here is the debug error log. I hope you find them useful (see /live) :
```
[2018-12-09 21:29:07] DBUG auth/add_authenticated_listener client authenticated, passed to source
[2018-12-09 21:29:07] DBUG source/source_main Client added for mountpoint (/live)
[2018-12-09 21:29:07] INFO source/source_main listener count on /live now 1
[2018-12-09 21:29:07] DBUG format/format_check_http_buffer processing pending client headers
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global clients (15)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global connections (52301)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global clients (16)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global connections (52302)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update "/flac.flac" total_bytes_read (18373627904)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update "/flac.flac" total_bytes_sent (82768157916)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global client_connections (50480)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update "/live" listeners (1)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global listeners (12)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global listener_connections (11687)
[2018-12-09 21:29:07] DBUG client/client_send_bytes Client connection died
[2018-12-09 21:29:07] DBUG source/source_main Client removed
[2018-12-09 21:29:07] INFO source/source_main listener count on /live now 0
[2018-12-09 21:29:07] DBUG auth/add_listener_to_source max on /live is 400 (cur 0)
[2018-12-09 21:29:07] DBUG auth/add_listener_to_source Added client to /live
[2018-12-09 21:29:07] DBUG auth/add_authenticated_listener client authenticated, passed to source
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global listeners (11)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global clients (15)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update "/live" listeners (0)
[2018-12-09 21:29:07] DBUG stats/modify_node_event update global client_connections (50481)
[2018-12-09 21:29:07] DBUG source/source_main Client added for mountpoint (/live)
[2018-12-09 21:29:07] INFO source/source_main listener count on /live now 1
[2018-12-09 21:29:07] DBUG format/format_check_http_buffer processing pending client headers
[2018-12-09 21:29:07] DBUG client/client_send_bytes Client connection died
[2018-12-09 21:29:07] DBUG source/source_main Client removed
[2018-12-09 21:29:07] INFO source/source_main listener count on /live now 0
```
Best regards,
Michelhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2363Use of `<shoutcast-compat>` results in unexpected behaviour2020-10-11T09:01:32ZPhilipp SchafftUse of `<shoutcast-compat>` results in unexpected behaviourWhen setting `<shoutcast-mount>` within `<listen-socket>` two sockets will be created:
* A normal one with the shoutcast mount set
* A second one at (`port` + 1) with shoutcast mount set as ICY source port (`<shoutcast-compat>` set).
Ho...When setting `<shoutcast-mount>` within `<listen-socket>` two sockets will be created:
* A normal one with the shoutcast mount set
* A second one at (`port` + 1) with shoutcast mount set as ICY source port (`<shoutcast-compat>` set).
However you can set `<shoutcast-compat>` manually. In this case also two ports are opened at `port` and `port` + 1 with both being identical in configuration.
The code uses the following condition to check if the extra socket must be created:
```c
if (listener->shoutcast_mount) {
```
However I think it should be:
```c
if (listener->shoutcast_mount && !listener->shoutcast_compat) {
```
This will prevent the listen socket on `port` + 1 to be created.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2362Document the unit of max-listener-duration2018-12-04T09:23:19ZnaitsirchDocument the unit of max-listener-durationIn the config documentation about the setting `max-listener-duration` it is said
> An optional value which will set the length of time a listener will stay connected to the stream.
> An auth component may override this.
See http://www....In the config documentation about the setting `max-listener-duration` it is said
> An optional value which will set the length of time a listener will stay connected to the stream.
> An auth component may override this.
See http://www.icecast.org/docs/icecast-2.4.1/config-file.html
But it is not defined if this should be given in seconds or minutes.2018-12-04https://gitlab.xiph.org/xiph/icecast-server/-/issues/2361Remove RAWURI values from URL auth2018-11-27T09:57:57ZPhilipp SchafftRemove RAWURI values from URL authCurrently the URL auth system transmits the RAWURI value if available as "mount"-parameter. This includes query strings. However it does not include POST parameters (therefore is inconsistent).
This should be deprecated and only the res...Currently the URL auth system transmits the RAWURI value if available as "mount"-parameter. This includes query strings. However it does not include POST parameters (therefore is inconsistent).
This should be deprecated and only the resource the user connected to should be included.
It must be discussed if it should transmit the original resource name (before `<resource>` processing) if they differ.
See also: #2360.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2360Document and define query string and POST parameters2022-03-11T12:47:10ZPhilipp SchafftDocument and define query string and POST parametersThe currently existing parameters should be documented.
Also it should be one or more or a prefix for custom parameters be defined for user specific data.
* The value(s) should be send to logging,
* the value(s) should be send to auth,
...The currently existing parameters should be documented.
Also it should be one or more or a prefix for custom parameters be defined for user specific data.
* The value(s) should be send to logging,
* the value(s) should be send to auth,
* the value(s) may be send to (fast)events.
A single value like 'token' or 'etoken' (e ➔ external) would be easy and secure to implement. However a user that needs multiple values must encode them into a single value themselfs in that case.
On the other paw a prefix could be defined (such as 'e-', e ➔ external) that is considered 'safe' (as in not used by Icecast or any future version) even if not used. This would allow future extension at some point.
currently the following parameters are universal:
* omode
* mount
The admin/-interface uses more parameters.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2359`<listen-socket>` does not support `<http-headers>`2020-10-15T20:42:13ZPhilipp Schafft`<listen-socket>` does not support `<http-headers>`Currently `<listen-socket>` does not support `<http-headers>` as a child. While I see little reason to use this there is no reason why this should not work.Currently `<listen-socket>` does not support `<http-headers>` as a child. While I see little reason to use this there is no reason why this should not work.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2358Improve Icecast's logging of developer only messages2019-04-23T13:54:32ZPhilipp SchafftImprove Icecast's logging of developer only messagesCurrently Icecast logs many details that are only of interest to developers. Those lines "spam" the error log.
There should be a way to disable those messages. This could happen using the well-known DEBUG macro OR by adding another log ...Currently Icecast logs many details that are only of interest to developers. Those lines "spam" the error log.
There should be a way to disable those messages. This could happen using the well-known DEBUG macro OR by adding another log level or log flag (as those messages may themself have different log levels as per their logic).Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2357Alias for <role type="anonymous" deny-all="*">2018-11-13T09:03:30ZPhilipp SchafftAlias for <role type="anonymous" deny-all="*">@ePirat suggested that it would be nice to have an alias for <role type="anonymous" deny-all="*"> that only accepts matching options as well as deny-options. His main reason was to help users not to in-correctly use allow-all="*" as they...@ePirat suggested that it would be nice to have an alias for <role type="anonymous" deny-all="*"> that only accepts matching options as well as deny-options. His main reason was to help users not to in-correctly use allow-all="*" as they may not understand that it actually *is* the opposite of deny-all="*".
Maybe this should be more generalized and a kind of access profiles should be used like:
* deny-all
* listener
* source client
* admin
See also: #2353Thomas B. RückerThomas B. Rückerhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2356Icecast does not handle HTTP Upgrade as to RFC2018-12-14T03:48:15ZPhilipp SchafftIcecast does not handle HTTP Upgrade as to RFCCurrently Icecast 2.5.x does not handle HTTP upgrades correctly. It does not send the final reply to the request doing the upgrade.Currently Icecast 2.5.x does not handle HTTP upgrades correctly. It does not send the final reply to the request doing the upgrade.Philipp SchafftPhilipp Schafft