IceLink 3 Release Notes


  • Feature: Async LogProviders;
  • Feature: ActiveX CAB now in Libraries and Web Example;
  • Feature: Modified some internal naming conventions to help ensure the App Store doesn't mistakenly flag certain API calls;
  • Feature: Packaged native libs into jars to simplify platform detection and deployment;
  • Feature: Added Unit, Pair, and Tuple convenience methods;
  • Feature: Updated Connection's ORTC wrappers to map to/from rtcp-fb and fmtp media attributes;
  • Feature: Beefed up the NET/Server example.
  • Bug fix: Xamarin iOS audio quality has been improved due to some performance improvements in the audio source;
  • Bug fix: Fixed a bug in iOS where TCPSocket was using main thread;
  • Bug fix: Ensured that ICE Gatherer does not prematurely transition to Completed state when a SocketManager fails immediately on startup;
  • Bug fix: Fixed a bug where the VideoToolbox h.264 decoder was not blocking decode on pending keyframes;
  • Bug fix: Fixed a bug in Xamarin where enabling recording caused null reference exception in iOS;
  • Bug fix: Fixed console/dom log provider bug in TypeScript/JavaScript;
  • Bug fix: Resolved an issue which caused Java screen source to not raise frames.


  • Feature: ActiveX support has been added along with an example of how to build and sign your own cabs;
  • Feature: Experimental support for Unity via libraries and API docs has been added;
  • Feature: Several performance enhancements have been made for Xamarin and Mono;
  • Feature: Feature: RTP Transport is now factoring in round trip times when sending NACKs to help reduce network congestion;
  • Feature: More robust detection of connectivity loss on a given CandidatePair has been added. A particular CandidatePair is reported to have lost connectivity after 3,000 ms. A stream is reported to have lost connectivity when all the CandidatePairs remain in the lost connectivity state for 10,000 ms (this value can be chnaged via the Connection.DeadStreamTimeout interface).
  • Feature: Resolved a bug preventing full connectivity establishment when RTP/RTCP multiplexing was disabled (for Audio and Video streams);
  • Feature: Resolved a casting issue for SRControlFrames;
  • Feature: Added support for non-zero, and unsynced audio / video source presentation timestamp start-points;
  • Feature: Fixed FEC disable bug and Opus Encoder quality/bitrate bug;
  • Feature: Resolved a bug in UI thread for Xamarin.Android;
  • Feature: OpenGLView in Xamarin.iOS is no longer throwing an exception on startup;
  • Feature: TypeScript no longer causes a crash when Video is set to false;
  • Feature: FM.IceLink.NAudio no longer causes clipping.


  • Bug Fix: Ensured that ICE Gathering does not shut down when TURN allocation fails in certain fatal cases on a given socket. Instead, ICE connectivity check is still conducted for local host candidatesl
  • Bug Fix: Ensured that fatal Socket Manager and Gatherer errors are reported to Connection when Connection fails due to fatal issues on those levels;
  • Bug Fix: Fixed a bug causing stack overflow on macOS TURN server running on macOS Sierra 10.12.3 beta 2;
  • Bug Fix: Fixed a bug where server reflexive candidates were not raised to Connection when prepared based upon PublicIPAddresses property of Connection. Added additional logging when creating Gatherers;
  • Bug Fix: Resolved issue in RTCP Sender Report's RTP timestamp;
  • Bug Fix: Resolved issue in RTCP report feedback where ReceptionReportCount wasn't being set in Sender Reports causing malformed error in some versions of Chrome.


  • Feature: Added support for Xamarin iOS, Android, along with examples for iOS, Android and Forms.
  • Feature: DataBuffer pooling is now enabled in the media layer. DataBuffers will now get reused to prevent Garbage Collection from running as often.
  • Feature: Added new DTLS algorithm profiles to ensure compatibility with other services.
  • Feature: Support for some atomic operations.
  • Feature: Removing SDES support from SDP offers for compatibility with Chrome 57.
  • Feature: Changed Serializer to JsonSerializer.
  • Feature: Removed LegacyCandidate and LegacyOfferAnswer.
  • Bug Fix: Resolved issue where RTP Timestamp was not being synchronized with first RTP packet timestamp.
  • Bug Fix: Resolved issue where RTCP report blocks were not being sent with sender reports.
  • Bug Fix: Resolved TypeScript build issues so latest JavaScript examples are up to date.
  • Bug Fix: Updated .NET ScreenCaptureProvider to handle locked screens.
  • Bug Fix: Resolved a bug where ICE failed when connecting to Firefox 50 and above due to changed ICE Candidate transport type declaration.
  • Bug Fix: Resolved a bug where application was crashing on generation of odd-length DTLS fingerprints.
  • Bug Fix: Updated Java UI example to ensure that application does not crash when Data Channels text box has small size.


  • Feature: Improved efficiency of socket error reporting.
  • Feature: Updated Android Build tools to 25.0.1 for Android example.
  • Bug Fix: Resolved issue where inputs were unable to be set in JavaScript/TypeScript.
  • Bug Fix: Fixed a bug where Connection was raising Closing and Closed states twice on shutdown in JavaScript.
  • Bug Fix: Fixed a bug where Error property of Connection was sometimes not set on transition to Failing and Failed states.
  • Bug Fix: Upgraded TCP Socket implementation for Cocoa to CocoaAsyncSocket 7.5.1 fixing issues with deallocated memory access on TCP socket shutdown.
  • Bug Fix: Local peer-to-peer connectivity is now established when no STUN servers are specified.
  • Bug Fix: Fixed a bug preventing from obtaining allocations from the Java-based TURN servers.
  • Bug Fix: Resolved issue causing null reference exceptions under certain scenarios when DNS resolution failed.


  • Feature: Added jniLibs for win_x86, win_x64.
  • Feature: Added experimental jniLibs for linux_x86, linux_x64, armv8, and arm64.
  • Feature: Added screen sharing to iOS and Android Chat examples.
  • Feature: Added Java Server example.
  • Feature: Implemented SCTP RFC 7053 SACK-IMMEDIATELY, where SCTP transport can request acknowledgments from peer. Optimised SCTP acknowledgment generation and dispatch.
  • Feature: Internet protocol used to discover candidates is now logged for local candidates, making it easier to identify which candidates were discovered over TCP.
  • Bug Fix: Resolved issue where after backgrounding and foregrounding iOS app, video was not being rendered.
  • Bug Fix: Several bug fixes around hard disconnects of turning off and on WiFi in ongoing conference.
  • Bug Fix: Android Chat example now keeps screen on during a call.
  • Bug Fix: Resolved a memory leak where rtcp-mux policy was set to null on RemoteDescription.
  • Bug Fix: Resolved video rotation issue on iOS Swift example.
  • Bug Fix: Several UI fixes in Cocoa examples.
  • Bug Fix: Resolved a bug causing disconnection after 30 seconds if a stream attached to Connection started with a direction of inactive.
  • Bug Fix: Connection dead stream timeout is now enforced.
  • Bug Fix: Fixed the issue where LocalCandidates that were raised as a part of SDP Session Description were not raised through via the OnLocalCandidate event. Such Candidates have their Dispatched property set.


  • Initial release.