Skip to content

Releases: Haivision/srt

v1.5.4

11 Nov 09:45
Compare
Choose a tag to compare

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 ...

Read more

v1.5.4 - RC.2

10 Oct 10:04
e23497d
Compare
Choose a tag to compare
v1.5.4 - RC.2 Pre-release
Pre-release

Release Notes

Changelog

Changes since v1.5.4-rc.1.

Core Functionality

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).

Unit Tests

da89cbd Added NUL character unit test for StreamID socket opt.

Sample Applications

8f6fd4e Fixed URI decoding in UriParser (#3041).

Documentation

822bc1e Corrected a typo in API-socket-options.md (#3046).

Contributors

@ethouris, @jlsantiago0, @maxsharabayko, @praisedavid787

v1.5.4 - RC.1

01 Oct 09:00
a7b3711
Compare
Choose a tag to compare
v1.5.4 - RC.1 Pre-release
Pre-release

Changelog

Changes since v1.5.4-rc.0.

Core Functionality

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).

Build Scripts (CMake, etc.)

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).

Sample Applications

d2706ea Added setopt utility for easily setting socket options

Unit Tests

5a88e13 Added test with bonding first connecting socket failure
53d611a Added option handling also to non-fixture-based tests

v1.5.4 - RC.0

23 Aug 10:51
Compare
Choose a tag to compare
v1.5.4 - RC.0 Pre-release
Pre-release

Release Notes

API / ABI / Integration Changes

API/ABI version: v1.5.

  • PR #2967: SRTO_VERSION socket option is a read-only option. 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 functiones 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 '\0' inside.

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

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 #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 #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 #2929, #2834: Fixed possible hang-up when SRT sends its packet over UDP socket on Windows.

  • 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: 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, @jeandube, @jschultz410, @kageds, @kgbook, @kura, @maxsharabayko, @ori-sky, @oviano, @siriobalmelli, @tommyvct, @wangyoucao577, @yomnes0, @zulkis

Full Changelog

Click to expand/collapse

Core Functionality

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).
3dba...

Read more

v1.5.3

07 Sep 12:58
09f35c0
Compare
Choose a tag to compare

Release Notes

API / ABI / Integration Changes

API/ABI version: 1.5.

New Features

  • PR #2714: Added maximum BW limit for retransmissions. See SRTO_MAXREXMITBW.
    The new option limits the maximum bandwidth that can be used for the retransmission of lost packets. Can be used in conjunction with the SRTO_MAXBW options family, which limits the overall pacing, and thus, the maximum bandwidth utilized by all SRT packets from the sender.

Important Bug Fixes

  • PR #2632: Use overlapped WSASendTo to avoid UDP sending losses.
  • PR #2766: Fixed spurious group read-ready epoll events.
  • PR #2772: Fixed RCV buffer initialization in Rendezvous. ⚠️
  • PR #2757: Fix memory leak on queuing connection initialization packets.
  • PR #2745: Fix hang up on not enough space in the RCV buffer.
  • PR #2740: Fix possible tsbpd() deadlock with processCtrlShutdown().
  • PR #2692: Rejection not undertaken in rendezvous after KMX failure.
  • PR #2774: Fix rendezvous connection mode when processing resulted in ACCEPT it was still sending rejection.
  • PR #2778: Drop unencrypted packets in AES-GCM mode.

Build

  • PR #2779, #2780: Fix the build for targets without IP_ADD_SOURCE_MEMBERSHIP.
  • PR #2784: Added missing public header files in Windows binary installer.

Unit Tests

  • PR #2681: Added custom main with transparent parameters.

Documentation

  • PR #2765: Updated the explicit information for binding to IPv6 wildcard.
  • PR #2785: Fixed API doc: SRT_INVALID_SOCK instead of SRT_ERROR in str_accept.

Contributors

@aaron-jencks, @ethouris, @gou4shi1, @jlsantiago0, @lelegard, @maxsharabayko, @robUx4, @yomnes0

Changelog

Click to expand/collapse

Core Functionality

b1d8b04 Fixed SRT_ATTR_REQUIRES use.
4682646 SRT version raised to 1.5.3.
78a1020 Added maximum BW limit for retransmissions (#2714).
033dc9f Drop unencrypted packets in GCM mode.
f9e36db Initialize ISN and PeerISN in CUDT.
54ef85f Minor code clean up in CRateEstimator.
50619bd Fix: In rendezvous when processing resulted in ACCEPT it was still sending rejection
d039fe6 Rejection not undertaken in rendezvous after KMX failure (#2692).
46b0579 Slightly optimize the RCV drop by message number (#2686).
7cfe12b fix tsbpd() may deadlock with processCtrlShutdown()
744035b Fix hang up on not enough space in the RCV buffer (#2745).
c6572bf Refactor CRcvQueue::storePkt(..) for better resource management (#2775).
256244f Fix memory leak when can't buffer a HS packet (#2757).
69c2376 Fixed RCV buffer initialization in Rendezvous.
88ca9cc Perf improvement of group reading.
31294e3 Removed unused CUDTGroup::m_Positions.
c639310 Fixed group read-ready epoll events.
9f4e9b6 Fixed srctime from closing socket was mistakenly cleared
1737e96 Add volatile keyword to asm block in rdtsc (#2759).
61c7bed Use overlapped WSASendTo to avoid loss in UDP sending (#2632).
10e71a6 Fixed unhandled error in haicrypt (#2685).

Unit Tests

9f41437 Added custom main with transparent parameters for tests (#2681).

Build Scripts (CMake, etc.)

51e3d0d Added missing public header files in Windows binary installer.
421f4e1 Fix downversioning of _WIN32_WINNT (#2754).

Sample Applications

33a620b Fixed conditional IP_ADD_SOURCE_MEMBERSHIP in testmedia (#2780).
e9eb8b3 Fix the build for target without IP_ADD_SOURCE_MEMBERSHIP (#2779).

Documentation

09f35c0 Fixed API doc: SRT_INVALID_SOCK instead of SRT_ERROR in str_accept.
d063313 Updating the explicit information for binding to IPv6 wildcard (#2765).

Full Changelog: v1.5.2...v1.5.3

v1.5.3-rc.0

17 Aug 14:14
33a620b
Compare
Choose a tag to compare
v1.5.3-rc.0 Pre-release
Pre-release

Release Notes

API / ABI / Integration Changes

API/ABI version: 1.5.

New Features

  • PR #2714: Added maximum BW limit for retransmissions. See SRTO_MAXREXMITBW.

Important Bug Fixes

  • PR #2632: Use overlapped WSASendTo to avoid UDP sending losses.
  • PR #2766: Fixed spurious group read-ready epoll events.
  • PR #2772: Fixed RCV buffer initialization in Rendezvous. ⚠️
  • PR #2757: Fix memory leak on queing connection initialization packets.
  • PR #2745: Fix hang up on not enough space in the RCV buffer.
  • PR #2740: Fix possible tsbpd() deadlock with processCtrlShutdown().
  • PR #2692: Rejection not undertaken in rendezvous after KMX failure.
  • PR #2774: Fix rendezvous connection mode when processing resulted in ACCEPT it was still sending rejection.
  • PR #2778: Drop unencrypted packets in AES-GCM mode.

Build

  • PR #2779, #2780: Fix the build for target without IP_ADD_SOURCE_MEMBERSHIP.

Unit Tests

  • PR #2681: Added custom main with transparent parameters.

Documentation

  • PR #2765: Updated the explicit information for binding to IPv6 wildcard.

Contributors

@aaron-jencks, @ethouris, @gou4shi1, @jlsantiago0, @maxsharabayko, @robUx4, @yomnes0

Changelog

Click to expand/collapse

Core Functionality

4682646 SRT version raised to 1.5.3.
78a1020 Added maximum BW limit for retransmissions (#2714).
033dc9f Drop unencrypted packets in GCM mode.
f9e36db Initialize ISN and PeerISN in CUDT.
54ef85f Minor code clean up in CRateEstimator.
50619bd Fix: In rendezvous when processing resulted in ACCEPT it was still sending rejection
d039fe6 Rejection not undertaken in rendezvous after KMX failure (#2692).
46b0579 Slightly optimize the RCV drop by message number (#2686).
7cfe12b fix tsbpd() may deadlock with processCtrlShutdown()
744035b Fix hang up on not enough space in the RCV buffer (#2745).
c6572bf Refactor CRcvQueue::storePkt(..) for better resource management (#2775).
256244f Fix memory leak when can't buffer a HS packet (#2757).
69c2376 Fixed RCV buffer initialization in Rendezvous.
88ca9cc Perf improvement of group reading.
31294e3 Removed unused CUDTGroup::m_Positions.
c639310 Fixed group read-ready epoll events.
9f4e9b6 Fixed srctime from closing socket was mistakenly cleared
1737e96 Add volatile keyword to asm block in rdtsc (#2759).
61c7bed Use overlapped WSASendTo to avoid loss in UDP sending (#2632).
10e71a6 Fixed unhandled error in haicrypt (#2685).

Unit Tests

9f41437 Added custom main with transparent parameters for tests (#2681).

Build Scripts (CMake, etc.)

421f4e1 Fix downversioning of _WIN32_WINNT (#2754).

Sample Applications

33a620b Fixed conditional IP_ADD_SOURCE_MEMBERSHIP in testmedia (#2780).
e9eb8b3 Fix the build for target without IP_ADD_SOURCE_MEMBERSHIP (#2779).

Documentation

d063313 Updating the explicit information for binding to IPv6 wildcard (#2765).

v1.5.2

29 Jun 10:22
Compare
Choose a tag to compare

Release Notes

API / ABI / Integration Changes

API/ABI version: 1.5.

Known Issues

  • #2773: Rendezvous Connection: Wrong Initial Sequence Initialization of the Receiver results in sequence discrepancy and connection break.

New Features and Improvements

  • Epic #2336: Added Authenticated Encryption with Associated Data (AEAD) mode. v1.6.0 API Preview.
    Use a combination of ENABLE_AEAD_API_PREVIEW=ON,ENABLE_ENCRYPTION=ON, and USE_ENCLIB=openssl-evp build options to activate the feature.
  • PR #456: Implemented replying to a connection request using the same network interface on which this connection request was received. In particular, in the case of socket groups this resolves handshake negotiation of individual member connections when a group listener is bound to IPv4_ANY or IPv6_ANY. Should be enabled via the ENABLE_PKTINFO=ON build option.
    Note that this feature is available only on certain platforms. BSD systems are known to NOT provide this feature, and the current implementation does NOT support this feature on Windows systems.

Important Bug Fixes

  • #2697: Handshake-related issues on big-endian machines (byte order in packet filter config #2708 and peer address #2729).
  • PR #2679: Fixed various compiler warnings on various platforms.
  • PR #2717: Fixed the crash on FEC matrix resize.
  • PR #2711: Changed the order of buffer allocations and crypto mode negotiation when crypto mode equals 0 (auto) for SRT listener, sender side. See the SRTO_CRYPTOMODE socket option.
  • PR #2664: To close a connection in rendezvous mode, instead of a SHUTDOWN packet the peer now sends a CONCLUSION handshake packet with a rejection reason.
  • PR #2661: Improved performance of the CRcvBuffer::dropMessage(..) function.
  • PR #2643: A CLOSING state is now set when closing a socket.
  • PR #2608: Reworked and fixed the multiplexer usage as well as the unit tests for ReuseAddr.
  • PR #2619: Addressed possible crash when heavy logging is enabled and socket ID is less than 10.
  • PR #2630: Fixed the IP_PKTINFO case that was failing for IPv4+IPv6 bound sockets.
  • PR #2616: Fixed the incorrect null-safety condition check in the haicrypt library.
  • PR #2622: A caller now sets the correct rejection reason (instead of always SRT_REJ_UNSECURE) depending on the encryption level error.
  • PR #2605: The SRT_REJX_FALLBACK rejection reason is now used if an application rejects a group connection without providing a reason.
  • PR #2589: Fixed problem where if SRTO_MSS < SRTO_PAYLOADSIZE, a message would be split into two packets in live configuration mode.
  • PR #2557: Fixed the issue where one caller was successfully connecting to another. This is now restricted.
  • PR #2555: Fixed the issue where a caller was successfully connecting to a peer in rendezvous mode. This is now restricted.
  • PR #2553: Addressed possible crash when sending crypto keys.
  • PR #2539: Improved the rendezvous connection process which was taking extra unnecessary steps in non-blocking mode.
  • #2502: Fixed the issue with getting a corrupted packet on the receiving side when encryption is enabled.
  • #2494: During the INDUCTION phase of the handshake process, the connection should be rejected if the Extension Flags field does not contain the magic value of 0x4A17. The associated rejection reason is SRT_REJ_ROGUE.
  • #2485: Addressed the issue where a peer address was not available through the srt_getpeername() function.
  • PR #2411: Disabled warnings on various platforms and improved C++20 Windows build.
  • #2234: SIGSERV due to unprotected access to the crypto control.
  • PR #1859: Improved mutex protection of m_iFlowWindowSize, m_iSndLastAck, m_tsLastRspTime, and m_iSndLastAck fields.

Build

  • PR #2726: Added -Wshadow=local to CMake build flags. Supported since GCC 7.0.
  • PR #2671: Restricted unit tests to serial execution only.
  • PR #2439: Fixed the builds where the C++ runtime library does not have std::put_time() function.
  • PR #2462: Fixed macOS build with SDK 10.5.

Documentation

  • PR #2659: Added SRTO_PBKEYLEN negotiation table to the documentation.
  • PR #2575: Fixed SRTO_PASSPHRASE length range.
  • PR #2513: Fixed the incorrect description of PBKEYLEN conflict resolution.
  • PR #2529: Added a note on activating HAICRYPT logging.
  • PR #2483: Added AES GSM socket options and rejection reasons to the SRT API documentation (SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE).

Sample Applications

  • PR #2688: Fixed the crash in srt-test-multiplex application on medium error.

Changelog

Click to expand/collapse

API

41c4b1f Fixed #ifdef ENABLE_AEAD_API_PREVIEW (#2603).
b3a21e1 SRT version raised to 1.5.2.
c0d9fcd Restored resetlogfa(..) in udt.h. Reverting #2558, although udt.h is not the official SRT API.
87de405 Added ENABLE_AEAD_API_PREVIEW build option to enable AEAD API.
60d1237 Crypto mode 'auto' implemented for listener (#2574).
27e7d8d Socket Options: do not allow AES GCM if TSBPD is disabled.
3e4561e Add GCM to the SRT API.

Core Functionality

3cefede Correct remaining endianness issues
30e7ccd Minor fix of variable shadowing.
6fcff6d Fixed various compiler warnings on various platforms (#2679).
59cde53 Fixed FEC Emergency resize crash (#2717).
2fcd3d4 Fix crypto mode auto for listener sender (#2711).
b010763 Fixed typos in MBedTLS where it referred to GnuTLS (#2699).
a991767 Fix peer filter config being rejected because of endianness
1cffd2f Added rejection handshake sent to the peer in rendezvous mode (#2667).
f57ba89 Added missing thread watchdog ticks in 3 thread loop (#2669).
e8d0533 Fixed old ENABLE_AEAD_PREVIEW.
599c1fb Reworked the CRcvBuffer::dropMessage(..) function (#2661).
7948772 Removed duplicate lines (#2660).
3ffc93f Fixed CRcvBuffer::dropMessage (#2657).
e9a3955 Fixed guard for rcv-rexmit fields (#1859).
22e97f8 Fixed warnings and removed redundant includes (#2658).
c83c31b Reduce frequency of the decryption failure log (#2602).
21b55a2 Disabled warnings various platforms and fixed C++20 Windows build (#2411).
65bef37 Set CLOSING state when closing a socket (#2643).
02cba9e Drop undecrypted packet based on sequence number (#2654).
6d774dd Fixed invalid ASSERT checking outdated object in haicrypt (#2652).
8db35de Refaxed and fixed multiplexer reusage (#2608).
6c92a13 Fix crash when enable heavy log and socket id less than 10 (#2619).
64dedef CodeQL: operation requires 22 bytes.
0c583f8 CodeQL warning: checking NULL after new.
b8962b4 Fixed PKTINFO case that was failing for IPv4+IPv6 bound sockets (#2630).
a42a39f Fixed wrong null-safety condition check in haicrypt (#2616).
30f6f6b Removed extra redundant condition checks (#2615).
5f02310 Fix negative id when wrap around
f533716 Fixed reject reason by a caller if connection is UNSECURE (#2622).
04e8dbc Fixed default reject reason for a listener callback (#2605).
0b9d583 AEAD: don't break a connection on decrypt failure.
6db28dc RCV Buffer Refax: added some utils and simplifications (#2522).
5889a2c AES-GCM payload length check (#2591).
45232ad Allow fileCC in group mode
98b1b00 Added extraction of IP_PKTINFO when reading (#456).
de9fc45 Fix CRcvBuffer last position in getTimespan_ms (#2579).
38b4211 Remove use variable length array (#2279).
78dd987 Fixed missing DROPREQ for LOSSREPORT that partially predates ACK (#2498).
4090b25 Reject caller to caller connection (#2562).
0a835ea Refax: moved removal of one seq from fresh loss list to a separate function (#2521).
19af5d1 Obtain ConnectionLock while sending crypto keys.
3d517cf Fixed a warning: member referenced before initialized (#2433).
fc82eac Refax: remove usage of LOGF/HLOGF (#2566).
637d439 Refax: removed m_iRcvLastSkipAck and its dependencies (#2546).
6c52f2d Pass std::string by const ref where possible.
6d62096 Applied clang-format on md5.cpp and md5.h.
2c48cba MD5: Removed null pointer subtraction (may have undefined behavior).
ae39052 Fixed rendezvous connection in the Non Blocking Mode (#2548).
0138898 Fixed cloning the RX crypto context (AEAD)
be1ccf5 Moved KM refresh in packUniqueData() (#2541).
f864cec Fixed TARGET_OS_MAC not defined. Wrong include order.
432f2d8 fix CSndBuffer parameter incorrect in AES GCM mode
cbfa812 Refax/postfix: further fixes after last refax changes (#2528)
e082f30 Fixed validation of input parameters in srt_connect (#2520).
932e5bd Cleanup of bonding conditionals and unused code (#2525).
f477b51 Fixed connected peer address recording (#2526)
b76c8b2 Fixed CRcvBuffer::getAvailSize() may jump around. (#2490)
71c3e40 Refax: safety improvements for RCV loss list and closing state (#2517)
491e6e8 Extract RCV buffer insertion handling to a separate function (#2500).
258a858 Refax: added size cache to the group container (#2510).
2fd1363 Refax: improve logging and code readability around specific logging (#2511).
f7a024a Refax: removed the synconmsg property and its handling in the group (#2509)
53735e1 Don't consider tool old ACK as IPE, it' may caused by network.
d26bbf7 Fixed a false alarm: ACK ERROR...(diff -1)
0f6e7c7 Fixed the inconsistency between getFirstLostSeq() and ackDataUpTo() (#2488)
ea86302 R...

Read more

v1.5.2-rc.2

03 May 10:17
Compare
Choose a tag to compare
v1.5.2-rc.2 Pre-release
Pre-release

Release Notes

Changes from v1.5.2-rc.1.

API / ABI / Integration Changes

API/ABI version: 1.5.

Important Bug Fixes

#2697: Handshake issues on big-endian machines (byte order in Packet filter config #2708 and Peer address #2729).
#2679: Fixed various compiler warnings on various platforms.
#2717: Fixed FEC Emergency resize crash.
#2711: Fix crypto mode auto for listener sender.

Sample Applications

#2688: Fixed crash in srt-test-multiplex on medium error.

Build

#2726: Add -Wshadow=local to CMake build flags. Supported since GCC 7.0.

Documentation

#2721: Added the link for registration in Slack to the getting started table.

Changelog from v1.5.2-rc.1

Click to expand/collapse

Core Functionality

3cefede Correct remaining endianness issues
30e7ccd Minor fix of variable shadowing.
6fcff6d Fixed various compiler warnings on various platforms (#2679).
59cde53 Fixed FEC Emergency resize crash (#2717).
2fcd3d4 Fix crypto mode auto for listener sender (#2711).
b010763 Fixed typos in MBedTLS where it referred to GnuTLS (#2699).
a991767 Fix peer filter config being rejected because of endianness

Unit Tests

be254e7 Minor fix of variable shadowing.

Build Scripts (CMake, etc.)

66c86b1 Add -Wshadow=local to CMake build flags. Supported since GCC 7.0.
9fc5c09 Upgraded CI: ubuntu to version 20.04 (#2682).

Sample Applications

3982284 Fixed crash in srt-test-multiplex on medium error (#2688).

Documentation

4c9a417 Added the link for registration in slack to the getting started table (#2721).

v1.5.2-rc.1

20 Feb 13:22
1cffd2f
Compare
Choose a tag to compare
v1.5.2-rc.1 Pre-release
Pre-release

Release Notes

Including changes from v1.5.2-rc.0.

API / ABI / Integration Changes

API/ABI version: 1.5.

New Features and Improvements

  • Epic #2336: Add Authenticated-Encryption with Associated-Data (AEAD) mode - v1.6.0 API Preview.
    Use the ENABLE_AEAD_API_PREVIEW=ON and USE_ENCLIB=openssl-evp build options.
  • PR #456: Added extraction of IP_PKTINFO.

Important Bug Fixes

  • #2664: Send rejection handshake to the peer in rendezvous mode.
  • #2661: Reworked the CRcvBuffer::dropMessage(..) function.
  • #2643: Set CLOSING state when closing a socket.
  • #2608: Refaxed and fixed multiplexer reusage.
  • #2619: Fix crash when enable heavy log and socket id less than 10.
  • #2630: Fixed PKTINFO case that was failing for IPv4+IPv6 bound sockets.
  • #2616: Fixed wrong null-safety condition check in haicrypt.
  • #2622: Fixed reject reason by a caller if connection is UNSECURE.
  • #2605: Fixed default reject reason for a listener callback.
  • #2589: SRTO_MSS = 1300 splits one message into two packets in TSBPD mode.
  • #2557: The caller should not connect to another caller.
  • #2555: The caller should not connect to rendezvous.
  • #2553: Possible crash while sending crypto keys.
  • #2539: Rendezvous Connection takes extra steps in the Non-Blocking Mode.
  • #2502: Corrupted data packet at SRT receiver output when using encryption.
  • #2494: Handshake: reject if the Extension Flags field does not contain the magic value (INDUCTION PHASE).
  • #2485: Peer address not available through srt_getpeername().
  • #2411: Disabled warnings various platforms and fixed C++20 Windows build.
  • #1859: Fixed guard for rcv-rexmit fields.

Build

  • PR #2671: Set serial running unit tests property.
  • PR #2439: Fix builds where the C++ runtime library does not have std::put_time().
  • PR #2462: Fix MacOS Build with SDK-10.5.

Documentation

  • PR #2659: Added SRTO_PBKEYLEN negotiation table.
  • PR #2575: Fixed SRTO_PASSPHRASE length range.
  • PR #2513: Fixed wrong description of PBKEYLEN conflict resolution.
  • PR #2529: Added a note on activating HAICRYPT logging.
  • PR #2483: Added SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE.

Changelog

Click to expand/collapse

API

41c4b1f Fixed #ifdef ENABLE_AEAD_API_PREVIEW (#2603).
b3a21e1 SRT version raised to 1.5.2.
c0d9fcd Restored resetlogfa(..) in udt.h. Reverting #2558, although udt.h is not the official SRT API.
87de405 Added ENABLE_AEAD_API_PREVIEW build option to enable AEAD API.
60d1237 Crypto mode 'auto' implemented for listener (#2574).
27e7d8d Socket Options: do not allow AES GCM if TSBPD is disabled.
3e4561e Add GCM to the SRT API.

Core Functionality

1cffd2f Added rejection handshake sent to the peer in rendezvous mode (#2667).
f57ba89 Added missing thread watchdog ticks in 3 thread loop (#2669).
e8d0533 Fixed old ENABLE_AEAD_PREVIEW.
599c1fb Reworked the CRcvBuffer::dropMessage(..) function (#2661).
7948772 Removed duplicate lines (#2660).
3ffc93f Fixed CRcvBuffer::dropMessage (#2657).
e9a3955 Fixed guard for rcv-rexmit fields (#1859).
22e97f8 Fixed warnings and removed redundant includes (#2658).
c83c31b Reduce frequency of the decryption failure log (#2602).
21b55a2 Disabled warnings various platforms and fixed C++20 Windows build (#2411).
65bef37 Set CLOSING state when closing a socket (#2643).
02cba9e Drop undecrypted packet based on sequence number (#2654).
6d774dd Fixed invalid ASSERT checking outdated object in haicrypt (#2652).
8db35de Refaxed and fixed multiplexer reusage (#2608).
6c92a13 Fix crash when enable heavy log and socket id less than 10 (#2619).
64dedef CodeQL: operation requires 22 bytes.
0c583f8 CodeQL warning: checking NULL after new.
b8962b4 Fixed PKTINFO case that was failing for IPv4+IPv6 bound sockets (#2630).
a42a39f Fixed wrong null-safety condition check in haicrypt (#2616).
30f6f6b Removed extra redundant condition checks (#2615).
5f02310 Fix negative id when wrap around
f533716 Fixed reject reason by a caller if connection is UNSECURE (#2622).
04e8dbc Fixed default reject reason for a listener callback (#2605).
0b9d583 AEAD: don't break a connection on decrypt failure.
6db28dc RCV Buffer Refax: added some utils and simplifications (#2522).
5889a2c AES-GCM payload length check (#2591).
45232ad Allow fileCC in group mode
98b1b00 Added extraction of IP_PKTINFO when reading (#456).
de9fc45 Fix CRcvBuffer last position in getTimespan_ms (#2579).
38b4211 Remove use variable length array (#2279).
78dd987 Fixed missing DROPREQ for LOSSREPORT that partially predates ACK (#2498).
4090b25 Reject caller to caller connection (#2562).
0a835ea Refax: moved removal of one seq from fresh loss list to a separate function (#2521).
19af5d1 Obtain ConnectionLock while sending crypto keys.
3d517cf Fixed a warning: member referenced before initialized (#2433).
fc82eac Refax: remove usage of LOGF/HLOGF (#2566).
637d439 Refax: removed m_iRcvLastSkipAck and its dependencies (#2546).
6c52f2d Pass std::string by const ref where possible.
6d62096 Applied clang-format on md5.cpp and md5.h.
2c48cba MD5: Removed null pointer subtraction (may have undefined behavior).
ae39052 Fixed rendezvous connection in the Non Blocking Mode (#2548).
0138898 Fixed cloning the RX crypto context (AEAD)
be1ccf5 Moved KM refresh in packUniqueData() (#2541).
f864cec Fixed TARGET_OS_MAC not defined. Wrong include order.
432f2d8 fix CSndBuffer parameter incorrect in AES GCM mode
cbfa812 Refax/postfix: further fixes after last refax changes (#2528)
e082f30 Fixed validation of input parameters in srt_connect (#2520).
932e5bd Cleanup of bonding conditionals and unused code (#2525).
f477b51 Fixed connected peer address recording (#2526)
b76c8b2 Fixed CRcvBuffer::getAvailSize() may jump around. (#2490)
71c3e40 Refax: safety improvements for RCV loss list and closing state (#2517)
491e6e8 Extract RCV buffer insertion handling to a separate function (#2500).
258a858 Refax: added size cache to the group container (#2510).
2fd1363 Refax: improve logging and code readability around specific logging (#2511).
f7a024a Refax: removed the synconmsg property and its handling in the group (#2509)
53735e1 Don't consider tool old ACK as IPE, it' may caused by network.
d26bbf7 Fixed a false alarm: ACK ERROR...(diff -1)
0f6e7c7 Fixed the inconsistency between getFirstLostSeq() and ackDataUpTo() (#2488)
ea86302 Reduced calls to steady_clock::now() from two to one.
8e9958a Reject if SRT_MAGIC_CODE is not set in the HS induction response.
8e67aa7 Tune logs of group members adding and removing.
c01c646 Fixed AES-GCM support check.
d5f73ca Protocol: set AES-GCM auth in the KM message.
f637035 Use setDataPacketTS to timestamp data packets (#2489).
04369b8 Made offset consistent with avail_bufsize. (#2465)
ba5ad53 Fixed message seqno check.
c416971 Minor edits to the CRcvBuffer::getTimespan_ms().
9ed7392 CRYSPR GCM: fixed usage of the aes_gcm_cipher(..) prototype. Renamed CRYSPR_AUTHTAGMAX to HAICRYPT_AUTHTAG_MAX and relocated.
66179ab CRYSPR: Add AES GCM mode with OpenSSL EVP (#2476).
1b20a48 Replaced m_iRcvLastSkipAck with m_iRcvLastAck in logs.
e94d3e1 Add auth tag to the sender buffer. The additional space to be used for auth tag in GCM AEAD.
6dd47c3 Add capacity property to CPacket.
345517b Changed CUnit::m_iFlag type to bool.
2fed400 Renamed buffer.cpp to buffer_snd.cpp.
4f2bf28 Renamed CRcvBufferNew to CRcvBuffer
29c7c64 Removed old receiver buffer and ENABLE_NEW_RCVBUFFER build option.
a1c0ab3 Combined the loops of m_FreshLoss and m_pRcvLossList
daf91f3 Replaced reorder_prevent_lossreport with initial_loss_ttl.
ae18186 Also protected m_pRcvLossList->insert() with m_RcvBufferLock.
432cfe4 Moved m_FreshLoss.push_back() out of the incoming loop.
e2f4375 Cleanup the useless tnkeep.
c21a5ae Mark m_pRcvLossList and m_FreshLoss to be guarded by m_RcvLossLock.
70a8eb2 Fixed missing m_RcvLossLock in processData().
22588e4 Improved logs of core.cpp with CONID()
229192c Added a trailing space in CONID()
d84ac20 Improved some logs for the no room issue.
90bcc64 Fixed CRcvLossList can not remove m_iMaxSeqNo.
8c6675c Fixed some wrong usages of m_iMaxSeqNo.
fda7441 Refax: moved buffer tools to a separate file (#2499).

Unit Tests

715da9d Added check for read-ready for decryption failure case (#2609).
053f179 Splitting ListenCallback test into 3 separate tests (#2556).
9a022d6 Added AES GCM unit test for CCryptoControl.
43a7c32 Added a couple of tests on RCV loss list.
fa8c58a Bonding: fixed closing the listener socket (#2538).

Build Scripts (CMake, etc.)

d9c1794 Set serial running unit tests property (#2671).
f57beb6 Fixed CodeQL configuration (#2644).
a7bd1b0 Use CXX 14 in MacOS GitHub Action.
dd19eac Add CodeQL workflow for GitHub code scanning (#2578).
85f555d Fix builds where the C++ runtime library does not have std::put_time() (#2439).
a08a42c Use GTest from brew in MacOS action. (#2607)
ef17a24 Travis: display stack trace by gdb on crash (#2565).
fdb9389 Run codecov only after success in Travis.
f86df39 Disable ConnectionTimeout test (blocking), Win GitHub Action (#2543).
27a92b3 Upgrade to checkout@v3 GitHub action.
b90b64d Identify parameters with a prepended -l in CMAKE_CXX_IMPLICIT_LINK_LIBRARIES
90af35a Fix MacOS Build with SDK-10.5 (#2462).
f610fe6 Find GTest using version range 1.8-1.12.

Sample Applications

46d55c6 Added 'bind' parameter handling for applications (#2672).
aba73de Added examples for message mode transmission (#2592).
b38b61d Fix ENABLE_AEAD_API_PREVIEW in apps. (#2588)
b6f1e9c Examples: wait 1 sec until receiver completes (#2572).
11701a6 Added cryptomode URI query option.
18c829a UriParser: fixed protocol type detection (#2452).
0bc3b03 List contributors using the changelog generation script (#2456)

Documentation

...

Read more

v1.5.2-rc.0

06 Jan 11:00
b3a21e1
Compare
Choose a tag to compare
v1.5.2-rc.0 Pre-release
Pre-release

Release Notes

API / ABI / Integration Changes

API/ABI version: 1.5.

New Features and Improvements

  • Epic #2336: Add Authenticated-Encryption with Associated-Data (AEAD) mode - v1.6.0 API Preview.
    Use the ENABLE_AEAD_API_PREVIEW=ON and USE_ENCLIB=openssl-evp build options.
  • PR #456: Added extraction of IP_PKTINFO.

Important Bug Fixes

  • #2589: SRTO_MSS = 1300 splits one message into two packets in TSBPD mode.
  • #2557: The caller should not connect to another caller.
  • #2555: The caller should not connect to rendezvous.
  • #2553: Possible crash while sending crypto keys.
  • #2539: Rendezvous Connection takes extra steps in the Non-Blocking Mode.
  • #2502: Corrupted data packet at SRT receiver output when using encryption.
  • #2494: Handshake: reject if the Extension Flags field does not contain the magic value (INDUCTION PHASE).
  • #2485: Peer address not available through srt_getpeername().

Build

  • PR #2462: Fix MacOS Build with SDK-10.5 (#2462).

Documentation

  • PR #2513: Fixed wrong description of PBKEYLEN conflict resolution.
  • PR #2529: Added a note on activating HAICRYPT logging.
  • PR #2483: Added SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE.

Changelog

Click to expand/collapse

API

b3a21e1 [API] SRT version raised to 1.5.2.
c0d9fcd [API] Restored resetlogfa(..) in udt.h. Reverting #2558, although udt.h is not the official SRT API.
87de405 [API] Added ENABLE_AEAD_API_PREVIEW build option to enable AEAD API.
60d1237 [API] Crypto mode 'auto' implemented for listener (#2574).
27e7d8d [api] Socket Options: do not allow AES GCM if TSBPD is disabled.
3e4561e [API] Add GCM to the SRT API.

Core Functionality

0b9d583 AEAD: don't break a connection on decrypt failure.
6db28dc RCV Buffer Refax: added some utils and simplifications (#2522).
5889a2c AES-GCM payload length check (#2591).
45232ad Allow fileCC in group mode
98b1b00 Added extraction of IP_PKTINFO when reading (#456).
de9fc45 Fix CRcvBuffer last position in getTimespan_ms (#2579).
38b4211 Remove use variable length array (#2279).
78dd987 Fixed missing DROPREQ for LOSSREPORT that partially predates ACK (#2498).
4090b25 Reject caller to caller connection (#2562).
0a835ea Refax: moved removal of one seq from fresh loss list to a separate function (#2521).
19af5d1 Obtain ConnectionLock while sending crypto keys.
3d517cf Fixed a warning: member referenced before initialized (#2433).
fc82eac Refax: remove usage of LOGF/HLOGF (#2566).
637d439 Refax: removed m_iRcvLastSkipAck and its dependencies (#2546).
6c52f2d Pass std::string by const ref where possible.
6d62096 Applied clang-format on md5.cpp and md5.h.
2c48cba MD5: Removed null pointer subtraction (may have undefined behavior).
ae39052 Fixed rendezvous connection in the Non Blocking Mode (#2548).
0138898 Fixed cloning the RX crypto context (AEAD)
be1ccf5 Moved KM refresh in packUniqueData() (#2541).
f864cec Fixed TARGET_OS_MAC not defined. Wrong include order.
432f2d8 fix CSndBuffer parameter incorrect in AES GCM mode
cbfa812 Refax/postfix: further fixes after last refax changes (#2528)
e082f30 Fixed validation of input parameters in srt_connect (#2520).
932e5bd Cleanup of bonding conditionals and unused code (#2525).
f477b51 Fixed connected peer address recording (#2526)
b76c8b2 Fixed CRcvBuffer::getAvailSize() may jump around. (#2490)
71c3e40 Refax: safety improvements for RCV loss list and closing state (#2517)
491e6e8 Extract RCV buffer insertion handling to a separate function (#2500).
258a858 Refax: added size cache to the group container (#2510).
2fd1363 Refax: improve logging and code readability around specific logging (#2511).
f7a024a Refax: removed the synconmsg property and its handling in the group (#2509)
53735e1 Don't consider tool old ACK as IPE, it' may caused by network.
d26bbf7 Fixed a false alarm: ACK ERROR...(diff -1)
0f6e7c7 Fixed the inconsistency between getFirstLostSeq() and ackDataUpTo() (#2488)
ea86302 Reduced calls to steady_clock::now() from two to one.
8e9958a Reject if SRT_MAGIC_CODE is not set in the HS induction response.
8e67aa7 Tune logs of group members adding and removing.
c01c646 Fixed AES-GCM support check.
d5f73ca Protocol: set AES-GCM auth in the KM message.
f637035 Use setDataPacketTS to timestamp data packets (#2489).
04369b8 Made offset consistent with avail_bufsize. (#2465)
ba5ad53 Fixed message seqno check.
c416971 Minor edits to the CRcvBuffer::getTimespan_ms().
9ed7392 CRYSPR GCM: fixed usage of the aes_gcm_cipher(..) prototype. Renamed CRYSPR_AUTHTAGMAX to HAICRYPT_AUTHTAG_MAX and relocated.
66179ab CRYSPR: Add AES GCM mode with OpenSSL EVP (#2476).
1b20a48 Replaced m_iRcvLastSkipAck with m_iRcvLastAck in logs.
e94d3e1 Add auth tag to the sender buffer. The additional space to be used for auth tag in GCM AEAD.
6dd47c3 Add capacity property to CPacket.
345517b Changed CUnit::m_iFlag type to bool.
2fed400 Renamed buffer.cpp to buffer_snd.cpp.
4f2bf28 Renamed CRcvBufferNew to CRcvBuffer
29c7c64 Removed old receiver buffer and ENABLE_NEW_RCVBUFFER build option.
a1c0ab3 Combined the loops of m_FreshLoss and m_pRcvLossList
daf91f3 Replaced reorder_prevent_lossreport with initial_loss_ttl.
ae18186 Also protected m_pRcvLossList->insert() with m_RcvBufferLock.
432cfe4 Moved m_FreshLoss.push_back() out of the incoming loop.
e2f4375 Cleanup the useless tnkeep.
c21a5ae Mark m_pRcvLossList and m_FreshLoss to be guarded by m_RcvLossLock.
70a8eb2 Fixed missing m_RcvLossLock in processData().
22588e4 Improved logs of core.cpp with CONID()
229192c Added a trailing space in CONID()
d84ac20 Improved some logs for the no room issue.
90bcc64 Fixed CRcvLossList can not remove m_iMaxSeqNo.
8c6675c Fixed some wrong usages of m_iMaxSeqNo.
fda7441 Refax: moved buffer tools to a separate file (#2499).

Unit Tests

053f179 Splitting ListenCallback test into 3 separate tests (#2556).
9a022d6 Added AES GCM unit test for CCryptoControl.
43a7c32 Added a couple of tests on RCV loss list.
fa8c58a Bonding: fixed closing the listener socket (#2538).

Build Scripts (CMake, etc.)

ef17a24 Travis: display stack trace by gdb on crash (#2565).
fdb9389 Run codecov only after success in Travis.
f86df39 Disable ConnectionTimeout test (blocking), Win GitHub Action (#2543).
27a92b3 Upgrade to checkout@v3 GitHub action.
b90b64d Identify parameters with a prepended -l in CMAKE_CXX_IMPLICIT_LINK_LIBRARIES
90af35a Fix MacOS Build with SDK-10.5 (#2462).
f610fe6 Find GTest using version range 1.8-1.12.

Sample Applications

aba73de Added examples for message mode transmission (#2592).
b38b61d Fix ENABLE_AEAD_API_PREVIEW in apps. (#2588)
b6f1e9c Examples: wait 1 sec until receiver completes (#2572).
11701a6 Added cryptomode URI query option.
18c829a UriParser: fixed protocol type detection (#2452).

Documentation

5b16f69 Removed LGTM badges from README.
a7e4204 groupconnect option value "1" (instead of "true") (#2590)
ba67d36 AES-GCM is only allowed if TSBPD is enabled.
72d135d Fixed SRTO_PASSPHRASE length range.
6a0caac Address multiple typo fixes. (#2570)
37d44f4 Added lacking SRTO_BINDTODEVICE for srt_config_add (#2564).
a791156 Fixed wrong description of PBKEYLEN conflict resolution (#2513).
89992c0 Added a note on activating HAICRYPT logging (#2529)
8a77525 Add SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE.
e0a25d0 Fixed the build-win.md (#2487)
0f49f1c Defined a reason to use C++11 on Windows
6c4c299 Updated docs on release notes generation