<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>