[Icecast-dev] About current Icecast development -- developer edition

Philipp Schafft phschafft at de.loewenfelsen.net
Fri Sep 28 08:07:35 UTC 2018

Good afternoon,

earlier today I wrote a mail to the user mailing list about current
status of the current development. As pointed out by Mr. Rücker, it
seems to be good to also write to this list with a bit more technical

Please note that this mail represents current master branch ("2.5.x").
We do recommend to use current stable branch ("2.4.x") for production.
However we welcome every tester and are happy to hear your feedback.

I would like to start with the items I wrote about in my other mail:

TLS Support
        TLS support as been improved over the years within Icecast.
        Icecast currently allows to reloading certificates and allows
        them to be in a different file than the key.
        All the basic functionality is there. But there is a little bit
        more we would like to add. E.g. per listen socket certificates
        and better integration with the authentication system.
        The HTTP method OPTIONS has recently be added to Icecast. It is
        supported on web-type and admin-type requests as well as
        supporting "*"-requests.
        This is a big step for CORS. However CORS support still has some
        room for improvements.
POST Support
        We added support for the HTTP method POST. This is mostly
        important for the admin interface and API.
        Old admin interface and API is now accepting both, GET and POST.
        However we want to move away from GET for all endpoints that
        change the server state as per HTTP specs. Exact path for this
        transition is still open.
Machine readable error codes
        We added an internal representation to Icecast that allows
        machine readable error states and codes. When a request fails a
        response is sent back to the client depending on the
        Accept:-header (as per HTTP specs).
        I plan on sending some more complete info when we did a little
        bit more of cleanup and structuring. At that point I will also
        include hints on how to implement things.

Listen socket improvements
        Listen socket handling has been completely rewritten. This
        already allows a nice set of new features: complete listen
        socket reconfiguration on the fly, virtual/on-behalf-of listen
        sockets that can be useful with many times of gateways, and per
        listen socket authentication.
        This will also allow new features. Such features include
        per-listen-socket TLS certificates.

Relay improvements
        We added support for multiple upstream servers per relay. This
        can be used to have fallbacks and provide a higher availability.
        We also changed the configuration syntax to be more readable.
        This includes support for defining the relay section within the
        mount section.

Fixes, fixes, fixes
        There has been many. Please bear with me that I do not list all
        of them here.
        However, here is a little and incomplete list of fixes since
        v2.5.0-beta.2 (2018-05-07):
              * Corrected TLS socket shutdown
              * Fixed segfault when using htpasswd auth without a
                password file.
              * Fixed several memory leaks.
              * Fixed several header includes to match standards.
              * Clear XSLT cache on reload.
              * Fixed object leak when URL auth is configured with
                listener remove URL.
              * Fixes several locking related bugs. This also fixes
                progress termination by illegal CPU instruction on some
                specific CPUs with some specific versions of pthreads.

What else has happened that is not (yet) relevant for the users?

Admin interface / API
        We made a lot improvements on the admin interface and API. Here
        we worked on all levels: The code that routes requests to the
        individual endpoints got rewritten and is now much more
        universal. It has been updated keeping in mind that we want to
        move on to a new API at some point. The new code supports old
        and new API at the same time for maximal compatibility.
        The XSLT code has been updated. It is now much more streamlined.
        Also the error pages are updated to use the new machine readable
        error code.

Build system
        We updated the build system. This provides a new foundation for
        our future work on the meta structure of our code base.

        Our limited tests have been improved and a number of unit tests
        has been added. This helps us improving the quality of Icecast
        with future releases.

        We unified the API for several types (and more to come) with the
        new refobject metatype. This also allowed us to start migrating
        away from old refbuf to new buffer API.

Module support
        We added a basic module support to Icecast. Currently there is
        no public module that uses it, yet. Yet it will allow future
        development of optional components.

Got curious?
Feel free to try it yourself:
      * https://wiki.xiph.org/Icecast_Server/Getting_Started
      * https://wiki.xiph.org/Icecast_Server/Git_workflow

Also feel free to join us on IRC at #icecast on Freenode. For more
details see:

With best regards,

Philipp Schafft (CEO/Geschäftsführer) 
Telephon: +49.3535 490 17 92

Löwenfelsen UG (haftungsbeschränkt)     Registration number:
Bickinger Straße 21                     HRB 12308 CB
04916 Herzberg (Elster)                 VATIN/USt-ID:
Germany                                 DE305133015
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://lists.xiph.org/pipermail/icecast-dev/attachments/20180928/61537c7f/attachment.sig>

More information about the Icecast-dev mailing list