* [CI] Added configuration for Linux with various matrix combinations
* Some minor fixes
* Fixed YAML syntax error
* Fixed C++ std spec
* Consolidated build options
* Fixed exclude list
* Fixed exclude list
* Fixed matrix combinations
* Replaced with two linear matrices
* Fixed description
* Changed names and split to single files
* Blocked matrix, added variants to C++03
* Fixed wrong config on C++03
* Fixed names
* Small fixes in crypto matrix
* Removed crypto builds. Added MinGW build
* Fixed MinGW typo. Added core handling for Linux
* Added more platforms with C++11. Unset -Werror for MinGW
* Added fixes per build break on MinGW
* More Windows fixes
* Fixed invalid specialization after fixing for Windows
* More fixes for Windows and MinGW
* Fixed invalid definition for UDP socket in testing apps
* Renamed Windows workflow
* Fixed multiple machines for Linux/C++11 syntax
* Linux matrix: blocked gdb for other than ubuntu-latest
* Linux matrix: blocked gdb for other than ubuntu-latest (fixed syntax error)
* Separated preinstallation action to track the problem
* Configured noenc on platforms with no SSL available
* Separated preinstallation action to track the problem 2
* Blocked installation except ubuntu-latest
* Removed slim as it has no access to cmake
---------
Co-authored-by: Mikołaj Małecki <mmalecki@haivision.com>
dropMessage early-returns when offset_b < 0 (the entire range is
before the buffer start), but does not symmetrically guard against
offset_a >= m_szSize (the entire range is past the buffer end).
In that case start_off = offset_a is unbounded; incPos() wraps
modulo m_szSize and the loop walks legitimate buffer entries,
marking them EntryState_Drop -- corrupting receiver state from a
single malformed call.
Add a symmetric early return for offset_a >= m_szSize.
Add CRcvBufferReadMsg.PacketDropLoPastBufferEnd covering the new
guard: insert two packets, request a drop whose lo is well past
the buffer end, assert no packets were dropped and the buffered
packets are still readable.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* [BUG] Fixed a heavy-logging instruction that may crash on initialization
* Protect calls to logger functions by checking on src_config NULL
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* [BUG] Incorrect error code when srt_listen on closed socket
* Fixed API description
* Ask Codespell to ignore the TEST() macro.
* Replace few if statements by a switch statement.
* Status SRTS_NONEXIST throws MN_CLOSED instead of MN_ISUNBOUND
* Manage the rendez-vous case first
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
* Fix group data length check in handshake processing
* Apply suggestions from code review
Changed the maximum size of copied data to the size of the array.
* Apply suggestion from @ethouris
Fixed through a separate variable.
---------
Co-authored-by: Sektor van Skijlen <ethouris@gmail.com>
* [BUG] Prevent blocking srt_close call from interrupting connection
* Test: added check that srt_close call is not blocked. Ensured that waiting is interrupt ed on close. Ensured that the socket is closed right after wait quit
* Fixed incorrect C++17 literals
* Increased wait time tolerance for srt_close (failing on some slower CI machines)
---------
Co-authored-by: Mikołaj Małecki <mmalecki@haivision.com>
* Added more logs around rexmit bandwidth
* [API] raise libSRT version number to 1.5.5
* Maintenance changes
* Rewrite the Bandwidth estimation system.
* Merged changes from Clement's implementation
* Introduce CShaper to control the retransmission BW.
* Fixed with average packet size measurement
* Added self-adjusting of burst period
* Fixed wrong formulas and added some logs
* Removed old changes for CSndRateEstimator. Blocked the use of CSndRateEstimator.
* Applied most direct review fixes
* Refactoring: split packLostData into smaller parts
* Some cosmetic fixes
* Cosmetics
* Removed Tie function that was using non-C++03-compatible assignment
* Stretched connection timeout for accept in FEC tests
* Trying to track the problem in FEC tests on Mac
* Adjusted TestFEC tests to a bug in listener missing signal
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
* Initial testing version of the cookie contest fix
* Setting cookie contest 1.5.4 as default
* [core] Restored old cookie contest. Added ignored wrong peer response on cookie collision
* Fixed security report
* Removed the (unnecessary now) fix for the future version compatibility
* Update test/test_common.cpp - fixed a typo in a comment
* Fixed TestFEC tests to be resistant of a listener-readiness bug (fixed in dev)
* Try to fix the first issue
* Removed remains after the screw-in cookie procedures
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
* [MAINT] Add fixes for CI configuration based on latest dev
* Added fixes from another PR
* Added lacking scripts and repos
* Fixed error reported in CI. Fixed ABI entry
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* Fix SIGABRT when bonding option is too long
* Move the UT to test_bonding.cpp
---------
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
* [core] Cleanup SRT state after a fork() (issue #3177)
* Free socket memory without calling the destructor.
* Remove srt_cleanupAtFork() from the API.
* Make it compile on systems that don't support pthread_atfork()
* Remove a typo
* Avoid to send shutdown packet when cleaning up after a fork.
* Close the dangling UDP sockets, Free memory.
* Add TODO for freeing the Send Queue after refacttoring it.
* Ensure that CThread is joinable before join()
* Try fix iOS-cxxsyncOFF
* Replace the mutex pointer by a mutex reference.
* Refactor the Multiplexer initialization.
* Fix SIGSEGV
* Fix Compilation error on a Debug Log
* Rollback to cleaner code for the multiplexer initialization.
* Add compatibility with C++11 Sync.
* Apply code review changes
* Replace the resetThread() macro by an inline function.
Co-authored-by: Sektor van Skijlen <ethouris@gmail.com>
* Reset m_CGStopCond in CUDTUnited
* Rework of resetThread()
* Ensure Garbage collector is in the right state after fork.
* Protect ~CMultiplexer() against NULL pointers.
* Protect resetAtFork() and stop() against NULL pointers.
* Added fork example to the repository
* Remove french comments.
---------
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
Co-authored-by: Sektor van Skijlen <ethouris@gmail.com>
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* [build] Update Ubuntu runners to 22.04.
* Update to googletest-1.12.1
* Remove Unit Tests from the ABI workflow.
* Use latest version of ubuntu
* Remove build-wrapper.
---------
Authored-by: Clément Gérouville <cgerouville@haivision.com>
* [MAINT] Added optional test discovery. Added improvements for attributes
* Enabled C++17 version of shared mutex when compiling in C++17 mode
* [core] Rework m_bListening to lock-free and m_GlobControlLock to use shared mutex
* Added UT discovery option to configure
* Changed enabled std::shared_mutex only if compiling with stdc++-sync
* Fixed problem with not updated sync.cpp SharedMutex
* Removed dead code
* Fixed review findings
* Demoted some locks on m_GlobControlLock to shared. Added false positive TSan info
* Merged changes from #3200
* Added a fix that should repair the problem reported in 3196. Still needs rechecks
* Fixed incorrect shared lock applied for a case when a new group is to be created (required exclusive)
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* [MAINT] Added optional test discovery. Added improvements for attributes
* Enabled C++17 version of shared mutex when compiling in C++17 mode
* Added UT discovery option to configure
* Changed enabled std::shared_mutex only if compiling with stdc++-sync
* Fixed problem with not updated sync.cpp SharedMutex
* Fixed review findings
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* Fixed some thread-related problems
* Fixed a leak in group objects
* Fixed incorrect conditional for a group closure fix
* Update srtcore/group.cpp - comment typo
---------
Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
* Update for compatibility with CMake 4.x
* Update cxx11-macos.yaml
Downgrade googletest to 1.16.x as latest one requires C++ 17
* Update cxx11-macos.yaml
try to download the exact version of google test formula from homebrew history
* Update cxx11-macos.yaml
downgrade googletest to 1.12.1
---------
Co-authored-by: Sam Umbach <samumbach@gmail.com>
* [core] Fixed bug: tsbpd might miss m_bClosing flag setting, flag not always properly set. Added some sanity checks
* Removed excessive variable
* Added important comment from another PR
* Localized the bWokeUpOnSignal variable better
* Removed time-interrupted waiting on TsbPd thread as it caused more CPU usage
---------
Co-authored-by: Mikołaj Małecki <mmalecki@haivision.com>