libnice 0.1.23 (2025-11-26)
===========================
API: Added option NICE_AGENT_OPTION_CLOSE_FORCED to not wait for TURN when
  closing asynchronous
Reject invalid remote candidates with priority=0
Add missing mutex in tcp-bsd socket
Add buffer list support to nicesrc
Avoid dropping packing in nicesink, retry instead
Only create a new NiceCandidate if a socket can be opened, as it is
 a somewhat costly operation.
Many new tests
Fix leaks
Fix various test flakiness

libnice 0.1.22 (2024-03-04)
===========================
API: Make nice_address_is_local() available to applications
Make padding be all zeros to conform to RFC8489
Fix interface listing on Android
Include TURN sockets in the list from nice_agent_get_sockets()
Set consent refresh timeout in line with RFC 7675
Fix ifr_ifindex build with cland and OpenBSD

libnice 0.1.21 (2023-01-07)
===========================
Only use `ifr_ifindex` if OS supports it, fixes build on iOS and FreeBSD

libnice 0.1.20 (2023-01-06)
===========================
Remove support for GStreamer 0.10 builds
Add macro to check LIBNICE version
Added utility function to get the STUN server from a candidate
Support additional header in built-in HTTP proxy client
Add boxed type for NiceAddress for bindings
Add API to get the interface index for a local address
Explicitly bind to a specific interface when creating UDP sockets
Limit the number of stored incoming checks based on a property
Do asynchronous DNS resolution for STUN and TURN servers
Add introspection friendly API to get an allocated string from a NiceCandidate
Enable gst-full to link in a single element

libnice 0.1.19 (2022-05-03)
===========================
Allow incoming connchecks before remote candidates are set, allows for connection based on received bind requests
Implement RFC 7675 for Consent Freshness
Use a single server reflexive and local relay candidate, reduces useless duplicated local candidates
Improved ICE restart implementation
Use Windows native crypto API, removing the need for OpenSSL
Add bytestream ICE-TCP and improve ICE-TCP
Add API to know if a NiceAddress is link-local
Add API to extact the relay address from a relayed NiceAddress
Improve support for detection addresses on Android, iOS, macOS
A number of bug fixes

libnice 0.1.18 (2020-10-20)
===========================
Remove the autotools build system, now only meson is available
On Windows, use crypto library instead of CryptGenRandom() which is deprecated
On Windows, use GetBestInterfaceEx() for UWP compatibility
On Windows, fix the listing of interfaces to use the correct APIs
On Windows, implement ignoring interfaces
Accept receiving messages in multiple steps over TCP
Accept duplicated ports as last option instead of spinning forever
Use sendmmsg if possible to send multiple packets in one call
Fail gathering if no port is available
Hide the implementation of NiceCandidate, this hides some parts that were previously visible
Enable TURN server connects where both TCP and UDP use the same port number
Don't count rejected STUN messages as keepalive packets

libnice 0.1.17 (2020-05-22)
===========================
Add API to retrieve the underlying BSD sockets
Support systems with multiple loopback devices
Ignore non-running network interfaces
Ignore multiple interface prefixes
Now tries to nominate matching pairs across components and streams
Retry TURN deallocation on timeout, requires not destoying the NiceAgent right after the stream
Use different port for every host candidate
Make timeouts and retransmissions more in line with the RFCs
Find OpenSSL without pkg-config, for Windows
Complete meson support
GLib required version update to 2.54
Removed deprecated GLib APIs
Many ICE compatibility and performance improvements
Many bug fixes

libnice 0.1.16 (2019-05-09)
===========================
Add API to make it easier to implement ICE trickle
Add async closing of agent, to cleanly close TURN allocations
Add Google non-standard NOMINATION STUN attribute
Fix tests on Windows
Fix some racy tests

libnice 0.1.15 (2018-12-27)
===========================
Add support for Regular Nomination
Removal of the global lock over all agents
Add method to compare candidate targets
Added optional Meson build system, future releases will remove autotools
Renamed all members of PseudoTcpState enum (compile-time API change)
Now drops all packets from addresses that have not been validated by an ICE check
Multiple improvements to ICE interoperability
Improved RFC compliance
Improved OC2007 compatibility mode alternate-server support

libnice 0.1.14 (2017-04-03)
===========================
Improved RFC compliance
Split verbose logs into a separate option
Numerous bug fixes
Use GnuTLS for hash functions
Implement NewReno in PseudoTCP
Requires GLib 2.44 GnuTLS 2.12

libnice 0.1.13 (2015-04-28)
===========================
Fix build on non-Windows platforms that don't have getifaddrs()
Fix build regression on Windows

libnice 0.1.12 (2015-04-22)
===========================
Fix regression in SDP parser
Make examples work on Windows
Bug fixes on nicesrc

libnice 0.1.11 (2015-04-20)
===========================
API: nice_agent_set_local_credentials() for WebRTC
Nicesink: support GstBufferList
Better warnings on programming errors
Build fixes for Solaris and Windows
Bug and documentation fixes

libnice 0.1.10 (2015-01-28)
===========================
Fix bug on component change on the sink

libnice 0.1.9 (2015-01-28)
==========================
Make it possible to statically build the GStreamer plugins
Bug fixes, in particular fix compatibility with coTurn servers
Documentation fixes

libnice 0.1.8 (2014-10-09)
==========================
Added FIN-ACK behavior in the PseudoTCP
ICE-TCP, both standard mode and Microsoft compatible
Microsoft compatible TURN-TCP
API: nice_address_equal_no_port() to compare NiceAddresses ignoring the port
API: nice_agent_get_component_state() to get the current component state
API: agent:keepalive-conncheck to make the agent use conncheck as keepalives
  and fail the connection if there is no answer
API: agent:ice-tcp, agent:udp-tcp to control ICE-UDP vs ICE-TCP behaviours
API: agent:bytestream-tcp to know if the send/receives in reliable mode create full packets or not
API: New signals agent::new-selected-pair-full, agent::new-candidate-full,
  agent::new-remote-candidate-full which include the NiceCandidates directly
API: Deprecated agent::new-selected-pair and agent::new-candidate and 
  agent::new-remote-candidate signals
Now all signals are emitted at the function return time

libnice 0.1.7 (2014-05-05)
==========================
Fix undesired API change that broke Farstream unit testsx

libnice 0.1.6 (2014-04-28)
==========================
API: nice_agent_restart_stream() to do a ICE restart on a single strema
API: nice_component_state_to_string() to get a printable name for a component
  state
API: nice_agent_forget_relays() to forget the relays set for a
  specific component, along with nice_agent_restart_stream(), it allows
  changing the current relay without dropping the connection.
It is now possible to add relays after the initial candidate gathering.
Many bug fixes

libnice 0.1.5 (2014-03-06)
==========================

API: nice_agent_recv() and nice_agent_recv_nonblocking() as an alternative to
  the nice_agent_attach_recv()
API: nice_agent_recv_messages() and nice_agent_recv_messages_nonblocking() to
  receive multiple messages at the same time
API: nice_agent_get_io_stream() to get a GIOStream in reliable mode
API: nice_agent_get_selected_socket() to extract the selected GSocket
Import Google's newer PseudoTCP code including window scaling
Improve PseudoTCP performance
Improve performance
Build fixes

libnice 0.1.4 (2013-02-22)
==========================

Fix issue with dribble mode
Fix issue with TURN permissions
Fix missing win32 directory from release archive
Fix support for OC2007
Added new nice_address_ip_vesion API
Added new nice_agent_get_selected_pair API
Added new SDP parsing and generation API
Added simple examples (simple, threaded and sdp usages examples)

libnice 0.1.3 (2012-09-13)
==========================

Dribble mode: You can set remote candidates while gathering the local ones
Add support for GStreamer 1.0, will compile plugins for both 1.0 and 0.10 by default
Cache GSocketAddress in UdpBsdSocket, creating it is very slow

libnice 0.1.2 (2012-04-03)
==========================

Fix a bug where a controlled agent may never go to READY if it received early conncheck
Restart connchecks on a failed candidate pair when receiving a triggered check
Fix a bug where gathering-done signal could be sent before UPnP mapping finishes
Fix a race condition where setting remote-candidates on a gathered stream failed if another stream was gathering
Many fixes to complete and stabilize TURN support 
Fix a bug in proxy support where TURN packets were misread
Refactor libnice to use GSocket which works around a glib limitation of g_io_channel on windows
Fix a bug with receiving error messages during conncheck
Fix a possible infinite loop bug
Fix memory leaks and multi-threaded race conditions
Better compatibility for BSD and Mingw
Added support files for Visual Studio compilation
Various fixes to UPnP support
Fixes to the build system

libnice 0.1.1 (2011-09-07)
==========================

Fixed BSD and Solaris compatibility
Fixed PPC64 symbol test
Removed a few possible leak/bugs
Fixed compatibility with google's recent protocol change

libnice 0.1.0 (2011-01-20)
==========================

Added nice_candidate_copy to the public API
Make stun_timer timeouts configurable (Break API and ABI)
Add compatibility support for MSOC 2007 and MSOC 2007 R2
Add MS-TURN support for MSOC
Added and completed TURN RFC 5766 support
Add a nice_agent_set_port_range API to force a component to use a specific port
Fix various bugs and memory leaks
Improve documentation

libnice 0.0.13 (2010-07-20)
==========================

Add support for IPv6
Fix crc32 function conflict with libz.so
Various bug fixing and code cleaning
Validate the remote candidate address before adding it

libnice 0.0.12 (2010-05-19)
==========================

Update compatibility to RFC5245
Fix a memory corruption bug
Fix a possible buffer overflow with socks5 proxies

libnice 0.0.11 (2010-03-18)
===========================

Handle EAGAIN for UDP sockets
Fix coverity warnings
Fix a bug with TURN and Channel Bindings
Add a reliable transport mode using libjingle's PseudoTcp implementation
Various fixes

libnice 0.0.10 (2009-11-04)
===========================

Fix some memory leaks with the gstreamer elements
Fix username/foundation for google TURN candidates
Fix the sending of hundreds of connectivity checks at once the stream is connected
Fix BSD support
Fix reprocessing of already processed early incoming checks when in dribble-mode
Fix a rare crash with failing relay candidates allocations
Add a stun_agent_set_software API
Add a nice_agent_set_software API

libnice 0.0.9 (2009-07-31)
===========================

Fix some more issues with peer-reflexive candidates in google mode (for early incoming checks)
Fix SHA1 algorithm when strict aliasing is used
Fix google mode connectivity with discovered remote peer reflexive candidates
Fix google/msn mode by not limiting the conncheck list
Fix the interfaces discovery by using getifaddrs
Fix compilation on Mac OS X
Add ToS support to the sockets


libnice 0.0.8 (2009-06-19)
===========================

Remove deprecated g_strcasecmp call
Use addr instead of base_addr on assigning remote peer-reflexive candidates (fixes crash)
Use a global mutex and g_source_is_destroyed to avoid race conditions (fixes crashes)
Unlock the mutex before calling the recv callback

libnice 0.0.7 (2009-06-11)
===========================

Added UPnP Support
Fix a race condition when destroying the nice agent
Stun headers are now installed
Unset timer's source if they return FALSE
Fix interoperability with gtalk2voip.com
Avoid a race condition where a candidate has the wrong user/pass
Add support for delayed setting of the remote candidates in google mode
Better connectivity support and race condition fixes
Keepalive connchecks do not change the state if they fail but data was still received
Fix foundation generation for remote peer reflexive candidates
Drop packets when using TCP and the bandwidth is too slow for the data output


libnice 0.0.6 (2009-03-31)
===========================

Fix connectivity checks for detecting when we loose the connection
Fix a race condition with gtalk that made the call silent after 30 seconds
Robustness checks with regards to relay information
Fix a race condition crash with retransmission ticks
Added a new STUN API : stun_agent_forget_transaction
Fix a possible crash if tcp-turn is shutdown early in the process
Fix a crash when a stream is removed
Fix MSN support by disable keepalive connchecks


libnice 0.0.5 (2009-03-04)
===========================

Name change from nice to libnice
Added support for HTTP proxies
Added a nice_interfaces API to query the local interfaces/ips
Fixed libnice when used in dribble mode
Fix a data corruption issue with the SHA1 algorithm
Endianness gets checked at runtime so libnice should compile and work everywhere
Add compatiblity for WLM2009 ICE
Export libstun API and add documentation for libstun
Add connectivity checks during the connection to detect when the peer gets disconnected
Bug fixes and code cleaning


nice 0.0.4 (2008-12-17)
========================

Fix compilation for 64bits systems
Revert the use of netbuffer in the gstreamer elements
Added support for pseudossl-tcp TURN relay for Google
Added support for SOCKS5 proxy servers for TCP relaying
Bug fixes and code cleaning

nice 0.0.3 (2008-11-25)
========================

Stable google talk support
Added TCP TURN relay support for google.
Removed openssl dependency.

nice 0.0.2 (2008-11-12)
========================

Better support for google talk compatibility mode as well as UDP TURN relay compatibility for Google. 
Removed -Werror compile flag for releases

nice 0.0.1 (2008-11-05)
========================

Initial release of libnice.
It has compatibility support for the latest ICE draft 19, as well as google talk and MSN compatibility.
It also has support for TURN relays using TURN draft 9 if you're in ICE draft 19 compatibility, or specific Google/MSN relay support if you're in Google/MSN compatibility mode.
The library is multiplatform and should compile fine on Linux, Mac and Windows systems.
