Releases: Haivision/srt
v1.5.1
Release Notes
API / ABI / Integration Changes
API/ABI version: 1.5.
Some minor changes touching, but not affecting the API/ABI compliance:
- PR #2440: The SRT API file srt.h defines macros
MJ
andMN
and almost immediately undefines them. Those short names could potentially conflict with macros in 3rd party applications. Renamed macroMN
toSRT_EMN
andMJ
toSRT_EMJ
. - PR #2451: Fixed DLL build when using
mingw-w64
that supports__declspec(dllexport)
and__declspec(import)
specifiers.
Improvements and Important Bug Fixes
- PR #2333: Added support for OpenSSL EVP API. Can be enabled with the help of the
-DUSE_ENCLIB=openssl-evp
CMake build option. - PR #2408: Improved timing for idle connections. TSBPD time base (TsbpdTimeBase) and clock drift (Drift) values are adjusted to take the TSBPD wrapping period into account even if there are no data packets transmitted over the connection.
- PR #2384, #2395: Data race fixes for
CRcvQueue
andCUnitQueue
. - PR #2405: Improved receiver performance via
CUnitQueue
changes. - PR #2416: Fixed the calculation of the
byteRcvLoss
statistic. This is a fix for the issue #2414 introduced in PR #2212. Affected version is v1.5.0. - PR #2413, #2425: Fixed data races in crypto library in the case of
mbedTLS
. - PR #2391: Fixed the
sendBroadcast()
function message length. - PR #2398: Added
ENABLE_BONDING
socket option to the Windows PowerShell build script.
Documentation
- PR #2454: Added description of package managers supporting the SRT library to Build Instructions.
Contributors
@maxsharabayko, @jeandube, @oviano, @robUx4, @mbakholdina, @ethouris, @gou4shi1, @maksqwe, @lewk2, @Adela0814
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.
Sample Applications and Scripts
0bc3b03 List contributors using the changelog generation script (#2456)
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
90d2f07 Fixed the version to 1.5.1 and did some minor changes to build options summary table.
82f742b Added Packet Managers section to Build Instructions.
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.1-rc.0
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
Release Notes
API / ABI / Integration Changes
API/ABI version: 1.5.
-
PR #2316: Renamed
ENABLE_EXPERIMENTAL_BONDING
build option toENABLE_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 functionsrt_rejectreason_str()
should be used instead. -
PR #2271: Fixed missing
extern "C"
for thesrt_rejectreason_str()
API function. -
PR #2152: Use
SOCKET
type for anyWIN32
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 the
ENABLE_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 thesrt
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 incraftKmResponse()
. Fixes crash #2231. -
PRs #2291, #2292: Fixed
volatile
keyword usage. Prefer the usage ofstd::atomic
where possible. -
PR #2223:...
v1.5.0-rc.0
Release Candidate Notes
API/ABI/Integration Changes
API/ABI version: 1.5.
- PR #2316:
ENABLE_BONDING
build option (instead ofENABLE_EXPERIMENTAL_BONDING
). Dummy bonding API version if disabled (default). - PR #2312: Deprecated
srt_rejectreason_msg[]
. - PR #2152: Use the
SOCKET
type for anyWIN32
environment. - PR #2271: Fixed missing
extern "C"
for API functionsrt_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 usingstd::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
andSNDBUF
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...
v1.4.4
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
).
- On Windows: C++11 steady clock is used by default (
- 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 settingSRTO_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(..)
andCUDT::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...
v1.4.4-rc.1
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
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
v1.4.3
Release Notes
API/ABI/Integration Changes
API/ABI version: 1.4.
- PR #1925: fixed/changed cast to
bool
instead ofint
insrt_getsockopt(..)
/srt_getsockflag(..)
API functions for: - PR #1794: Fixed ABI compatibility around
SRTO_BINDTODEVICE
value depending onENABLE_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 (...
v1.4.3-rc.1
Release Candidate 1.
v1.4.3-rc.0
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)