[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
details.
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.
OPTIONS Support
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.
Tests
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.
refobject
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:
https://icecast.org/contact/#contact-info
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