<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">The software is available in deb format for the latest Ubuntu and Debian Linux versions and as source code.</div><div class=""><br class=""></div><div class=""><div class=""><a href="http://sylkserver.com/download/" class="">http://sylkserver.com/download/</a></div></div><div class=""><br class=""></div><div class="">Changelog</div><div class=""><br class=""></div>sylkserver (5.0.0)<br class="">.<br class="">   * [webrtcgateway] Removed bogus attributes<br class="">   * [webrtcgateway] Fixed exception handling for validating json model<br class="">   * [webrtcgateway] Cleanup accounts when the client connection is lost<br class="">   * Removed data duplication and inconsistent attributes<br class="">   * Fixed argument types<br class="">   * Moved DNS lookup log message to debug level<br class="">   * Simplified building the result of the DNS lookup<br class="">   * Simplified and fixed DNS lookup when no outbound proxy is involved<br class="">   * Generalized sylkrtc json model mapping<br class="">   * Removed unnecessary default value<br class="">   * Avoid duplicate indexing when getting the data<br class="">   * Use python3 compatible form for except statements<br class="">   * Avoid unnecessary attach/detach in janus if DNS lookup fails<br class="">   * Added debug_level setting to ServerConfig<br class="">   * Added ability to toggle between configured log level and debug at runtime<br class="">   * Removed unused import and order imports alphabetically<br class="">   * Set videoroom bitrate to overwrite janus' low default of 256Kb/s<br class="">   * Added API call to allow a client to update session parameters on the fly<br class="">   * Register atexit handler to dump memory debug info<br class="">   * Simplified and enhanced application loading/accessing code<br class="">   * Fixed spurious SIPApplicationWillStart post and handling early stop<br class="">   * The __init__ method should not return any value<br class="">   * Made policy matching logic consistent and simplified code<br class="">   * Refactored logging<br class="">     - Updated code to use the new logging features from python-application.<br class="">     - Rewrote system logging to be more readable and easier to interpret.<br class="">     - Implemented trace loggers based on notifications to separate and<br class="">       isolate them from the code that generates the trace log events.<br class="">     - Added a trace logger for DNS lookups.<br class="">   * Added bitrate and video_codec configuration options for video rooms<br class="">   * Fully cleanup the connection handler resources when client disconnects<br class="">   * Simplified getting the session with the handle_id<br class="">   * Rewrote VideoRoomSessionContainer to not use weak references.<br class="">     When sessions were removed from the container, there was no guarantee<br class="">     that there was no other reference to them somewhere else in the code,<br class="">     which would cause dangling id-to-session mappings to be kept around<br class="">     in the container for undetermined periods of time.<br class="">   * Renamed VideoRoomSessionContainer to SessionContainer<br class="">   * Fixed order of operations during ConnectionHandler cleanup<br class="">   * Added PublisherFeedContainer class for holding videoroom publisher feeds<br class="">   * Use SessionContainer to hold SIP sessions instead of using 2 mappings<br class="">   * Provide more context in log messages to identify where they're generated<br class="">   * Changed default max_bitrate value from 4Mb/s to 2Mb/s<br class="">   * Automatically adjust participant bitrate based on number of participants<br class="">   * Do not warn about missing session (it might've been destroyed elsewhere)<br class="">   * Do session cleanup after all processing<br class="">   * Separated session hangup event handler<br class="">   * Simplified handling hangup events as they do not have an associated code<br class="">   * Eliminated delays when deleting sessions and video rooms<br class="">   * Avoid an unnecessary base session lookup<br class="">   * Verify that the detached feed belongs to the requester<br class="">   * Use dict constructors instead of dict literals for readability<br class="">   * Fixed race condition when deleting SIP session<br class="">   * Fixed exception while deleting subscriber sessions during hangup events<br class="">   * Use discard as session might not be yet added to the video room<br class="">   * Handle JanusError exceptions and relay errors back to client<br class="">   * Properly release resources when getting JanusError exceptions<br class="">   * Do not treat DNS lookup errors as API errors<br class="">   * Fixed invite to conference to not include oneself<br class="">   * Simplified finding the invited accounts<br class="">   * Made method for handling conference invites public<br class="">   * Made VideoRoomContainer consistent by not relying on weak references<br class="">   * Moved video room access validation from ConnectionHandler to VideoRoom<br class="">   * Simplified building request data for SIP calls and registrations<br class="">   * Removed unnecessary room attribute<br class="">   * Simplified code and increased readability<br class="">   * Unified handling of exceptions for the video room join operation<br class="">   * Send back error responses for videoroom-ctl requests with missing fields<br class="">   * Use modern syntax for catching exceptions<br class="">   * Improved PEP-8 compliance<br class="">   * Removed copyright notice from script<br class="">   * Updated license<br class="">   * Use the actual config type and file to find out which files are read<br class="">   * Improved some log messages<br class="">   * Do not log traceback twice<br class="">   * Removed duplication of startup error handling<br class="">   * Added run method on SylkServer<br class="">   * Use SylkServer.run to decouple from SylkServer's internals<br class="">   * Refactored startup script and configuration handling<br class="">     - Removed command line option to specify the pid<br class="">     - Removed command line option to specify the main configuration file<br class="">     - Added a command line option to specify the configuration directory<br class="">     - Added a command line option to specify the runtime directory<br class="">     - The main configuration file name is now immutable (config.ini)<br class="">     - The pid file name is immutable (sylk-server.pid)<br class="">     - All configuration files are now treated consistently<br class="">     - Properly read both local and system wide configurations<br class="">     - Do not initialize the runtime directory when not forking<br class="">   * Simplified the setup.py script and improved PEP-8 compliance<br class="">   * Added requirement on the jsonmodels python package<br class="">   * Do not split statements over multiple lines when not needed<br class="">   * Improve validator efficiency by using objects with a validate method<br class="">   * Do not use slow regular expression for validating SIP URIs<br class="">   * Fixed finding resources when forking and started with a relative path<br class="">   * Log the resources directory on startup<br class="">   * Better names for some of the json model classes<br class="">   * Added LimitedChoiceField for json models<br class="">   * Replaced emdash HTML code with the actual character<br class="">   * Use a local copy of bootstrap.min.css<br class="">   * Updated authors and sponsors<br class="">   * Split videoroom-ctl handler into subhandlers per option<br class="">   * Simplified getting static web resources for webrtcgateway<br class="">   * Make the web resource available as a property<br class="">   * Fixed handling ack messages<br class="">   * Simplified getting the result from janus messages<br class="">   * Added support for setting the active participants in a room<br class="">   * Log unhandled exception details<br class="">   * Only update active participants if different<br class="">   * Added UniqueStringListField JSON model field type<br class="">   * Moved normalization of the active participant list to the JSON model<br class="">   * Use the UniqueStringListField type for the invited participants<br class="">   * Split operation handlers into request and event handlers<br class="">   * Moved boilerplate code out of the request handlers<br class="">   * Moved general exception handling into operation handlers<br class="">   * Wait for the connection to be ready once before processing operations<br class="">   * Added generic sylkrtc request to model mapper<br class="">   * Simplified instantiating sylkrtc models from requests<br class="">   * Removed code that was never reached<br class="">   * Restructured code to avoid unnecessary extra return statements<br class="">   * Removed unnecessary additional private method<br class="">   * Fixed race condition when a connection handler is stopped while starting<br class="">   * Fixed race condition when cleaning up a connection handler while stopping<br class="">   * Removed unnecessary partial function<br class="">   * Simplified keepalive callback<br class="">   * Simplified webrtcgateway package structure<br class="">   * Removed unnecessary references to the janus backend everywhere<br class="">   * Renamed attribute to better reflect its function<br class="">   * Renamed some arguments and variables for clarity<br class="">   * Refactored sending keepalives to be internal to the protocol<br class="">   * Simplified stopping the keepalive timer<br class="">   * Grouped public/private API methods together<br class="">   * Explicitly added protocol methods to JanusBackend<br class="">   * Removed redundant namespace prefix<br class="">   * Optimized code to only send keepalive messages when necessary<br class="">   * Simplified code sending janus requests<br class="">   * Do not allow request arguments to overwrite core attributes<br class="">   * Do not attempt to send messages after the connection was closed<br class="">   * Fixed return value from deferred callback<br class="">   * Fixed error with cancelling already called timer<br class="">   * Replaced dependency on python-jsonmodels with internal module<br class="">     The jsonobjects module was written to replace the functionality<br class="">     provided by jsonmodels while offering the following advantages:<br class="">     - More than 10 times faster<br class="">     - Much lower memory footprint<br class="">     - No need for manual validation<br class="">     - Objects are validated on creation and every time they are modified<br class="">     - Guaranteed data consistency throughout the lifetime of the objects<br class="">     - JSON arrays are first class objects allowing them to be used standalone<br class="">     - JSON arrays can be embedded alowing for multi-dimensional arrays<br class="">     - JSON arrays can define both item and array level validators<br class="">     - Better semantics for optional properties and default values<br class="">   * Added ConnectionHandler.send method to replace notify and _send_response<br class="">   * Renamed VideoRoom to Videoroom in class names<br class="">   * Refactored client API to simplify it and make it consistent<br class="">   * Simplified AbstractProperty getter<br class="">   * Improved data extraction speed by a factor of 2<br class="">   * Have the 'in' operator to check if a property is defined in a JSONObject<br class="">   * Fixed code formatting warnings<br class="">   * Removed unnecessary class<br class="">   * Removed unnecessary util.py module<br class="">   * Optimized returned value<br class="">   * Allow LimitedChoiceProperty to be optional and have a default value<br class="">   * Keep all internal SIP URIs as AORs for consistency<br class="">   * Moved FixedValueProperty and LimitedChoiceProperty to jsonobjects.py<br class="">   * Moved validators to validators.py<br class="">   * Added DisplayNameValidator that removes optional quotes<br class="">   * Added type hinting for sylkrtc models<br class="">   * Fixed DisplayNameValidator to work with empty names<br class="">   * Use JSON models to encode/decode messages to/from Janus<br class="">     - Encapsulated Janus session and plugin handle functionality to classes<br class="">     - Simplified generating Janus requests and processing Janus replies<br class="">     - Correctly handle Janus errors sent as error events in success replies<br class="">     - Split Janus event handlers to improve readability and maintability<br class="">     - Moved data validation to the JSON model validators<br class="">   * Use UTC timestamps in push notifications.<br class="">     The local timezone of sylkserver is both irrelevant for the client that<br class="">     receives the push notification and it's also 20 times slower to generate<br class="">     a server local timestamp than a UTC timestamp (115us vs 6us)<br class="">   * Use JSON models for Firebase push notifications<br class="">   * Added method to send conference invite push notifications<br class="">   * Renamed push notification methods from xyz_session to xyz_call<br class="">   * Simplified signature for the push notification functions<br class="">   * Fixed race condition with cleaning subscriber sessions in conferences<br class="">   * Split debian dependencies one per line<br class="">   * Removed dependency on dummy package<br class="">   * Removed unnecessary version dependencies<br class="">   * Updated debian package description<br class="">   * Improve performance for push notifications by reusing the request<br class="">   * Log push notifications at DEBUG level<br class="">   * Avoid composing log message unless needed<br class="">   * Use log.warning instead of its alias log.warn<br class="">   * Updated python-application version dependency<br class="">   * Updated dependency list in the INSTALL file<br class="">   * Use default sound for push notifications<br class="">   * Send push notifications for conference invite events<br class="">   * Use relative imports for webrtcgateway<br class="">   * Adjusted the WebRTC gateway URL in the sample configuration<br class="">   * Fixed URL class to not mangle template variable<br class="">   * Adjusted conference welcome message<br class="">   * Fixed sending ACK to the wrong address by SofiaSIP<br class="">   * Ignore the Janus SIP plugin ringing event for now<br class="">   * Ignore the Janus SIP plugin progress event for now<br class="">   * Fixed matching empty file:// origins with the latest autobahn<br class="">   * Moved debian dependency to the proper package<br class="">   * Drop support for autobahn older than 0.12<br class="">   * Removed deprecated pycompat/pyversions files<br class="">   * Removed unnecessary .PHONY target<br class="">   * Removed code that prevented sylkserver from restarting on upgrades<br class="">   * Do not install janus configuration files with sylkserver-webrtc-gateway<br class="">   * Removed defaults file<br class="">   * Allow sylkserver to leave a core file when run by systemd<br class="">   * Removed build dependency on obsolete package<br class="">   * Increased debian compatibility to 11<br class="">   * Synced MANIFEST.in file with latest file changes<br class="">   * Rename .ini.sample files to .ini in the debian package<br class="">   * Fixed corrupted sound file names in the deb if name contains spaces<div class=""><br class=""></div><div class="">—</div><div class="">Adrian</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>