Skip to content

v1.5.4

Latest
Compare
Choose a tag to compare
@maxsharabayko maxsharabayko released this 11 Nov 09:45
· 12 commits to master since this release

Release Notes

API / ABI / Integration Changes

API/ABI version: v1.5.

  • PR #2967: SRTO_VERSION socket option is read-only. Removed the ability to set a value (srt_setopt(..)).

  • PR #2849: Removed the possibility to use optlen=-1 in srt_setsockopt.

  • PR #2683:❗Changed conditions for setting caller and listen callbacks.
    srt_listen_callback and srt_connect_callback can only be modified prior to listening or connecting.
    They can be also set to NULL. SRT_ECONNSOCK is now returned in case the mentioned functions are called on a connected socket (instead of SRT_EINVPARAM).

  • PR #2804: Fixed NULL characters handling inside of strings. For example, setting the SRTO_STREAMID to a value containing multiple null characters '\0' inside.

  • PRs #2887, #2918, #2912: Fixed getting some socket options from a group (srt_getopt).

Known Issues

  • #3072: Getting SRTO_STREAMID on an accepted group connection does not return a value (listener side).
    There would also be a debug assertion in a debug build on the listener side when a group connection with SRTO_STREAMID set is being accepted.

New Features and Improvements

  • PR #2700: Added support for Botan cryptography library.

  • PR #2940: Added support for building SRT on visionOS.

Important Bug Fixes

  • Thread Safety fixes:

    • PR #3047: Fixed static variable usage in the crypto module.
    • PR #3038: Improved mutex protection of the TSBPD.
    • PR #2998: Fixed a data race on the listener's config.
    • PR #2990: Fixed a potential data race around m_bGCStatus variable.
    • PR #2972: Fixed TSBPD thread create/join protection.
    • PR #2893: Fixed data races and multithreading issues.
    • PR #2723: Fixed lacking mutex protection of some ACK-related fields. It sometimes leads to a hanged-up transmission at high bitrates, because the receiver may wrongfully report a lack of space in its buffer for receiving more packets.
    • PR #1884: Fixed a possible socket leak in srt_accept failure.
    • PR #1824: Fixed some lock-order-inversion and data race problems (TSAN reports).
  • Logging improvements

    • PR #3007: Slowdown 'ACKACK out of order' log frequency. Now reported no more than once per second.
    • PR #2733: Improved log suppression logic.
  • Fixes related to SRTO_MAXREXMITBW.

    • PR #3008: Include packet header in retransmission bandwidth calculation.
    • PR #2884: Added getter for the SRTO_MAXREXMITBW socket option.
  • Encryption

    • PR #2962: Improved AES GCM encryption, changed GCM IV length to 12 bytes.

    • PR #2921: Drop unencrypted packets if the receiving KM state is "secured".

    • PR #2905: Fixed HaiCrypt_Clone() by properly setting up the RX crypto context.

    • PR #2880: Fixed the PacketFilter (FEC) configuration not counting the AEAD AUTH tag length.

  • Fixes related to SRT Socket groups.

    • PR #3066: Fixed incorrect autodetection of optlen of some socket options when a group derives their values from a member socket.

    • PR #2966: Broadcast sending logic was not handling the lack of SND buffer space correctly.
      If sending over at least one link succeeded, but some have failed, those failed links are now closed.

    • PR #2945: Fixed counting packets dropped at the beginning of the transmission. Fixed by setting the RCV base seqno of a group using peer ISN.

    • PR #2942: Fixed group RCV drop sequence range log.

    • PR #2938: Fixed group synchronization of accepted sockets. Group start time and sequences were not properly set.
      Fixed time base sync in a group. Fixed receiving group read-ready check

    • PR #2935: Removed group syncing when sending control ACK. The synchronization is now done upon reading from a group. This fixes packet sequence numbers in ACKs of group members.

    • PR #2934: Fixed pktRcvDrop group statistic. A group receiver was not counting dropped packets at all.

    • PR #2932: Fixed group statistics. Discarded member's packets are no longer counted as dropped.
      A broadcast group member may drop existing packets from the RCV buffer
      because they were already read from another member, not because they are missing.
      Such packets are now counted as 'discarded', and not included in the 'dropped' counter.

    • PR #2931: Fixed RCV loss tracking and reporting in a group. Fixed faulty dropping of some missing packets.

    • PR #2889, #2890: Fixed POST options setting on a connected group. A call to srt_setsockopt was returning an error if called on a connected group socket.

  • Statistics

    • PR #2965: Fixed missing initialization of the traceBelatedTime statistic.

    • PR #2811: Fixed wrong pktSndDrop stats value. In SRT v1.5.0 - v1.5.3 pktSndDrop counter is always incremented by 1 regardless of the actual number of dropped packets.

  • PR #3034: Fix stack buffer reference after it goes out of scope.

  • PR #2929, #2834: Fixed possible hang-up when SRT sends its packet over UDP socket on Windows.

  • PR #3031: Fixed nonchecked empty config for packet filter.

  • PR #2877: Fixed RCV loss list by inserting a seqno with a big distance after the largest seqno.

  • PR #2832: Fix extra ACK sent after a connection is established.

  • PR #2815: Improved Flow Window Size management on network congestion reducing the number of needlessly dropped packets.

Build

  • PR #2988 Removed VC 2013 from the AppVeyor CI. Added VC 2022.

  • PR #2920: Switch default crypto library from openssl to openssl-evp (see -USE_ENCLIB build option).

  • PR #2860: Fixed linking bcrypt on Windows when mbedtls >=v3.5.0.

  • PR #2842: Fixed mbedtls >=v3.5.0 build error on windows.

Sample Applications

  • PR #3002: Fixed verbose log linkage difference.

  • PR #2848: Added simplified support for RTP input in srt-live-transmit.

  • PR #2015, #3041: Added URL percent decoding to the URL query string keys and values.

Documentation

  • PR #2762: Added Rejection Reasons document.
  • PR #2921: Update the SRT_KM_S_SECURED description. Updated pktRcvUndecrypted description.
  • PR #2875: Updated the documentation about latency and transmission type.
  • PR #2820: More explicit description of grpdata_size updates.

Contributors

@clime, @davemevans, @ethouris, @funman, @jean-michel-gonet, @jeandube, @jlsantiago0, @jmgonet, @jschultz410, @kageds, @kgbook, @kura, @lelegard, @leleliu008, @maxsharabayko, @ori-sky, @oviano, @praisedavid787, @siriobalmelli, @tommyvct, @wangyoucao577, @yomnes0, @zulkis

Full Changelog

Click to expand/collapse

Core Functionality

a8c6b65 Fixed group import option. SRTO_CONNTIMEO, SRTO_PAYLOADSIZE, SRTO_PBKEYLEN had size autodetection bugs.
1ce7dba Resolved GCC13 build warning regarding std::copy of a bool.
e2f133b Renamed TSBPD class functions.
e23497d Fixed static variable usage in the crypto module (#3047).
3c7022e Improved mutex protection of the TSBPD (#3038).
62f46aa Fix stack buffer reference after it goes out of scope (#3034).
fe638be Fix build with GCC>13 and C++>=20 (#3033).
a7b3711 Fixed nonchecked empty config for packetfilter (#3031).
990eaed Fixed initialization problem in SocketKeeper version with acquire (#3026).
ab000e3 Moved debug-related functions to common (#3024).
3e0ef4b Fixed pthread_setname_np(3) call on NetBSD (#3018).
ff96e17 Some refactoring per clang-reported warnings (#3019).
2fff34a Fixed group lock-order-inversion (#3013).
eecc176 Added busy counter for sockets and various fixes for data race problems (#2893).
70e2127 Slowdown 'ACKACK out of order' log frequency (#3007).
49cab20 Include packet header in rexmit BW calculation.
bd071e1 Fix the group option that should be taken from a socket (#2912).
430a67a Added IOVector constructor.
f7b32e7 Apply logger lock on its config.
cf4b080 Apply lock on RCV buffer read-ready check.
91f2c59 Fixed THREAD_STATE_INIT usage in CRcvQueue (#3001).
b8a2822 Made CSndQueue::m_counter atomic.
4270a11 Fixed a data race on listener's config.
1919479 Changed CUDT::m_pListener to CSharedObjectPtr.
cd9615a Added SharedLock to srt::sync. Added srt::sync::ExclusiveLock. Added srt::sync::CSharedObjectPtr.
77eed81 Applied clang-format on cache.h and cache.cpp.
968c9f9 Set ACK position based on RCV buffer first nonread seqno (#2931).
ffdebd3 Added a shared mutex class (#2981).
5819ade Improved AES GCM encryption, changed GCM IV length to 12 bytes (#2962).
dbf5965 Added some SRT_ATTR_EXCLUDES to CUDT (#2979).
bc2f48e Put the use of m_bGCStatus under m_InitLock
84d18ec Added missing SRT_ATTR_GUARDED_BY(m_GlobControlLock). Removed unused m_MultiplexerLock.
54c002f Fix TSBPD thread create/join protection.
0680092 Removed a wrong assertion about ACK timestamp.
5e6e80b Fixed broadcast group: cut failed links on partial sending success
36260c3 Removed settable ability for SRTO_VERSION
b7c8050 Fixed missing traceBelatedTime initialization.
72303d7 Fixed bug: srt_accept failure may make accepted socket leak (#1884).
ebe2c71 Fix build issues with ENFORCE_SRT_DEBUG_BONDING_STATES (#2948).
38a3a16 Fixed checking the m_GroupOf is not NULL.
07859c8 Fixed group synchronization of accepted sockets. Fixes #2941.
57a4d9f Fixed time base sync in a group.
ceb4cca Fixed group recv read-ready check.
d31d83e Group set the RCV base seqno using peer ISN.
f99ce57 Fixed group RCV drop sequence range log.
882dff9 Minor internal logging format changes (#2939).
973be58 Removed group syncing when sending control ACK (#2935).
4f925fb Stats: do not count discarded packets as dropped (#2932).
f6c2315 Fixed stats counting packets dropped by a group (#2934).
cf13200 Minor connection logging improvement (#2930).
fd4084f Fixed thread safety using WSAOVERLAPPED in WSASendTo. The lpOverlapped parameter must be valid for the duration of the overlapped operation. If multiple I/O operations are simultaneously outstanding, each must reference a separate WSAOVERLAPPED structure. Resolves #973, #2632, #2834, #2838.
df9b1f6 Revert PR #2834. Overlapped send with 100 ms timeout on Windows added a data race.
3b84386 Use common functions for byte order conversion.
a15cf4e Drop noenc packets if RcvKmState is "secured".
c6afa19 Fix HaiCrypt_Clone(): set up RX crypto ctx properly (#2905).
62ebfb9 A minor fix (reference to const).
03aa5e4 Formal errors fixed (#2907).
2c3f6f9 Fix some indirect inclusion issues (#2906).
9b8aaa6 Fix some warnings when compiling with MinGW (#2868).
710c202 Withdrawn changes from #2858 as they break ABI compat (#2899).
04acbba Fixed the problem of getting option values from groups
16cb043 Fixed SRT_SOCKOPT_NPOST when ENABLE_MAXREXMITBW is defined. A follow up fix for #2889.
b2d48bd Fixed POST options setting on a connected group. The list of options was unordered, hence the binary search failed to find those options.
99fa921 Added getter for the SRTO_MAXREXMITBW socket option.
e0d4227 Refax. Removed reference fields from CPacket pinned to the SRT header (#2594).
52fe11c Fixed the PacketFilter configuration not counting the AEAD AUTH tag (#2880).
faefc98 Fixed RCV loss list inserting a seqno with a big distance after the largest seqno (#2877).
8b73dbc Fixed the RCV buff nonread position update condition in case of dropping upto a sequence number.
4c443d6 Moved declaration of SRT_ATR_ALIGNAS to fix a warning (#2866).
3dba3f4 Removed the possibility to use optlen=-1 in srt_setsockopt (#2849).
6e0ab4e Refax of the CSndBuffer::readData making the call form clearer (#2593).
1bfab3d Fixing some lock-order-inversion and data race problems (TSAN reports) (#1824).
2eb47e3 Refax around Window measurement facility (#2857).
d9069a5 Caching logger enable state to avoid lengthy checks with every log call (#2858).
bff0712 Fix alignment issues in cmsg header management (#2844).
88c6214 Allow custom-defined SRT_ASSERT() function (#2840).
b1c0be2 Overlapped send with 100 ms timeout on Windows.
79ab5f5 Fix extra ACK sent after a connection is established (#2832)
5f57dde Add an alignment macro. Try to align m_acCmsgRecvBuffer and m_acCmsgSendBuffer
cb362ee Increase FlowWindowSize on SND Too-Late Packet Drop (#2815).
4039302 Fixed FEC logs: hangname should be consistent with EHangStatus (#2816).
8d8825f Withdrawn BytesPacketsCount. Header size passed as parameter (#2812).
2fdb329 Fixed wrong pktSndDrop stats value (#2811).
eb80f92 Fixed: properly handle strings with NULL characters inside (#2804).
f477af5 Added more elaborate log suppression (#2733).
66e7468 Extracted IP family dependent changes in stats tools (#2799)
6c723e5 Fix lacking mutex protection of some ACK-related fields (#2723).
37e6588 A crypto service provider based on Botan (#2700).
218c7fd Refax-only (with temporary differences) for 2677 (#2798).
39a800c Spare code for debugging high bitrate sending (#2504).
0f6ddbb Fixed C4267 warning on MSVC (#2675).
83d91af Changed conditions for setting callbacks (#2683).
0d804ec Pre-refax of change-independent parts for #2677 (#2797).

Unit Tests

da89cbd Added NUL character unit test for StreamID socket opt.
5a88e13 Added test with bonding first connecting socket failure
53d611a Added option handling also to non-fixture-based tests
307ff04 Fixed unit tests compiler warnings AppleClang 15.
c10d55a Fixed unit tests for CSndRateEstimator.
8c1fa00 Fix warnings when compiling with g++ 11.4.0 on ubuntu 22.04
aa69c3d Fixed tests that were weirdly failing (#2908).
12aad6e Improved tests to avoid all-breaking asserts and inter-test mess-up (#2892).
29fda2c Added SRTO_MAXBW and SRTO_MININPUTBW to unit tests (#2888).
6b75145 Prevent socket from being closed twice in EE test (#2886).
07e22ca Added yielding for tests that spawn a thread for connect (#2883).
bed5488 Added unittest for SRTO_MAXREXMITBW socket option.
c506764 Added explicit closing the sockets in tests. (#2807)

Build Scripts (CMake, etc.)

d2811cc Apply -stdc=99 on SRT library.
2c199e9 Update Windows installer for new OpenSSL versions (#3049).
7a4f5e2 Treat warnings as errors on Ubuntu action.
9114698 Treat warnings as errors in macOS action.
e837a93 Fixed proper compiler selection for --with-compiler-type configure option (#3021).
fbc3e04 Removed VC 2013. Added VC 2022 (#2988).
11f081c Add visionOS support
c156dab Switch default enclib from openssl to openssl-evp
84b5bb8 Add a GitHub CI Action to check API/ABI compatibility (#2902).
94bfa86 Don't run a SonarScan on forks.
0a046d4 Migrate SonarCloud to GitHub Action (#2910).
618ddfe Fix: link bcrypt on Windows when mbedtls >=v3.5.0 (#2860).
7f49024 Add a github action for big endian testing (#2898).
ea8ea9f Moved code coverage testing from travis to github actions (#2874).
686d958 Fixed compile issues and warnings for iOS platform (#2852).
7899f15 Fix mbedtls >=v3.5.0 build error on windows (#2842).

Sample Applications

7df2805 Use sync.h instead of atomic.h in the verbose module.
8f6fd4e Fixed URI decoding in UriParser (#3041).
d2706ea Added setopt utility for easily setting socket options
9c7206f Fixed compiler warnings (G++ 9.4)
1669542 Fixed atomic setting of locked line in Verb (#3004).
c5f166c Fixed verbose linkage difference (#3002).
b8358bc Add support for RTP input in srt-live-transmit (#2848).
4e8d036 Added url percent decoding to url query string keys and values.

Documentation

5b0d844 Fix np.nan in the release notes script.
47bc92b Set callbacks before listening or connecting.
c1803bb Added 'brew install pkgconfig' to the macOS build guide (#3054).
822bc1e Corrected a typo in API-socket-options.md (#3046).
6df4951 A minor fix of the release notes script readme.
bcc2f21 Added Rejection Reasons document (#2762).
2af8706 Added SonarCloud badge.
83077aa Update the SRT_KM_S_SECURED description. Updated pktRcvUndecrypted description.
0e215cd Updated the documentation about latency and transtype (#2875).
633e3ea Added developer description for conflict concerns about m_LSLock and m_ConnectionLock (#2859).
02acd18 Fix typo in access-control.md (#2837).
4a8067c More explicit description of grpdata_size updates (#2820).
32d8382 Fix typos, remove trailing spaces (#2808).