6.13.2 (May 2020)¶
To install Kurento Media Server: Installation Guide.
kms-datachannelexampleplugin package has been restored and is now again available in the Apt package repository. This plugin is needed to run the WebRTC DataChannel Tutorials.
All Kurento Media Server Docker images now come with Debug Symbols already installed. This means that in case of a server crash, the process output will contain a useful stack trace that includes file names and line numbers of the exact point in source code where the error happened.
This is very helpful for writing useful bug reports.
BaseRtpEndpoint’s event MediaStateChangedEvent documentation has been rewritten, so now it contains a better explanation of what exactly is reported by this event.
Media server’s Secure WebSocket connections (
wss://as opposed to
ws://) is now using TLS 1.2 instead of the old TLS 1.0, which has been deprecated by most web browsers.
Previously, this method was wrongly returning the current value of a different property:
The server’s WebSocket connection now seamlessly falls back to IPv4 when IPv6 was enabled in the config but the system didn’t support it (commit Kurento/kurento-media-server@4e543d0).
Before this fix, having enabled IPv6 in the config (
/etc/kurento/kurento.conf.json) would mean that the WebSocket connection had to be done through IPv6. Otherwise, an unhelpful message “
Underlying Transport Error” would show up and the server wouldn’t start.
Properly reject multiple
m=lines in SDP messages (commit Kurento/kms-core@6a47630).
Ignore invalid mDNS ICE candidates. This will prevent trying to handle unresolved mDNS candidates from Chrome or any other browser that might generate such kind of candidates (commit Kurento/kms-elements@44ca3de).
With this change, any mDNS candidates that don’t belong to the local network, or otherwise cannot be resolved to an IP address for whatever reason, will be silently ignored instead of causing warning messages in the log.
The libnice library is a core part of our WebRTC implementation, because it handless all of the ICE process (candidate gathering and connectivity checking). It has now been updated to the latest version 0.1.16, which brings lots of improvements and fixes.
Some of the most relevant changes are:
This bug was affecting some users of Kurento, and caused that the whole process was aborted when libnice encountered an unexpected change of internal states. This now should be fixed, making the server more robust and reliable.
Commit 099ff65c introduced the feature of ignoring by default network interfaces from virtual machines and containers. So, from now on Kurento will ignore interface names that start with “docker”, “veth”, “virbr”, and “vnet”.
This change reduces the amount of work that the ICE protocol needs to do when trying to establish WebRTC connections with remote peers, thus having the connectivity tests be much quicker. It also prevents some edge cases where libnice selected a virtual network interface as the best possible candidate, which would have Kurento sending and/or receiving streams in convoluted loopbacks through the local virtual devices.
You can complement this with the
networkInterfacesparameter of WebRtcEndpoint (either with
Version 0.1.16 of libnice also introduced a backwards-breaking change that might negatively affect applications that use this library: nice_agent_remove_stream() was silently made asynchronous.
This change broke the usage inside Kurento, which assumed the previous behavior of assuming a synchronous method. For sample code that shows how we worked around this issue, have a look at commit Kurento/kms-elements@a4c9f35.
This point is noted here to warn other application owners about this issue. If you want to track progress on this change, see the previous link for the bug report we opened.
There were other changes and fixes contributed by users, who merit our sincere appreciation and thanks for sharing their work with the Kurento project: