6.14.0 (June 2020)
This new release of Kurento is following the previously set path of focusing in stability and fixing bugs. Some critical issues have been solved, related to high CPU usage on real-world deployments that were supporting lots of users, so don’t hesitate to update your media servers!
To install Kurento Media Server: Installation Guide.
Changed
Deleted inline WebSocket++ sources.
WebSocket++ (websocketpp) is the library that provides WebSocket support for Kurento Media Server. Up until now, the whole source code of this library was included in the Kurento Media Server source tree, but it wasn’t being updated accordingly to the new developments of other dependent libraries, such as newer versions of OpenSSL. This was causing build issues for some users, so starting from Kurento 6.14.0, we’ve deleted all websocketpp source code from our tree, and instead will be depending on the websocketpp packages that are provided by the Operating System itself (Ubuntu package libwebsocketpp-dev).
The change doesn’t affect client applications of Kurento, but it will be good news for people who were building KMS from sources.
Reduced default log levels for WebRTC-related modules.
Some basic operations, such as SDP Offer/Answer negotiations, ended up logging thousands of lines that don’t really convey anything useful in a typical deployment, and can make it harder to find other more interesting messages. For this reason, the bulk of general messages that are part of WebRTC have been modified from
INFO
toDEBUG
log level (see Debug Logging).Flexible TLS negotiation for Secure WebSocket. Kurento 6.13.2 moved towards using TLS 1.2 with its Secure WebSocket control endpoint, as a response to all of the most used browsers moving away from previous versions of TLS. This applies to applications that are written in Browser JavaScript, and want to connect directly from the browser to the JSON-RPC port of Kurento media Server.
However, for greater flexibility, we have now changed this to allow a flexible security negotiation with clients. Instead of forcing that clients connect with the Secure WebSocket using a fixed version of TLS 1.2, the server (OpenSSL behind the scenes) is now allowed to negotiate the highest version of TLS supported by the client, among TLS 1.0, TLS 1.1, and TLS 1.2.
Note that TLS 1.3 is not supported yet by OpenSSL 1.0.2, which is the version used on Ubuntu 16.04 Xenial. However, when we finish migration to more modern OS versions, newer OpenSSL versions in the system will mean that Kurento will implicitly support TLS 1.3 too.
Fixed
Locked 100% CPU when releasing multiple Endpoints.
This issue was affecting a good number of installations. There was a severe performance penalty in the disconnection process between Endpoints, so in scenarios with a lot of connections, there was a good probability that the CPU got locked in a permanent 100% CPU usage loop.
An example of this would be one-to-many scenarios (1:N), were a single presenter would be sending video to some hundredth consumers. When the producer disconnected their WebRtcEndpoint, trying to disconnect so many consumers would almost always trigger the issue.
More info can be found in the related Pull Request: Workerpool rewrite.
Fix recording of AAC audio with MKV.
The MKV profile uses AAC audio, but due to wrong settings it was actually not working. The Agnosticbin component in Kurento would get confused and fail to find an acceptable encoder to perform the audio transcoding, and the recording would end up not working with an infinite stream of ERROR messages.
Thank You
There were other changes and fixes contributed by users, who merit our sincere appreciation and thanks for sharing their work with the Kurento project:
doc-kurento
@alexnum (Alessandro) for Kurento/doc-kurento#4 (Handling self-signed certificates in nodeJs).
@piyushwadhwani for Kurento/doc-kurento#5 (adapting to newer version of spring boot).
kms-core
@pmlocek for Kurento/kms-core@2f144b5 (fix: segfault in KmsIRtpSessionManager).
kurento-jsonrpc-js
@JoseGoncalves (José Miguel Gonçalves) for Kurento/kurento-jsonrpc-js#6 (Fix transportMessage).
kurento-tutorial-java
@hgcummings (Harry Cummings) for Kurento/kurento-tutorial-java#14 (Increase max text message buffer size for websocket connections).
kurento-utils-js
@simoebenhida (Mohamed Benhida) for Kurento/kurento-utils-js#30 (Refactor deprecated syntax), and @oscar-mnfuentes for Kurento/kurento-utils-js#32 (Fix promise call in setDescription to make compatible with safari).