Skip to content

v1.5.0-rc.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@maxsharabayko maxsharabayko released this 05 May 09:37
· 410 commits to master since this 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 peerAddress in connectIn(..). CUDT::startConnect(..) sets it itself.
790b783 Small refax of CUDTUnited::channelSettingsMatch(..)
5b0811c Replaced global CUDTUnited with static local variable (#1913)
0c604c1 Moved SND and RCV buffers into the 'srt' namespace

Unit Tests

b8e788a Replace volatile with atomic
f372356 Use std::random_device in Transmission.FileUpload
e0aaa44 Minor improvement of the TestSocketOptions
01ef57a Added unit tests for RCV buffer in stream mode
427cece Receiver buffer tests
8f2d318 Refactored RCV buffer unit tests (#2170)
6e89639 Fixed async launch TestConnection.Multiple
8bcf30b More RCV buffer unit tests
fa1c373 Added check for a minimal value of the uniform distribution.
ac6ec62 Improved the TestConnection.Multiple test. Using std::array. Try to bind SRT directly instead of UDP.
4f7f999 Remove duplicated includes

Build Scripts (CMake, etc.)

886843e Sendfile and recvfile examples don't need C++11.
0b47e6f Sendfile and recvfile examples don't need logsupport.
c8726ac Fixed building examples with C++11 disabled (#2319)
1ddeaec build openssl share library without version extesion for android.
277fa58 Travis MinGW job now uses OpenSSL 1.1.1g
2aa90bb CMake: fix system library names for MinGW (#2219)
d9b7988 Add ShowProjectConfig CMake Module. (#2161)
a5b61db Fixed missing ws2_32 lib in Windows installer (#2169)
2da63dc Add Android build action to GitHub CI (#2149)
15f33d4 Fix build with default configuration for GCC <4.7 (#2160)
6886bfa Add enable-experimental-bonding opt in configure
73b49fe Support NDK r23, OpenSSL v3 (#2148)

Sample Applications

d618c30 Clean up sendfile and recvfile examples.
a77b3ae Replace volatile with atomic
fb494e4 Remove redundant ';' after '}'
40b5129 Added support for adapter parameter in caller mode (#2202)
ce2742b Split off stats writer from apputil.cpp (#2130)
1a2aa05 Print SRT version and clock type

Documentation

45acb74 Updated bonding API functions doc on return errors.
7b2311f Added note on versioning (#2311)
f1a6415 Fixed srt_bstats return type description
badf401 Fixed SRT version in srt-live-transmit.md
9b95ffc Reworked the build options document. (#2247)
5b7ac45 srt-live-transmit.md: add ffplay, ffprobe examples (#2242)
cf34d69 Updated options description for srt-live-transmit (#2209)
545700f Added and updated description of useful test applications (#2191)