Skip to content

Releases: Haivision/srt

v1.5.1-rc.0

12 Sep 14:11
453b276
Compare
Choose a tag to compare
v1.5.1-rc.0 Pre-release
Pre-release

Release Notes

API / ABI

API/ABI version: 1.5.

Improvements and Bug Fixes

  • PR #2333: Added support for OpenSSL EVP API (enable using the -DUSE_ENCLIB=openssl-evp CMake build option).
  • PR #2408: Improved timing on an idle connection (update TSBPD base time and clock drift on an idle connection).
  • PR #2384, #2395. Data race fixes (CRcvQueue).
  • PR #2405: Receiver performance improvements (CUnitQueue).
  • PR #2416: Fixed byteRcvLoss stats.
  • PR #2413, #2425: Fixed data races in Crypto Library (mbedTLS).
  • PR #2391: Fix sendBroadcast() message length.
  • PR #2398: Add ENABLE BONDING option to Windows PowerShell build script.
  • PR #2451: Fixed mingw-w64 DLL build (mingw-w64 supports __declspec(dllexport)).

Changelog

Click to expand/collapse

API/ABI

453b276 SRT version raised to 1.5.1.
ec52c45 Export functions in mingw-w64 when building as a DLL (#2451).
daf838e Renamed macro MN to SRT_EMN, MJ to SRT_EMJ.

Core Functionality

646bf2c Remove MSG_TRUNC logging
293a677 Removed unused struct HaveState
96d0c12 Fixed missing reject reason types (logging). (#2436)
8941831 Changed cond notification naming. Added and used new sync utilities. (#2429)
eae2749 Update TSBPD base time and clock drift on an idle connection. (#2408)
e50ccde Applied clang-format on CPacket.
666ee63 Fixed outlen_p value in EVP_AES_EcbCipher (crysprOpenSSL_EVP_AES_EcbCipher).
f0b2003 Minor CSndBuffer edits. (#2430)
fe98265 CCryptoControl: Partially removed dependency on CUDT. (#2424)
5ae3b00 Removed unused struct FByOldestActive.
7f12138 Initialize CRYSPR in startup() (#2425)
1b30573 Remove unused variable
e48f43d Fixed SRT_ASSERT definition for non-MSVC compilers (#2423).
ee398a3 Small refactor of the crysprFallback_MsEncrypt
618db39 Fixed byteRcvLoss stats
088e27d Create MbedTLS ctx in PBKDF (#2413)
ced76c7 Increased CUnitQueue block allocation speed. Allocates 128 additional units at the start and every time 90% of units are taken. Previously was allocating only 32 units.
a51ec39 Protect CUnit::m_iFlag from data race using an atomic. Refactored common allocation code CUnitQueue::allocateEntry(..).
b5055db Minor clean-up fix rethrowing an exception.
c3fed9c CRcvQueue tracks IP version instead of CUnitQueue
830c599 CUnitQueue::increase(): Do not adjust taken units. The adjustment was intended to patch issues around m_iCount. Those are not present anymore.
cdafca5 Fix sendBroadcast() message length (#2391).
c5f613e Added OpenSSL EVP API support to HaiCrypt (#2333).
5070037 Cookie contest log msg downgraded to Debug
bb6c493 Rethrow an exception without copying it.
c9e48bd Made CRcvQueue::m_counter atomic to avoid data race. Used for setting the RcvQueue:: worker thread name for logging.
6a489e1 Fixed suspicious (HCRYPT_CTX_F_ENCRYPT & ctx->flags ? ..).
2de9e6e Explicitly compare with an enum type. Fixes #2374.
61170ad Fixed local variable 'i' hiding previous local declaration. Fixes #2371.
88aab43 Fixed 'false' value implicitly casting to an integer. Handle handling failure of fillHsExtKMRSP(..). Fixed some other minor conversion warnings. Fixes #2372.

Unit Tests

3ed8bfa Fixed a typo: cypto -> crypto.
086dfe9 Fixed TestIPv6.v6_calls_v4
0153f69 Minor fix for Bonding.CloseGroupAndSocket (#2406).
04407e6 SyncRandom.GenRandomInt: Increase tolerance (#2385)

Build Scripts (CMake, etc.)

95d82c4 Only install headers if CMAKE_INSTALL_INCLUDEDIR is available
91a4373 Only install pkg-config files if CMAKE_INSTALL_LIBDIR is available
3709471 Use the default TARGETS installation folder when possible
286b43e Don't force RUNTIME targets in CMAKE_INSTALL_BINDIR
3170590 Install scripts/srt-ffplay in the bin directory
ea84103 Always use GNUInstallDirs
bb6fede Add variable telling if DESTINATION is needed with install()
6b70452 Add 'ENABLE BONDING' option to Windows PowerShell build script (#2398).

Documentation

286b3aa Updated the Debian badge in ReadMe
89e11eb Fixed Time Access link in API-functions.
5812e1f Fixed a typo in srt_epoll_uwait

v1.5.0

15 Jun 09:45
060c0d1
Compare
Choose a tag to compare

Release Notes

API / ABI / Integration Changes

API/ABI version: 1.5.

  • PR #2316: Renamed ENABLE_EXPERIMENTAL_BONDING build option to ENABLE_BONDING. With the Connection Bonding feature disabled, bonding API functions are present, but return an error.

  • PR #2081: Added the SRTO_GROUPMINSTABLETIMEO socket option which defines the minimum stability timeout for all the active member sockets in a Main/Backup group.

  • PR #2312: Deprecated srt_rejectreason_msg[]. The API function srt_rejectreason_str() should be used instead.

  • PR #2271: Fixed missing extern "C" for the srt_rejectreason_str() API function.

  • PR #2152: Use SOCKET type for any WIN32 environment.

  • PR #2176: Fixed handshake cookie validation by the listener for rendezvous connections.

New Features and Improvements

1. Connection Bonding is no Longer Experimental

While this feature remains disabled by default, you can use the ENABLE_BONDING=ON build option to activate it.

Similar to SMPTE-2022-7 over managed networks, Connection Bonding adds seamless stream protection and hitless failover to the SRT protocol. This technology relies on more than one IP network path to prevent disruption to live video streams in the event of network congestion or outages, maintaining continuity of service.

This is accomplished using the socket groups introduced in the current release. The general concept of socket groups means having a group that contains multiple sockets, where one operation for sending one data signal is applied to the group. Single sockets inside the group will take over this operation and do what is necessary to deliver the signal to the receiver.

Two modes are supported:

  • Broadcast - In Broadcast mode, data is sent redundantly over all the member links in a group. If one of the links fails or experiences network jitter and/or packet loss, the missing data will be received over another link in the group. Redundant packets are simply discarded at the receiver side.

  • Main/Backup - In Main/Backup mode, only one (main) link at a time is used for data transmission while other (backup) connections are on standby to ensure the transmission will continue if the main link fails. The goal of Main/Backup mode is to identify a potential link break before it happens, thus providing a time window within which to seamlessly switch to one of the backup links.

Improvements and bug fixes since v1.4.4:

  • PR #2260: Use the latest available input rate estimate from the main link for the newly activated backup link when the main one breaks (Main/Backup mode). This improvement is applied when maximum bandwidth is configured to operate in INPUTBW_ESTIMATED mode.

  • PR #2316: Added the SRTO_GROUPCONNECT socket option. When set on a listener socket, the socket is allowed to accept incoming group connections.

  • PR #2316: Added the SRTO_GROUPTYPE read-only socket option which returns the group type declared in the incoming connection.

  • PR #2081: Added the SRTO_GROUPMINSTABLETIMEO socket option which defines the minimum stability timeout for all active member sockets in a Main/Backup group.

  • PR #2257: Fixed the loss of initial packets by a group in Message mode with a message consisting of several packets.

  • PR #2258: Fixed packet sequence number tracking in group sender (Broadcast mode).

  • PR #2245: Improved group read-readiness update on sending an acknowledgment packet.

2. New Implementation of the Receiver Buffer with Behavior and Code Improvements

  • PR #1964: Enabled by default with theENABLE_NEW_RCVBUFFER=ON build option. Note that while it is still possible to fall back to the old receiver buffer implementation, eventually the new implementation will be the only one available.

    • Improved memory management to better work with shared objects and fixed const-correctness violations to avoid unnecessary object state changes.

    • It is now possible to read packets from the receiver buffer without waiting for them to be acknowledged. The SRT latency can now be less than the interval of sending acknowledgments of 10 ms. See #1429.

    • Better handling of sender’s drop requests. The current implementation will mark packets as “dropped by sender”, and when the time comes those packets will be dropped by the TSBPD mechanism at the receiver side.

    • Out-of-order reading is now supported for the file transmission use case.

    • In the case of file transmission in message mode, the notification about the readiness of reading a message consisting of several packets is now sent once all the packets forming this message are received and ready to be read.

3. Packet Pacing and Live Congestion Control Improvements

  • PR #2185: Operate with either the time when the packets are submitted to the SRT library (on the sender), or the source time, not both. If provided, source time is preferred over submitted time. Previously, submitted time was used by the Too-Late Packet Drop mechanism when dropping a message by TTL and calculating sender buffer timespan statistics (msSndBuf). If provided, source time was used as a data packet timestamp.

  • PR #2180: Prioritize sending original packets over retransmissions in live streaming configuration. For file transmission configuration, the order of sending remains the same: retransmitted over original packets.

  • PR #2232: Fixed issue #713 where the Too-Late Packet Drop mechanism may violate the configured maximum bandwidth, which limits the bandwidth usage by SRT.

  • PR #2230: Use sender buffer delay (tsNow - tsOldestPacket) in Too-Late Packet Drop mechanism instead of timespan between the latest submitted packet and the oldest one present at the sender buffer (tsLatestPacket - tsOldestPacket).

  • PR #2068: Drop a message based on Time to Live (TTL) even if it hasn’t been sent. A TTL value, in milliseconds, can be provided when submitting a message to SRT via the srt_sendmsg2(..., msgctrl.msgttl) function. If the TTL since a message has been submitted to SRT for sending is expired, this message will be discarded even if it hasn’t been sent yet. Previously, a message was always sent (at least once) and TTL affected further retransmissions only.

  • PR #2229: The code related to forming an original data packet for sending has been moved to a separate function (packUniqueData(..)).

4. Other Improvements

  • PRs #2324, #2125, #2301: Resolved symbol name leakage related issues. Placed sender and receiver buffer implementations, CEpoll, CEPollDesc, CIPAddress, CInfoBlock, CMD5 and other functions under the srt namespace.

  • PRs #2241, #2208, #2210: Improved the condition for smoothed RTT recalculation in the case of bidirectional transmission. Fixed the issue introduced in RTT estimation when adding atomic types in PR #1863 (affected version: v1.4.4).

Important Bug Fixes

  • PR #2159: Use Mersenne Twister engine with C++11 instead of std::random_device. Fixed the probability calculation of getting the maximum value for the default (C++03) rand().

  • PR #1913: Replaced the global CUDTUnited object with static local one.

  • PR #2277: Check if CryptoControl exists in craftKmResponse(). Fixes crash #2231.

  • PRs #2291, #2292: Fixed volatile keyword usage. Prefer the usage of std::atomic where possible.

  • PR #2223:...

Read more

v1.5.0-rc.0

05 May 09:37
Compare
Choose a tag to compare
v1.5.0-rc.0 Pre-release
Pre-release

Release Candidate Notes

API/ABI/Integration Changes

API/ABI version: 1.5​.

  • PR #2316: ENABLE_BONDING build option (instead of ENABLE_EXPERIMENTAL_BONDING). Dummy bonding API version if disabled (default).
  • PR #2312: Deprecated srt_rejectreason_msg[].
  • PR #2152: Use the SOCKET type for any WIN32 environment.
  • PR #2271: Fixed missing extern "C" for API function srt_rejectreason_str(..).
  • PR #2176: Fixed handshake cookie validation by the listener (rendezvous connection).
  • PR #2081: Added group socket option SRTO_GROUPMINSTABLETIMEO.

Improvements

  • PR #2324: Resolved symbol name leakage / polution (placed inside the srt namespace).
  • PR #2260: Source rate estimate: ignore outdated samples. Derive source rate estimate from active member (Main/Backup groups).
  • PR #2241: Improved the condition for smoothed RTT recalculation with bidirectional transmission.
  • PR #1260: Prioritize original packets over retransmissions in live streaming configuration (SRT Sender).
  • PR #2232: Fix MaxBW limitation #713. Don't reschedule sending (keep pacing) on SND drop, NAK received, retransmission timeout. Added pacing amendment after sending probing packets.
  • PR #2230: Use SND buffer delay for TL Packet Drop instead of the timespan between the first and the last packet in the buffer.
  • PR #1950: Fix GC stop handling.
  • PR #2068: Drop msg by TTL even if hasn't ever been sent.
  • PR #2185: SND buffer: operate either origin or source time, not both.
  • PR #1964: New receiver buffer implementation (enabled by default with ENABLE_NEW_RCVBUFFER=ON build option).
  • PR #2159: Use Mersenne Twister engine with C++11 instead of the std::random_device. Fixed max value probability for the default (C++03) rand().
  • PR #1913: Replaced global CUDTUnited with static local variable.

Fixed Issues Highlights

  • PR #2208, #2210: Fixed RTT estimation for bidirectional transmission.
  • PR #2231: Check if CryptoControl exists in craftKmResponse. Fixes crash #2231.
  • PR #2125: Moved SND and RCV buffers into the 'srt' namespace (Symbol Name Leakage/Polution #1924).
  • PR #2301: Fix name conflict with md5 functions (Symbol Name Leakage/Polution #1924).
  • PR #2291, #2292: Fix volatile keyword usage. Prefer using std::atomic where possible.
  • PR #2258: Fix extraction seq with scheduling seq in group.
  • PR #2257: Fix unrecoverable initial packets lose in group message mode.
  • PR #2245: Improved group readiness updating in sendCtrlAck(). Group::updateReadState() support out-of-order messages.
  • PR #2223: fixed missing m_RcvBufferLock in processCtrlDropReq().
  • PR #2214: Fixed RCV TL drop of packets dropped by SND.
  • PR #2195: Fix consistency of packet seqno in CRcvLossList.
  • PR #2197: Fix deadlock introduced by CUDTGroup::setOpt().
  • PR #2196: fix CRcvLossList::m_iTail not reset to -1.
  • PR #2162: Fix UDP RCVBUF and SNDBUF socket options on Solaris.
  • PR #2168: Changed lock order in bstats(..) API functions to access statistics.

Build

  • PR #2148: Support NDK r23, OpenSSL v3.
  • PR #2319, #2325: Fixed building sendfile and recvfile examples. They don't need C++11.

Docs

  • PR #2311: Added note on SRT versioning.

Acknowledgements

Kudos for valuable contribution in the release to Guangqing Chen, Zhili Zhao.

Changelog

Click to expand/collapse

API

64d7f69 SRT version raised to 1.5.0.
c6b95f5 Removed unused srt_group_configure API function.
f82b131 Dummy bonding API version if ENABLE_BONDING is disabled.
78b4d65 Drop EXPERIMENTAL from ENABLE_EXPERIMENTAL_BONDING
042df34 Removed balancing and multicast group types (#2323)
94ff168 Removed unused srt_include(..) and srt_exclude(..) API functions for unimplemented externally managed groups.
1c6e1ce Deprecated srt_rejectreason_msg[]. (#2312)
2fb3c9a Use the SOCKET type for any WIN32 environment (#2152)

Core Functionality

990b75a Moved bonding API to the end of srt.h
8901838 Moved CWindow inside the srt namespace.
9761063 Moved sockaddr_any inside the srt namespace.
909c8fb Moved CCache inside the srt namespace.
3fbb917 Placed CHandshake inside the srt namespace.
9ba7e64 Moved CEpoll, CUDTException, etc. into the srt namespace
681b363 Placed CSndLossList and CRcvLossList inside the srt namespace.
e926653 Fixed minor compiler warnings in RCV buffer
9b3e3c1 Fixed ENABLE_HAICRYPT_LOGGING (#2315).
477530f Drop packets in the new RCV buffer by group RCV base (#2207)
69284ce Fixed updating new RCV buffer on ISN change. (#2309)
c76f43d fix CRcvBufferNew::m_iStartSeqNo was not sync in group
48d1364 Added explicit to the Scoped and UniqueLock constructors
992d816 Check if CryptoControl exists in craftKmResponse. Fixes crash #2231.
591e320 Clean up the CUDT processConnectRequest(..) function. Update listener write-ready only after the new connection. Was changed in #1650, but must not be done at all (see #1831).
911de75 Fix name conflict with md5 functions (#2301)
c0da44e FixedArray: use a function to throw an exception.
29d56be Define an iterator for the srt::FixedArray.
1cd39b9 Show RCV buffer timespan instead of TSBPD ready span.
cc62e98 Fixed CRcvBufferNew::strFullnessState(..). Possible null pointer object call after if (m_entries[iLastPos].pUnit). Show the first valid packet instead of the very first position in the buffer.
6c8f0f1 fix volatile in group.h
1f8c1e9 prefer to use std::atomic if available
fec9a40 fix m_iLastSchedSeqNo
8f22c96 CSndUList use notify_one() instead of notify_all()
af6ff16 Downgrade ACKACK reorder log to Note
1dacc2a Remove declaration srt_logger_config again
4c08c3d Move srt_rejectreason_str implementation to srt_c_api
a68683a haicrypt_log.cpp include its header file
f1ec270 Remove duplicated includes
5bf0cc1 Remove redundant ';' after '}'
8d1a722 Applied clang-format on api.h and api.cpp.
ebbac9a fix CRcvBufferNew::m_bPeerRexmitFlag.
024e9c0 Fix extraction seq with scheduling seq in group. (#2258)
3975428 fix unrecoverable initial packets lose in group message mode
fe5debb Source rate estimate: ignore old samples
589d36e Backup group: derive source rate estimate from an active link on idle member activation
daf94c4 Moved source rate estimation logic to CRateEstimator from CSndBuffer
a60d98a Protect RCV buffer access from socket stats
4b70a63 Group option SRTO_GROUPMINSTABLETIMEO (#2081)
f15d300 Fix build for FreeBSD kernel (#2255)
7d77d41 SND Drop Request: ignore if TLPktDrop and TSBPD are enabled to reduce false drops when a packet can still arrive later. It will be dropped anyway as too late.
5adc2db RCV don't drop packets on SND drop request if they already exist in the buffer and can be read (full message is available).
81a31da Fix RCV drop count when dropping on SND DROP REQ. Extended RCVBUF trace logging.
0c5bf7a Decreased SND drop request log level to Debug
c885ed1 Group::updateReadState() support out-of-order messages
650dbe6 Fixed rcvDropTooLateUpTo calls. Broken after merging #2218
8f68f61 refactor Group::recv() base on new rcv buffer to support message mode
ac854f2 Fixed setting the peer rexmit flag on the RCV buffer
409d363 Improved the condition for smoothed_rtt recalculation, bidirectional transmission
08e6482 SND prioritize original packets in live configuration
ef11d26 SND pacing: amendment on probing packets
912463b Fix MaxBW limitation. Don't reschedule sending (keep pacing) on - SND drop, - NAK received - retransmission timeout.
308cd30 Added missing lock to CSndBuffer::readData
5773901 Use SND buffer delay for TL Packet Drop instead of the timespan between the first and the last packet in the buffer.
a31e618 Refactoring: added packUniqueData(..) func
8518558 fixed missing m_RcvBufferLock in processCtrlDropReq()
8c05c70 Fix CRcvBufferNew::dropMessage() (#2222)
24bf666 CRcvBufferNew::dropUpTo() able to drop non-empty units (#2221)
31de8aa Add CRcvBufferNew::dropUnitInPos(..) (#2226)
8afcdbe fix m_iMaxPosInc was not updated in releaseNextFillerEntries()
258167d replace ++ with incPos() in getTimespan_ms()
3d26644 Fixed build with the old RCV buffer
1111cbd Fixed RCV TL drop of packets dropped by SND (#2214)
5f7bc23 Refactored the core stats structure (#2212).
3558cd0 Fix GC stop handling (#1950)
26678fe Fixed the issue with RTT in case of bidirectional transmission introduced when adding atomic types
ae787bf Fix rtt estimate in bidirectional mode
c8cb38f Fix m_GroupOf->updateReadState() in message mode (#2204)
1d808c1 fix recv_WaitForReadReady() return empty
c9a8db7 Fix consistency of packet seqno in CRcvLossList (#2195)
244d2f4 Fix deadlock introduced by CUDTGroup::setOpt()
8b68157 fix CRcvLossList::m_iTail not reset to -1
e5a1179 Fix UDP RCVBUF and SNDBUF on Solaris (#2162).
6ae42c6 Drop msg by TTL even if hasn't ever been sent (#2068)
b99e41c SND buffer: operate either origin or source time, not both.
33c8e49 checkNeedDrop returns the congestion state
5f3cd06 Fixed std::runtime_error usage (use C++03 version instead of C++11) (#2184)
e4a1d2b Fixed read-ready epoll event in stream (file) mode. Only the new RCV buffer (PR #1964) is affected.
ec571a0 Fixed new RCV buffer in stream mode (reading fractional packets)
3c3824f Removed unused SRT_DEBUG_TSBPD_DRIFT
f11b026 fix listener's cookie check (#2176).
276a841 New receiver buffer implementation
3f2945c Reduced nesting of checkBrokenSockets()
c1fdb61 Changed lock order in bstats (#2168)
489c5fc Use Mersenne Twister engine with C++11 instead of the std::random_device. Fixed max value probability for the default (C++03) rand().
86d1eb2 Added CUDT::isRcvReady() with mutex lock. Added CUDT::getAvailRcvBufferSize() function with and without mutex lock.
2031b2c Do not set peerA...

Read more

v1.4.4

04 Oct 12:28
8b32f37
Compare
Choose a tag to compare

Release Notes

API/ABI/Integration Changes

API/ABI version: 1.4.​

  • PR #2088: Monotonic/steady clock is enabled by default.
    • On Windows: C++11 steady clock is used by default (-DENABLE_STDCXX_SYNC=ON).
    • On Linux: CLOCK_MONOTONIC is used by default if supported by the platform (-DENABLE_MONOTONIC_CLOCK=ON).
  • PR #2069: Changed the default value of SRTO_RETRANSMITALGO socket option to 1. This activates the efficient retransmission algorithm on the sender side which optimizes the bandwidth usage by producing fewer retransmissions per lost packet. The algorithm is available since v1.4.2. Intensive retransmission algorithm (the former default) can be activated by setting SRTO_RETRANSMITALGO=0.

Improvements

  • PR #1997: Improved random integer retrieval, which is mainly used for initial socket ID and Initial Sequence Number (ISN) generation.
  • PR #1965: Improved clock drift compensation algorithm. RTT samples are now taken into account when estimating clock drift.
  • PR #1957: Improved round-trip time (RTT) estimation.
    • On the receiver side, smoothed RTT (SRTT) is set to the first RTT measurement obtained from the first ACK/ACKACK pair. When a subsequent RTT measurement is made, an exponentially weighted moving average (EWMA) is used to update smoothed RTT. Before the very first RTT sample is available, SRTT is initialized as 100 ms or taken from the cache if one exists.
    • On the sender side, in the case of unidirectional transmission, the values of smoothed RTT and RTT variance are now extracted from ACK packets. In the case of bidirectional transmission, an EWMA is still applied to be consistent with the previous behavior.
  • PR #1909: Improved 'No room to store incoming packet' warning with additional hints to identify a possible reason.
  • PR #1863: Added support for atomic types.

Experimental SRT Connection Bonding

  • PR #1857: Improved the logic of switching between main and backup links, extended the list of member link states as well as defined events resulting in state transition for Main/Backup mode of Connection Bonding.
  • PR #1989: Documented Main/Backup mode of Connection Bonding. See here.
  • PR #2026: Fixed group read-readiness update on the receiver side.
  • PR #2094: Added missing lock when checking for read-readiness of a group member and fixed the resulting crash.
  • PR #2139: Fixed base time and drift synchronization in a group, which caused insufficient packet loss recovery and end-to-end latency maintenance by a group receiver.
  • PR #2142: Fixed validation of the packet sequence number when reading from a group member, which was causing an incorrect decision to break a member connection.

Fixed Issues Highlights

  • PR #2075: Fixed crash on dereferencing null CryptoControl instance in handshake reply.
  • PR #2012: Placed some of the SRT classes under the 'srt' namespace.
  • PR #1517: Fixed possible incorrect outcome of cookie contest function (rendezvous connection mode) under certain compiler optimizations.
  • PR #2073: Fixed uninitialized destination socket ID in Shutdown control message.
  • PR #2062: Set CLOEXEC for epoll on Linux.
  • PR #2060: Added missing receiver buffer lock into CUDT::receiveBuffer(..) and CUDT::recvfile(..) functions.
  • PR #2028: Added a check for null unit when passing to CRendezvousQueue::updateConnStatus(..).
  • PR #2005: Make sure TTL will not drop packets over the last block.
  • PR #2003: Fixed the value of the Last Packet Sequence Number field in Drop Request control message on TTL packet drop.
  • PR #2011: Fixed the content of the Drop Request control message. If a loss of packets already missing in the sender buffer was reported, the very first packet present in the sender buffer was incorrectly included in the range of packets to be dropped.
  • PR #2010: Fixed version rejection for handshake v4 caller (SRT prior to v1.3.0).
  • PR #1919: Fixed the crash when referencing a resource already freed in CRendezvousQueue class.
  • PR #1588: Fixed detection of reusable bindings and binding conflicts.

Build

  • PR #2117: Updated Windows installer for alternate platform names.
  • PR #2136: Added iOS build to GitHub Actions CI.

Docs

  • PR #2134: Updated SRTO_RETRANSMITALGO socket option description.
  • PR #2119: Improved Access Control general syntax description.

Changelog

Click to expand/collapse

Core Functionality

167b8e5 Fixed group drift synchronization (#2139)
60891f3 Fixed 'atomic' linking for iOS target (#2137)
add4058 Fixed 'undef' warning with gcc and clang (#2131)
ad84c38 Fixed FileCC random decrease
b147d5e Fix Solaris build. (#2115)
e98146a Avoid using strlen in ThreadName class
2243388 Removed ThreadName(const char*). (#2113)
df95ecb Fix atomic for MacOS, FreeBSD, GCC<4.7, Clang<6 (#2104)
5e75c32 Placed ThreadName class inside srt namespace
409a40d Detect pthread_getname* availability
cbdd676 Added missing lock for isRcvDataReady()
ae11c18 CUDTSocket now owns a member CUDT class (composition).
b214122 Fixed int64_t to long type cast
f1c96d9 Check Win QPC frequency is non-zero
7728b70 Prefer the endian.h header file from glibc if available
d7dcf0c Check if socket is still open before replying to HS
252337c Moved congestion control into the srt namespace
f0aa009 Renamed congestion control event handling functions
747f288 Check if CryptoControl exists in createSrtHandshake(..). If it does not, it will lead to a crash, reported in #1979.
896cc92 Fixed uninitialized DST socket ID in SHUTDOWN ctrl message
adba7af Use ThreadName::BUFSIZE in CreateLogLinePrefix()
d6f93a1 Update srtcore/threadname.h
73cad8d Refactor ThreadName implementation
1a85c02 Annotating CUDT::m_pCryptoControl locking behavior (#2070)
8f169a9 Changed the default SRTO_RETRANSMITALGO to 1 (#2069)
158f35d Fix FTBFS on Debian kfreebsd
ea4edff Moved compiler attribute definitions
127c85c Put CSrtConfigSetter into anonymous namespace
589f103 Move CSrtConfigSetter templates to cpp file
2ca5313 Added Clang TSA attributes. (#2000)
a34aa08 Set CLOEXEC for epoll on Linux
1df29db use sizeof(uint32_t) in SRTDATA_MAXSIZE
ec24e15 Replace hacky static_assert by SRT_STATIC_ASSERT
65ae257 Added missing RCV buffer lock in CUDT::receiveBuffer(..).
96a41db CSndUList::update: reschedule if earlier time
e9c550b Refactor CSndUList: pop CUDT, not a packet
e8d890c Moved mutex from CSndQueue to CSndUList
94322d4 Fix unused-variable warning
e932e8f Fixed getTsbPdTimeBase: carryover within 2 wrapping periods (#2043)
acf38a7 Fixed skip non-empty data (#2033)
d6e8e21 Fix build error when -DSRT_DEBUG_TRACE_DRIFT=1
28a7006 use seq larger than m_RcvBaseSeqNo to update group readablity (#2026)
0f0caf9 Added atomic support and marked atomic key fields detected by thread sanitizer (#1863)
1751bab FIX: Added check for NULL unit when passing to updateConnStatus (#2028)
17fee15 make sure TTL will not drop packets over last block (#2005)
e2a00aa Detect reusable bindings and binding conflicts correctly (#1588).
22cc924 Applied clang-format on channel.h and cpp
445a60c Refax: placing SRT classes inside 'srt' namespace. CUDT, CUDTUnited, CUDTSocket, CUDTGroup, etc.
4ddb68e Applied clang-format on queue.h and cpp
117f831 Fixed DROPREQ on NAK behind SndLastDataAck (#2011)
393a6c7 Added srt::sync::genRandomInt(..) for a uniform way to get a random integer from the range. If C++11 is enabled, uniform_int_distribution and random_device are used.
d9150ea Fixed DROPREQ by TTL packet drop (#2003)
345bab7 Fixed version rejection for HSv4 caller
0921da6 Fix DriftTracer: take RTT into account
917a715 Added CRendezvousQueue::qualifyToHandle. Now TTL of a socket pending for connection is checked on every update iteration -> more precise connection timeout.
36f8995 CRendezvousQueue: added doxygen comments. Renamed m_RIDVectorLock to m_RIDListLock.
34e14ab Fix use-after-free in rendezvous queue (#1919)
2559797 Main/backup: improved switching rules (#1857)
8830943 Improved 'no room to store' log message (#1909)
514f61e Fix comments
97445fc Minor strerror_array_sizes refactoring
d9eefd8 Fixed cookie contest (#1517)
9848d68 TSBPD logic extracted from CRcvBuffer. (#1968)
782a27f Renamed m_iRTT variable to m_iSRTT (#1971)
d898f1c Improved RTT estimation (#1957)

Unit Tests

399e8bf Test FileUpload: find unused UDP port (#2086)
bc5a642 Fixed range loop construct warning
6ca1e0d Fixed possible TestIPv6 hangups if connection fails
0fca874 Fixed build warning: unused parameter
5ac27a3 Tests for socket options API (#1929)
3c1c490 Fix -Wsign-compare
e761745 Added fixes for FEC test occasional failure (#2037)
8774645 ConnectionTimeout.Nonblocking 500ms -> 300ms. Previously TTL was checked only every 250 ms, which resulted in a poor timeout precision.

Build Scripts (CMake, etc.)

cdec114 Fix build Android with NDK <17. Need to link against libatomic when compiling statically
6fda502 Added iOS build to GitHub Actions CI (#2136)
d8127a8 Fixed CMake warning about string
1d862c4 Fixed a typo 'availabe'
f9a54a0 Build but do not install test-srt
4d0fe61 Fixes build with CMake <3.0.2. (#2123)
2e09a16 Update Windows installer for alternate platform names (#2117)
e8f4057 Automatically link libatomic if needed. (#2116)
4fc0f31 Use lowercase CMAKE_SYSTEM_NAME on Android
fb09875 Fix build for Linux GLIBC-2.8 and earlier. (#2103)
da70624 Fix Build for Android. (#2100)
8b1be61 Fixed ENABLE_MONOTONIC_CLOCK=ON when target is Android
6dcbaf0 Cross-compile android from macOS host (#2071)
b4a5887 Added compile_commands.json to .gitignore (#2031)
e37f4ab Set OpenSSL vars explicitly; Support mbedTLS Android build (#2030)
44eb6ce Improved...

Read more

v1.4.4-rc.1

08 Sep 15:08
b147d5e
Compare
Choose a tag to compare
v1.4.4-rc.1 Pre-release
Pre-release

Pre-Release Notes

RC.1 mainly includes build fixes for various platforms compared to RC.0.

Changelog Since v1.4.4-rc.0

Click to expand/collapse

Core Functionality

e98146a Avoid using strlen in ThreadName class
2243388 Removed ThreadName(const char*). (#2113)
df95ecb Fix atomic for MacOS, FreeBSD, GCC<4.7, Clang<6 (#2104)
5e75c32 Placed ThreadName class inside srt namespace
409a40d Detect pthread_getname* availability

Build Scripts (CMake, etc.)

2e09a16 Update Windows installer for alternate platform names (#2117)
e8f4057 Automatically link libatomic if needed. (#2116)
4fc0f31 Use lowercase CMAKE_SYSTEM_NAME on Android
fb09875 Fix build for Linux GLIBC-2.8 and earlier. (#2103)
da70624 Fix Build for Android. (#2100)
8b1be61 Fixed ENABLE_MONOTONIC_CLOCK=ON when target is Android

Documentation

34ba951 Improved Access Control general syntax description
ab9e69b Removed a reference to YAML syntax

Experimental SRT Connection Bonding

cbdd676 Added missing lock for isRcvDataReady()

v1.4.4-rc.0

18 Aug 13:49
74aff82
Compare
Choose a tag to compare
v1.4.4-rc.0 Pre-release
Pre-release

Pre-Release Notes

API/ABI/Integration Changes

API/ABI version: 1.4.

  • PR #2088: Default C++11 steady clock on Windows. Try to use CLOCK_MONOTONIC by default on Linux.
  • PR #2069: Changed the default SRTO_RETRANSMITALGO to 1.

Improvements

  • PR #1997: Improved random integer retrieval (used for SocketID, Initial Sequence Number).
  • PR #1965: Improved clock drift tracing (taking RTT into account).
  • PR #1957: Improved RTT estimation.
  • PR #1909: Improved 'no room to store' log message.
  • PR #1863: Added support for atomic types.

Fixed Issue Highlights

  • PR #2075: Fixed crash on dereferencing null CryptoControl in HS reply.
  • PR #2073: Fixed uninitialized DST socket ID in SHUTDOWN ctrl message.
  • PR #2062: Set CLOEXEC for epoll on Linux.
  • PR #2060: Added missing RCV buffer lock into CUDT::receiveBuffer(..).
  • PR #2028: Added check for null unit when passing to updateConnStatus.
  • PR #2012: Placing SRT classes inside 'srt' namespace.
  • PR #2005: Make sure TTL will not drop packets over the last block.
  • PR #2011: Fixed DROPREQ on NAK behind SndLastDataAck.
  • PR #2003: Fixed DROPREQ by TTL packet drop.
  • PR #2010: Fixed version rejection for HSv4 caller.
  • PR #1919: Fix use-after-free in rendezvous queue.
  • PR #1588: Detect reusable bindings and binding conflicts correctly.
  • PR #1517: Fixed cookie contest.

Experimental SRT Connection Bonding

  • PR #2026: Use seq larger than m_RcvBaseSeqNo to update group readability.
  • PR #1857: Improved main/backup switching rules.
  • PR #1989: Added Main/Backup mode overview document.

v1.4.3

27 Apr 09:41
291e010
Compare
Choose a tag to compare

Release Notes

API/ABI/Integration Changes

API/ABI version: 1.4.

  • PR #1925: fixed/changed cast to bool instead of int in srt_getsockopt(..) / srt_getsockflag(..) API functions for:
  • PR #1794: Fixed ABI compatibility around SRTO_BINDTODEVICE value depending on ENABLE_EXPERIMENTAL_BONDING.
  • PR #1741: Made SRT versioned SO named with major and minor (now libsrt.so.1.4 instead of libsrt.so.1).

New Features and Enhancements

  • PR #1887: New API function srt_clock_type() to retrieve SRT internal clock type.
  • PR #1791: New SRTO_MININPUTBW socket option to control the minimum allowed value of the input bitrate estimate.
  • PR #1652: Run the accept hook (listener callback) before opening an accepted socket providing an opportunity to set some ‘PRE’ options (like SRTO_RCVBUF).

Fixed Issue Highlights

  • PR #1826: Fixed wrong check of common FEC configuration.
  • PR #1781: Added handshake data check to prevent rogue handshakes.
  • PR #1733: Fixed crash and hang up related to CSndLossList.
  • PR #1716: Fixed miscalculations on extreme loss conditions in FEC.
  • PR #1668: Data race when TLPKTDROP while checking loss for ACK candidate.
  • PR #1664: Fixed handshake IP parsing in IPv4-IPv6 connections.
  • PR #1629: Fixed race starting and joining TSBPD thread.
  • PR #1615: SRTO_RETRANSMITALGO becomes readable.
  • PR #1613: Fixed sender hang up (getFlighSpan function and retransmit bug).
  • PR #1589: Fixed BSD builds.
  • PR #1581: Fixed SRTO_MINVERSION not rejecting too old SRT version.
  • PR #1650: Fixed a bug repeating a conclusion HS with rejection (connectivity issue).

Experimental SRT Connection Bonding

  • PR #1837: Fixed group statistics initialization and sent packets metric.
  • PR #1804: Fixed group receiver out of order output (buffering of ignored packet).
  • PR #1796: Fixed bonding packets timestamping.
  • PR #1775: Runtime link stability timeout threshold for main/backup activation.
  • PRs #1761#1783#1784: Fixed packet drops in the main/backup receiving function.
  • PR #1695: Fixed order of group member state change before write ready.
  • PRs #1639#1683#1687: Fixes for synchronization issues and deadlocks.

Changelog

Click to expand/collapse

Core Functionality

291e010 New API function srt_clock_type() (#1887)
90c62af Fixed type conversion build warnings
3bf5ceb Check invalid sockopt values (#1956)
8608ad2 Removed logging in cleanup
35fb87f const SrtOptionAction (#1942)
9442870 Fixed getting SRTO_TLPKTDROP: return config value until connected.
b9d568e Added more logs around accept errors (#1883)
aa51e2d Apply PRE sockopt restriction in listening state (#1939)
f053394 SRTO_CONGESTION: Check optlen in getsockopt
8c8d6fb Fix build with mbedtls older than 428cc52a73. (#1945)
4f06c2e Fixed srt_getsockopt cast for bool options (#1925)
109f667 Minor: file scope for global var and func (#1938)
9e6c90f Minor refactoring around ACK processing (#1928)
65d5483 Use time_point in debugTraceJitter(..) (#1912)
009b7b6 Fixed SRTO_SNDDROPDELAY: use POST restriction
98649a6 Fixed SRTO_KM* options setting. (#1922)
d5f1d08 Refact: moved code to processCtrlUserDefined dedicated function
efd0c0b Refact: moved code to processCtrlShutdown dedicated function
eb6e029 Refact: moved code to processCtrlDropReq dedicated function
7a2b3a2 Refact: moved code to processCtrlHS dedicated function
bd55e29 Refact: moved code to processCtrlAckAck dedicated function
4849c3c SRTO_FC: reject values lower than 32
81d3b95 Build fix: added ParseFilterConfig declaration (#1918)
f31f1fb Applied clang-format on buffer.h.
9cbf82e Added SRT_STATIC_ASSERT macro
a499c42 SocketData moved to group_common.h (#1907)
262fe21 sendBackup: logical OR instead of bitwise
26c07c5 Made CEpoll::m_EPollLock mutable
50c8355 Fixed wrong limitation on SRTO_FC option. (#1899)
e328bec Fix typo of variable name
5a46839 Extended logs for negative or zero RTT estimate on the receiver side (#1876)
1d4338a Added SRT_SYNC_CLOCK_TYPE preprocessor definition (#1885)
93de9c8 Removed unnecessary lock that could cause a deadlock
22d5736 Added restrictions on pktseq/msgno fields in srt_sendmsg2 call (#1879)
2d41869 Use correct keyword for CEPollDesc
449d917 Fix getopt SRTO_TLPKTDROP (#1865)
b38bb7f Changed SRTO_CONNTIMEO restriction to PRE (#1864)
00e42d7 Fixed incorrect group data sync on first connected socket
2bcc219 Fixed incorrect setting streamid in internal config in HS (last 4 characters) (#1868)
3605f6f Removed condition that blocks extending group HS extension in future
18e8889 Restoring RTTVar from cached RTT after reconnection
2ef0c8d Fixed wrong type prefix for CUnit announcement (#1860)
a1bcd4a Fixed Windows build with latest pthreads
d1d351d Fixed lock around ackmessage (#1849)
db3db78 Fixed SRT_EPOLL_IN epoll event loss problem (#1843)
47e477b Unguarded access to epolldesc from group sender code (#1846)
de54e65 Fixed wrong check of common FEC configuration (#1826)
12d03fe Removed 'm_' prefix in socket config structs (#1839)
6e32509 Fixed bug: wrong size setting for StringStorage. (#1841)
0ee1b98 Fixed restrictions for options and replication in the app array
93f710f Fixed some int conversion build warnings
54e435e Fixed a missing group stats initialization
e90b332 Fixed missing pktSentUnique stats for backup
82159e4 Added SRTO_MININPUTBW socket option
030b0d4 Fixed wrong max socket ID value formula (#1816)
21058d5 Fixed post-action for socket options
1c7da11 Removed invalid max socket ID check
3754562 Created internal config storage for a socket (#1776)
bdb3191 Fixed group rcv buffering of ignored packet (#1804)
66cb7c7 Using numeric limits not only with C++11 (#1807)
f1b35cb Fix build with GCC 11. (#1806)
40943db Fixed FormatTime subseconds
94077c3 Fixed pre-initialization of the last sample time for groups
28f2021 Minor fixes: warn, formatting, trace, etc.
2872939 Workaround ABI compatibility due to ENABLE_EXPERIMENTAL_BONDING
4744283 Fix warning of undefined ENABLE_EXPERIMENTAL_BONDING
2d14df2 Fixed bonding packet timestamping
7656759 Runtime link stability timeout for main/backup (#1775)
2e9c1c7 Added group receiver drop log warning (#1761)
dcd62ca Revised pre-bind option restrictions (#1759)
c89995b FEC: Aligned NOTDONE and SUCCESS result of hanging as acceptable (#1790)
8845473 Fixed packet drop when reading from members (#1784)
5ec84d2 Fixed faulty packet drop by a group. m_RcvBaseSeqNo must be updated only when a packet is read.
7d99b80 Added handshake data check to prevent rogue handshakes (#1781)
a6a7a20 Bonding: refactoring receiving function (#1763)
481e7f7 Minor: renamed CUDT m_tsTmpActiveSince to m_tsFreshActivation (#1774)
051760d Minor refactoring of backup CheckIdleTime
74fc74a Increased FormatTime precision (#1766)
0f8623e Fixed too early closed caller socket in background. (#1750)
b2d35fc Splitting sendBackup_CheckParallelLinks(..) (#1751)
40aafa2 Added socket ID to RCV-DROP log message
b665e35 Main-backup: renaming member link arrays (#1744)
8b4c8cd Removed unused and swelling m_pAcceptSockets field + refax (#1740)
648e8b5 CSndLossList limits the maximum offset (#1733)
a5609d3 Reimplemented strerror to use static messages (#1627)
3ca4e09 Main-backup: added QualifyMemberStates function (#1739)
6e78ecb Run the accept hook before opening caller's socket
dccaf76 Fixed idle link activation by higher weight
26adb8b Refactoring backup link activation
62d5d30 fix dllexport of srt_rejectreason_str()
df25ca8 Minor warning fixes (C4267): type conversion with possible loss of data (#1710)
de57eca Fixes potential exception slipup on memory allocation error
60a66a3 Set closing state for a broken link
21ad8d1 Fixed miscalculations on extreme loss conditions in FEC (#1716)
c12e619 Refactored member pointer: now raw pointer to socket data (#1696)
ba883c3 CSync::wait_until is now mapped to CV::wait_until instead of wait_for.
88affe5 Minor refactoring of CheckRunningStability (#1713)
f964415 Minor compiler warning fixes (conversion with possible loss of data)
0add6cc Fixed formal problems detected by clang
0a61cb9 Fixed a bug repeating a conclusion HS with rejection (#1650)
82ada5d Fixed order of group member state change before write ready
b84f3d2 CheckValidSockets no longer remove sockets from group, this was causing inconsistency. (#1687)
bf6a5b3 Improved RCV-DROPPED log message (#1682)
d340f6d Fixed clearing errored group in connecting (#1683)
c42bc13 A change in setupCC to access CUnitQueue via CRcvQueue instead of CRcvBuffer (#1681)
d3ad2a4 Removed deprecated ANDROID macro (#1684).
03dafd8 Moved post-hs-update locking code out of mutex (#1677).
5bc58cd CUDTException is no longer exported in DLL
30ca93f Fix: check incoming ACK value in case of a rogue peer
c2f9316 Fixed some compiler warnings. (#1669)
b7eb2d2 Fixed data race: TLPKTDROP while checking loss list for ACK candidate (#1668)
81b6651 Fixed HS IP parsing in v4-v6 connection
d91e66f Fixed wrong reaction on failure KMREQ and unsafe construction of EventVariant (#1666)
411264f Fixed async event reporting and mutex lock ordering for groups (#1639)
b0a9d4d Use TARGET_OS_MAC instead of TARGET_OS_OSX/IOS/TV (...

Read more

v1.4.3-rc.1

19 Apr 16:09
3bf5ceb
Compare
Choose a tag to compare
v1.4.3-rc.1 Pre-release
Pre-release

Release Candidate 1.

v1.4.3-rc.0

08 Mar 14:52
53cc738
Compare
Choose a tag to compare
v1.4.3-rc.0 Pre-release
Pre-release

Changelog

Click to expand/collapse

Core Functionality

47e477b Unguarded access to epolldesc from group sender code (#1846)
de54e65 Fixed wrong check of common FEC configuration (#1826)
12d03fe Removed 'm_' prefix in socket config structs (#1839)
6e32509 Fixed bug: wrong size setting for StringStorage. (#1841)
0ee1b98 Fixed restrictions for options and replication in the app array
93f710f Fixed some int conversion build warnings
54e435e Fixed a missing group stats initialization
e90b332 Fixed missing pktSentUnique stats for backup
82159e4 Added SRTO_MININPUTBW socket option
030b0d4 Fixed wrong max socket ID value formula (#1816)
21058d5 Fixed post-action for socket options
1c7da11 Removed invalid max socket ID check
3754562 Created internal config storage for a socket (#1776)
bdb3191 Fixed group rcv buffering of ignored packet (#1804)
66cb7c7 Using numeric limits not only with C++11 (#1807)
f1b35cb Fix build with GCC 11. (#1806)
40943db Fixed FormatTime subseconds
94077c3 Fixed pre-initialization of the last sample time for groups
28f2021 Minor fixes: warn, formatting, trace, etc.
2872939 Workaround ABI compatibility due to ENABLE_EXPERIMENTAL_BONDING
4744283 Fix warning of undefined ENABLE_EXPERIMENTAL_BONDING
2d14df2 Fixed bonding packet timestamping
7656759 Runtime link stability timeout for main/backup (#1775)
2e9c1c7 Added group receiver drop log warning (#1761)
dcd62ca Revised pre-bind option restrictions (#1759)
c89995b FEC: Aligned NOTDONE and SUCCESS result of hanging as acceptable (#1790)
8845473 Fixed packet drop when reading from members (#1784)
5ec84d2 Fixed faulty packet drop by a group. m_RcvBaseSeqNo must be updated only when a packet is read. However, it could have been updated also when only checked.
7d99b80 Added handshake data check to prevent rogue handshakes (#1781)
a6a7a20 Bonding: refactoring receiving function (#1763)
481e7f7 Minor: renamed CUDT m_tsTmpActiveSince to m_tsFreshActivation (#1774)
051760d Minor refactoring of backup CheckIdleTime
74fc74a Increased FormatTime precision (#1766)
0f8623e Fixed too early closed caller socket in background. (#1750)
b2d35fc Splitting sendBackup_CheckParallelLinks(..) (#1751)
40aafa2 Added socket ID to RCV-DROP log message
b665e35 Main-backup: renaming member link arrays (#1744)
8b4c8cd Removed unused and swelling m_pAcceptSockets field + refax (#1740)
648e8b5 CSndLossList limits the maximum offset (#1733)
a5609d3 Reimplemented strerror to use static messages (#1627)
3ca4e09 Main-backup: added QualifyMemberStates function (#1739)
6e78ecb Run the accept hook before opening caller's socket
dccaf76 Fixed idle link activation by higher weight
26adb8b Refactoring backup link activation
62d5d30 fix dllexport of srt_rejectreason_str()
df25ca8 Minor warning fixes (C4267): type conversion with possible loss of data (#1710)
de57eca Fixes potential exception slipup on memory allocation error
60a66a3 Set closing state for a broken link
21ad8d1 Fixed miscalculations on extreme loss conditions in FEC (#1716)
c12e619 Refactored member pointer: now raw pointer to socket data (#1696)
ba883c3 CSync::wait_until is now mapped to CV::wait_until instead of wait_for. When C++11 sync is enabled, it will reduce the number of time conversions.
88affe5 Minor refactoring of CheckRunningStability (#1713)
f964415 Minor compiler warning fixes (conversion with possible loss of data)
0add6cc Fixed formal problems detected by clang
0a61cb9 Fixed a bug repeating a conclusion HS with rejection (#1650)
82ada5d Fixed order of group member state change before write ready
b84f3d2 CheckValidSockets no longer remove sockets from group, this was causing inconsistency. (#1687)
bf6a5b3 Improved RCV-DROPPED log message (#1682)
d340f6d Fixed clearing errored group in connecting (#1683)
c42bc13 A change in setupCC to access CUnitQueue via CRcvQueue instead of CRcvBuffer (#1681)
d3ad2a4 Removed deprecated ANDROID macro (#1684).
03dafd8 Moved post-hs-update locking code out of mutex (#1677).
5bc58cd CUDTException is no longer exported in DLL
30ca93f Fix: check incoming ACK value in case of a rogue peer
c2f9316 Fixed some compiler warnings. (#1669)
b7eb2d2 Fixed data race: TLPKTDROP while checking loss list for ACK candidate (#1668)
81b6651 Fixed HS IP parsing in v4-v6 connection
d91e66f Fixed wrong reaction on failure KMREQ and unsafe construction of EventVariant (#1666)
411264f Fixed async event reporting and mutex lock ordering for groups (#1639)
b0a9d4d Use TARGET_OS_MAC instead of TARGET_OS_OSX/IOS/TV (#1658).
bf37de1 Replaced CS with UniqueLock in CUDT::sendCtrlAck
721158c Moved ACK sending to CUDT::sendCtrlAck
a6f6663 Added m_RcvTsbPdStartupLock to protect TSBPD thread start and join. Deleted m_RecvDataLock. Fixes #1624
7997515 Fixed wrong usage of m_RecvDataLock. m_RecvDataCond must be used with m_RecvLock instead of m_RecvDataLock. m_RecvDataLock is only used to sync releaseSynch() calls.
7fc9389 Fixed CUDT::m_SrtHsSide initialization
651a3a0 Fixed getPeerSpec() left shift loosing value
6502c1c Fixed undefined zero length array in epoll
929b9fc SRTO_RETRANSMITALGO becomes readable (#1615)
bda3383 Added mutex protection and null check for removeFromGroup (#1617)
1e6e5ac Fixed getFlighSpan function and rexmit bug (#1613)
e145ca5 Fixed reports from LGTM (#1542)
724b841 Fixed BSD builds (#1589)
ca79ad9 Fixed SRTO_MINVERSION didn't reject too old version (#1581)

Unit Tests

6254c1d A basic check for initial group stats values
f7ee434 Added tests for SRTO_MININPUTBW
17db0cb Added 1 p.c. tolerance for long waiting time (#1762)
42a3bb7 Enabled some CSndLossList::insert tests
c507c5b Fixed connection timeout test to not reuse broken socket (#1712)
86327e9 Check IPv6 connection and socket address (#1670)
3bc810b Check CIPAddress::pton(..)
702153f Added tests for srt_group_connect and connect callback (disabled, fail due to SRT issues)
8903060 Added CThread::joinable() unit test

Build Scripts (CMake, etc.)

53cc738 Bump version to 1.4.3
1dced8b Fixed possibility to compile examples with C++03 standard (#1830)
df55d70 Using xenial dist in Travis with Java 11 (#1786)
0d0888a Fixed CMake CMP0048 policy restriction (#1765)
c6591d5 Fixed PowerShell script to not fail on CMake warning. CMake complaints about CMake version 2.8.8 requirement of GTest. Versions below 2.8.12 will soon become deprecated.
2856305 Made SRT versioned SO named with major and minor
adaf323 Use Java 11 in Travis
a165d45 Add ppc64le platform to CI (#1717)
fda8b7b Renamed codecov config file
6e25e48 Added codecov config. Coverage target 40%.
d4a217b Run codecov before sonar-scanner
bca6acf Added LGTM configuration to enable bonding (#1641)
2e39603 Added codecov test coverage report uploading from CI (#1640)
8af865e Enabled bonding in Travis and GitHub CI
d66d116 Enabled unit tests in VS 2015 AppVeyor CI
68f0502 Enabling building apps in AppVeyor CI. Were previously disabled in #1346 to reduce build times.
49f19fe Correction of error "'back_inserter': identifier not found"

Sample Applications

4aa9100 Added mininputbw URI query parameter
662db72 Traverse srt_options by const reference
44503cd Fixed hangup when exitting on interrupt (#1787)
64edcf6 Fix too premature stopped reading in srt-file-transmit (#1785)
524565f Added timepoint in json stats format (#1780)
85e3013 Fix virtual destructor for abstract struct SrtStatData (#1771)
3cc7c30 Refactored stats tables with universal printers (#1743)
68edf20 Created an example of a non-blocking client (#1753)
5066569 Added non-blocking option for bonding examples (#1746)
fd82e83 Show warning if UDP target is without host
8270f80 Fixed logfa handling in srt-live-transmit (#1647)
06a3c1e CSV stats timepoint follows ISO 8601 format
172d91f Test apps improvements + build break fixes with logging off (#1638)
7658591 Added missing override, removed redundant virtual

Documentation

6012fdf Added SRTO_MININPUTBW to the docs
954968a Fixed bad path to 'Contributing' md (which was moved).
4b7616a Updated outdated API info
05a803c Removed a note regarding IPv6 usage
6ff3225 Fixed formatting of API.md
6f953e3 Fixed wrong description concerning passphrase (#1701)
c065d88 Reworked API functions document
8254d43 Fixing the android build script (#1654)
8114620 Fixed Windows build instructions (SRT ver).
f6438db Markdown documentation linting (#1653)
49dd2ec Improved readme formatting (#1645)
e567939 Formatting of APISocketOptions.md (#1637)
cd4f140 Added LGTM badges
7848fcd Added lacking description for grpdata field in SRT_MSGCTRL (#1623)
f821125 Improved latency description in APISocketOptions (#1607)
f646ef8 Fix: changed INVALID_SOCKET to SRT_INVALID_SOCK (#1586)
257e022 Readme: Fixed cookbook link (#1596)
73ee1e1 Fixed URI option in srt-live-transmit.md (#1578)

v1.4.2

25 Sep 12:20
50b7af0
Compare
Choose a tag to compare

Release Notes

API/ABI Changes

  • SRT_MSGCTRL.srctime now expects SRT internal clock timestamp (as returned from srt_time_now()). In previous versions a wallclock time in microseconds since the UNIX epoch was expected.
  • Several fields were added to the CBytePerfMon structure (statistics).

New Features and Enhancements

  • FR #1103: Added support for C++11. Reworked timing and synchronization objects.
    Three sources of timing are now available (selected via a build option):
    • POSIX gettimeofday() - default build mode (affected by discontinuous jumps in the system time);
    • POSIX CLOCK_MONOTONIC. CMake build option: -DENABLE_MONOTONIC_CLOCK=ON. See --enable-monotonic-clock in BuildOptions.md;
    • C++11 std::chrono::steady_clock, std::thread, std::mutex, etc.​ CMake build option: -DENABLE_STDCXX_SYNC=ON. See --enable-stdcxx-sync in BuildOptions.md.
  • PR #1367: Added SRT Source Time API support. It allows setting a source timestamp on a packet that corresponds to a packet creation/reception time. See the Time Access section of the API docs.
  • PR #1362: Added an improved retransmission algorithm which reduces the retransmission overhead on a link. Set option SRTO_RETRANSMITALGO=1.
  • PR #1203: Added SRTO_BINDTODEVICE option to bind a socket to a specified NIC. SRTO_BINDTODEVICE option reflects the system option SO_BINDTODEVICE for an SRT socket.
  • PR #1291: Customizable rejection reason code. SRT library now lets the application provide a code with rejection reason (in a listener callback) if connection request has been rejected by the application. See Rejection Codes in the Access Control guide.
  • PR #1194: Added new rejection reason: on timeout. See SRT_REJ_TIMEOUT in API-functions.md.
  • PR #1283: Extended SRT statistics with pktSentUniqueTotal, pktRecvUniqueTotal. Statistics documentation now has a summary table for better navigation.
  • PR #1024: Added srt_getversion() API function.
  • PR #1510: Moved socket options documentation to a separate file APISocketOptions.md. It now has a summary table for better navigation.
  • PR #1536: Socket options SRTO_INPUTBW and SRTO_OHEADBW are now readable.
  • PR #1440: The logging functionality has been improved by means of defining new and more fine-grained Functional Areas (FA) to which log messages are assigned. This is done to prevent too many debug log messages from the library influencing performance with the debug logging turned on.

Fixed Issues

  • PR #1500: Fixed bug: finding the listener's muxer only by port number was wrong.
  • PR #1480: Fixed wrong reject reason on async connect.
  • PR #1359: Fixed CSndLossList::insert with negative offset.
  • PR #1381: Fixed default binding for IPv6-target rendezvous.
  • PR #1417: Fixed HS TSBPD flags check.
  • PR #1431: Improved CRcvLossList protection from concurrent access.
  • PR #1388: Fixed error reporting on connect/accept.
  • PR #1355: Correctly handle IPv4 connections on IPv6 listener.
  • PR #1348: Fixed Moving Average for receiver and sender buffers. Also PR #1289.
  • PR #1335: Protecting RCV buffer access.
  • PR #1333: Fixed local storage depleted issue #486.
  • PR #1332: Fixed restrictions on pre-bind only options.
  • PR #1136: Avoid reporting packets rebuilt by FEC as lost.
  • PR #1148: Improved inserting a serial element into sender's loss list.
  • PR #1079: Fixed handling of stale loss report.
  • PR #1078: Fixed closing the crypto control.
  • PR #1067: Added CSync class as a high-level CV wrapper.
  • PR #1077: Renamed legacy UDT_EPOLL_* symbols.
  • PR #1045: Eliminated ref_t. Some more convention fixes.
  • PR #1010: Crypto: Reset the passphrase in memory on close for security reasons.

Deprecated or Renamed

  • Removed deprecated socket options: SRTO_TWOWAYDATA, SRTO_TSBPDMAXLAG, SRTO_CC, SRTO_MAXMSG, SRTO_MSGTTL, SRTO_SNDPBKEYLEN, SRTO_RCVPBKEYLEN.
  • Removed deprecated option names: SRTO_SMOOTHER (use SRTO_CONGESTION), SRTO_STRICTENC (use SRTO_ENFORCEDENCRYPTION), SRTO_TSBPDDELAY (use SRTO_LATENCY).

See PR #1364 for details.

Changelog

Click to expand/collapse

Core Functionality

c4e2106 Fixed ambiguous this_thread (#1572)
39916e0 Marked bonding experimental (#1563)
47216f3 Set default stability timeout to 80ms (#1565)
a263f89 Changed the IPE error message. epoll_remove nonexisting socket is not an IPE, as this function is used in API
77fe606 Removed SRTO_ESTINPUTBW (#1561)
6e7520b Changed priority rule to higher preferred. Set uint16_t as weight type. (#1550)
4100835 Fixed filling group data, now done by a common procedure (#1553)
eeddc4c Added UPDATE event raised when a member connection broken (#1509)
c576662 Not adding socket to group when address buffer is not set (#1544)
e756477 Added connection callback, called when the async connection succeeds or fails (#1487)
ac0cfdb Added SRTO_ESTINPUTBW option to get estimated input bitrate
bb29302 Made SRTO_INPUTBW and SRTO_OHEADBW readable
9953e9f Backup link selection to crop-active improved to find oldest active (#1473)
a95a6a4 Restored THREAD_PAUSED/THREAD_RESUMED macros for application specific thread watchdog. (#1534)
889085e Added retrieving weight setting in group data (#1529)
af33637 prevent socket fd leaks to child processes (#1465)
5469cd3 Fixed bug: if all group connection failed, E epoll event should be set on the group (#1527).
633da74 Fixed some problems in group code found during review (#1505)
6383693 Added length type wrapper in sockaddr_any for convenience. (#1492)
333d34f Fixed bug: finding listener's muxer by port is wrong (#1500)
6309f3e Moved socket group code to separate files (#1483)
de938bd Created fine-grained logging FA definitions (#1496)
3ad4518 A workaround for pthread_cancel on Android
29a8195 Fixed bug: write back actual sending time if no source time supplied (#1497)
87df928 Fixed bug: listener callback was changing SRTO_GROUPCONNECT option. (#1491)
98e86d1 High level logger FA definitions (#1440)
b631276 Fixed bug: merged update/add_usock. usock didn't regard the groups. (#1485)
cbe2503 Improved broken member link detection (#1474)
ea78da7 Fixed bug: check for IPv4 ONLY if BindToDevice is requested (#1482)
4aa6fbb Fixed wrong reject reason on async connect (#1480)
45c727d Fixed error handling in group connect (#1456)
94fb6df Added SRTO_BINDTODEVICE option (#1203).
907d1cc Removed remaining calls to SockaddrToString
c8eded9 Using sockaddr_any::str() instead of SockaddrToString(sockaddr_any&)
22dbf01 Set the remote address in the group member data for an accepted member socket (#1467)
c528488 Completed the list of per-member socket options (#1470)
7790171 Fix CSndLossList::insert with negative offset (#1359)
7e4554f Fixed fallback for memory allocation errors (#1459)
19f8b80 Minor changes to C++11 and posix sync (#1379)
06d3c75 Split-off POSIX sync version into a separate file (#1455)
931aae0 Fix the activation and stability check criteria (#1449)
c88ff88 Added proper error handling around sync resources (#1393)
cebb67e Pre-initialization of ISN for the group before connecting any socket (#1438)
f204c2c Update group member status basing on packet type (#1448)
4dcfa5d Added Drift Tracer socket option
e4ec8dc Reordered socket/eid removal on unsubscription (#1390)
b0c1520 Renamed SRTO_RETRANSMISSSION_ALGORITHM (#1439)
2f29eaa Fixed removing sockets from group members' rolled list after parallelly closed. (#1436)
72ba33e Fixed data usage in a logging instruction that contradicts the condition (#1426)
5ac3c0c Fixed default binding for IPv6-target rendezvous. (#1381)
088962b Fixed HS tbbpd flags check (#1417)
152cff9 Improved CRcvLossList protection from concurrent access (#1431)
3c334a0 Fixed error reporting on connect/accept. (#1388)
d2f0e8a Fixed wrong filling group data (#1412)
7ae4ba7 Replaced CGuard with corresponding lock (#1418):
b229e8a Fixed missing break after case
d2d8f34 Added smarter retransmission algorithm
589663f Default init duration. The default constructor does not set the value to 0.
19e5a22 Fixed duplicated variable name. Local variable len hides a parameter of the same name.
502bf3c Fixed static check warning. Result may overflow before it is converted to 64-bit integer.
89902fb Added null-check for buffer extraction procedure (#1391)
ee870de Fixed incorrect error check in fillGroupData (#1410).
18ede16 Fixed epoll edge triggered update event (#1407).
9654eb6 Fixed some typos in comments...

Read more