Skip to content

v1.5.5

Choose a tag to compare

@cl-ment cl-ment released this 28 Apr 12:15
· 12 commits to master since this release
b6b4ae9

Known Issues

  • Segmentation fault (SEGV) may occur during global initialization when ENABLE_HEAVY_LOGGING is enabled in cmake (#3309). This option is disabled by default (it's usually only for developer use) and the problem may occur in environments with unusual global initialization ordering. The issue is fixed in the latest version on the master branch.

Release Notes

API / ABI / Integration Changes:

  • PR #3109: Fixed global initialization and consistency of startup() and cleanup() functions
  • PR #3089, #3096, #3077 and #3075: Fixed invalid socket options being applied to group sockets
  • PR #3110: Added support for Windows on ARM64
  • PR #3152: Added support for platforms lacking pthread_condattr_setclock (Android version <= 21)
  • PR #3219: Added handling for the LIBSRT_ prefix for CMake options. This allows developers to use SRT as a subproject while avoiding namespace pollution from variables like ENABLE_SHARED.

Internal Improvements:

  • PR #3220: Reimplemented the MAXREXMITBW (retransmission bandwidth) controller using a Token Bucket algorithm via the new CShaper class. This replaces the previous controller and improves efficiency by calculating retransmission allowance based on real data size including headers.
  • PR #3189: Improved internal locking system: Reworked m_bListening to be lock-free and switched m_GlobControlLock to shared mutex
  • PR #3190: Improved attribute handling; using std::shared_mutex when compiling with C++17

Important Bug Fixes:

  • PR #3291: Connection State Accuracy: Fixed an issue where srt_connect reported incorrect error codes when attempted on a socket in a broken state. The function now correctly identifies these sockets as closed rather than reporting connection-specific failures.
  • PR #3298: Listen Operation Refinement:
    • Corrected the error code returned when calling srt_listen on a closed or non-existent socket to ensure status reports reflect the socket state accurately.
    • Backlog updates: Updated the logic for srt_listen to allow updates to the backlog parameter on sockets already in the LISTENING state. In such cases, the function now successfully updates the backlog and returns 0 (success).
  • PR #3259: Fixed a bug where a blocking srt_close call could be interrupted by a connection attempt.
  • PR #3290 and #3291: Resolved Issue #3289 regarding srt_connect in blocking mode. These fixes ensure that interrupting a blocking connection loop or closing the socket from another thread is correctly recognized. Previously, these scenarios could cause the function to incorrectly return success (0) or a misleading SRT_ECONNSOCK error; it now correctly returns SRT_ESCLOSED or SRT_EINVSOCK.
  • PR #3272: Fixed a potential buffer overflow in handshake processing by ensuring that incoming group data length does not exceed internal buffer capacity.
  • PR #3212 and #3227: Fixed and then restored the cookie contest method from version 1.4.5 as a lower-risk stability measure. It also introduces a mechanism to enforce specific cookie values for testing and development purposes.
  • PR #3214: Fixed reentrancy of srt_strerror()
  • PR #3210: Fixed crash when adding a string-typed option to a group configuration object
  • PR #3200: Fixed incorrect number of sockets returned by srt_epoll_uwait
  • PR #3179: Fixed inconsistent thread-related objects' state after fork()
  • PR #3166: Fixed issues found by thread and memory sanitizers
  • PR #3140: Fixed unexpected blocking behavior in sendmsg call
  • PR #3105: Fixed stalled connection that should break on rogue NAK/ACK reception
  • PR #3102: Fixed some misleading error messages
  • PR #3084: Fixed wrong 'connection lost' error when sending to group in non-blocking pending state
  • PR #1709: Fixed bug where tsbpd might miss m_bClosing flag set in the meantime
  • PR #3136: Fixed caller-accepting connection without packetfilter while requested by a caller (now: late-rejection)

Build:

  • PR #3295: CMake Policy Compatibility: Improved the handling of the CMP0077 policy within the CMake build system. The usage is now gated to ensure compatibility with environments using CMake versions older than 3.13, which do not recognize this policy and would otherwise throw errors.
  • PR #3263 (merged via #3274): Fixed numerous typos throughout the repository and enabled the codespell workflow for automated spelling checks.
  • PR #3230: Removed the use of list(PREPEND) in CMake configuration to maintain compatibility with CMake version 3.5.
  • PR #3232: Applied various CI configuration fixes and updated repository scripts based on the latest development branch requirements.
  • PR #3167: Changed minimum CMake version to 3.5 (required by CMake 4.0+ version)
  • PR #3182: Updated iOS build scripts
  • PR #3139: Added support for HarmonyOS (OHOS)
  • PR #3112: Added deprecation warning for Windows + PThreads builds
  • PR #3097 and #3117: Fixed static OpenSSL build failure

Unit Tests:

  • PR #3264: Hardened IPv6 detection in unit tests by searching for the presence of a colon (:) in address strings, replacing the less reliable "6." prefix check.
  • PR #3190: Added an option to disable test discovery when unit tests enabled
  • PR #3086: Extended socket option unit tests to include group sockets
  • PR #3085: Added additional bonding-related Unit tests
  • PR #3150: Fixed ConnectNonBlocking test to prevent early connection by delaying listen()
  • PR #3143: Fixed test issues to improve CI reliability

Sample Applications:

  • PR #3122: Fixed binding to local interface when sending to UDP endpoint
  • PR #3126: Fixed multicast bind address selection on Windows
  • PR #3108: Fixed issue where srt-live-transmit stops listening after disconnect (#2997)

Documentation:

  • PR #3301: Project Metadata: Synchronized and updated the status badges within the project README.md file to ensure they accurately reflect the current build and release candidate status.
  • PR #3261: Updated the Ubuntu Repology badge to reflect the current LTS version, 24.04.
  • PR #3271: Fixed a 404 error by updating an old URL.
  • PR #3125: Fixed documentation for socket options
  • PR #3079: Fixed link to rejection codes documentation

Contributors:

@lelegard @lilinxiong @samumbach @sergeiignatov @SPAleksey @yaruno
@fujitatomoya, @RostakaGmfun, @stevomatthews, @mbakholdina, @maxsharabayko, @ethouris, @cl-ment

Changelog:

Click to expand/collapse

Core Functionality

44d106f Incorrect error code when srt_listen on closed socket (#3298)
15cb088 Fixed misleading error code when connecting a broken socket (#3291)
951a87a Fixed bug: interrupting a blocking connect loop must be recognized per the same condition (#3290)
a26a702 Reimplemented MAXREXMITBW controller basing on Token Bucket algorithm (#3220)
72f0c6e Prevent blocking srt_close call from interrupting connection (#3259)
547688c Restored old cookie contest. Added development support for enforcing cookie values. (#3227)
c47c3e3 Fix group data length check in handshake processing (#3272)
52ceecd Fix SIGABRT when bonding option is too long (#3210)
9b97cfa Fixed reentrancy problem of srt_strerror (#3214)
5138f37 Cleanup SRT state after a fork() (issue #3177) (#3179)
265d0e4 Fixed invalid cookie contest calculation (#3212)
d720b8c Rework m_bListening to lock-free and m_GlobControlLock to use shared mutex (#3189)
7497397 Fixed bug in srt_epoll_uwait: wrong number of sockets returned
21370a7 Fixed problems found by thread and memory sanitizers (#3166)
dca5399 Automatic call of startup() and cleanup() #3098 (#3109)
4d0e984 Fixed accidental blocking on sendmsg call
8a89a3a Clarified conditions for setting IPTOS/TTL options. Added UT (#3096).
f8e1bd6 Late-rejection when listener responds with no packet filter
f3a8fe3 Fixed bug: tsbpd might miss m_bClosing flag setting, flag not always properly set. (#1709)
d69b065 Fixed socket options that are not allowed to be set on a group (#3089).
5cd2414 Fix stalled connection that should break after rogue NAK/ACK reception
a6b9959 Fixed misleading error message for listening socket (#3102).
1ec61fc Apply conditional to setting a macro for IPv6 on Mac (#3092).
b252637 Make field for bandwidth atomic to avoid thread clash (#3093).
f109fb1 Fixed: attempt to send to a group in connection-pending state (nonblocking) reported wrong 'connection lost' error
5f16494 Fixed getting SRTO_RCVBUF and SRTO_SNDBUF on a group.
833880b Fixed deriving string options by a group. SRTO_STREAMID, SRTO_PACKETFILTER are directly affected. SRTO_PASSPHRASE was derived correctly.
eb5b73f Fix CUDTGroup::getOpt(..): check value length in group config storage. The storage could have empty strings, and dereferencing the first element must not happen.

Unit Tests

80c871e Detect IPv6 with colon to harden the check if IPv6 is used in the test. (#3264)
952f949 Fixed ConnectNonBlocking: delay listen to prevent connection from being established too early
ee03ae9 Fixed tests to avoid mistakes in CI (#3143)
00e14f7 Extended socket options test to group options (#3086).
59e2c9c Added more tests for bonding (#3085).
3931af6 Minor cleanup of socket options tests (#3076).
6ab86d8 Extended Bonding.Options test with Stream ID and linger set/get check.
e9160f9 Added optional test discovery. Added improvements for attributes. Enabled `std::shared_mutex`` if compiling with C++17 (#3190)

Build Scripts (CMake, etc.)

f04c00c Fixed use of CMP0077 policy in too old cmake (#3295)
f0368c6 Added handling of LIBSRT_ prefix when setting cmake options for SRT build (#3219)
2220de5 Fix a bunch of typos and enable codespell via github workflow. (#3263)
84676b5 Avoid using list(PREPEND). (#3230)
5c5f5b5 [MAINT] Add fixes for CI configuration based on latest dev (#3232)
f8a53da Ubuntu 23.04 reached end-of-life in January 2024. (#3261)
725e2d4 Update Ubuntu runners to lastest. (#3180)
5d80411 Update iOS build scripts (#3182)
0c570a1 Remove SonarQube
d6d0e5a Compilation of SRT on platforms that do not support the pthread_condattr_setclock function. (#3152)
19113e6 Update cxx11-macos.yaml (#3170)
0def1b1 Update for compatibility with CMake 4.x (#3167)
0976f76 support OHOS (harmonyOS) system compile (#3139)
df81ecd Fixed outdated SonarQube configuration (#3124).
7b77d4c Fix use of the OPENSSL_USE_STATIC_LIBS CMake option (#3117).
fd56385 Added deprecation warning for Windows+PThreads configuration (#3112).
63bf962 Fix Windows installers (#3113).
bc8a084 Added support for Windows on Arm64 (#3110).

Sample Applications

697dce0 Fixed correct bind address selection for Windows multicast (#3126).
ce0a888 Fix srt-live-transmit stops listening after SRT disconnect #2997... (#3108)

Documentation

c3cfa17 [doc] Update badges in README.md (#3301)
ce54b5e Fixed SRTO_PASSWORD max length description.
c09532f Added link to the blogpost with - Live Streaming using SRT with QUIC Datagrams - research
f5e6bb9 Old URL (404 - no longer exists) (#3271)
8bc76ac Documentation fixes for socket options (#3125).
cdbe5f5 Updated conan badge links.
87850b7 Fixed link to rejection codes document.