Secure, Reliable, Transport
API/ABI version: 1.5.
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.tsbpd()
deadlock with processCtrlShutdown()
.IP_ADD_SOURCE_MEMBERSHIP
.SRT_INVALID_SOCK
instead of SRT_ERROR
in str_accept
.@aaron-jencks, @ethouris, @gou4shi1, @jlsantiago0, @lelegard, @maxsharabayko, @robUx4, @yomnes0
b1d8b048 Fixed SRT_ATTR_REQUIRES use. 4682646e SRT version raised to 1.5.3. 78a10205 Added maximum BW limit for retransmissions (#2714). 033dc9f3 Drop unencrypted packets in GCM mode. f9e36db8 Initialize ISN and PeerISN in CUDT. 54ef85fc Minor code clean up in CRateEstimator. 50619bd8 Fix: In rendezvous when processing resulted in ACCEPT it was still sending rejection d039fe6b Rejection not undertaken in rendezvous after KMX failure (#2692). 46b0579a Slightly optimize the RCV drop by message number (#2686). 7cfe12b7 fix tsbpd() may deadlock with processCtrlShutdown() 744035b2 Fix hang up on not enough space in the RCV buffer (#2745). c6572bf2 Refactor CRcvQueue::storePkt(..) for better resource management (#2775). 256244fb Fix memory leak when can't buffer a HS packet (#2757). 69c23766 Fixed RCV buffer initialization in Rendezvous. 88ca9ccc Perf improvement of group reading. 31294e39 Removed unused CUDTGroup::m_Positions. c639310b Fixed group read-ready epoll events. 9f4e9b67 Fixed srctime from closing socket was mistakenly cleared 1737e96a Add volatile keyword to asm block in rdtsc (#2759). 61c7bedf Use overlapped WSASendTo to avoid loss in UDP sending (#2632). 10e71a67 Fixed unhandled error in haicrypt (#2685).
9f414377 Added custom main with transparent parameters for tests (#2681).
51e3d0d5 Added missing public header files in Windows binary installer. 421f4e16 Fix downversioning of _WIN32_WINNT (#2754).
33a620bb Fixed conditional IP_ADD_SOURCE_MEMBERSHIP in testmedia (#2780). e9eb8b33 Fix the build for target without IP_ADD_SOURCE_MEMBERSHIP (#2779).
09f35c0f1 Fixed API doc: SRT_INVALID_SOCK instead of SRT_ERROR in str_accept. d0633138 Updating the explicit information for binding to IPv6 wildcard (#2765).
Full Changelog: https://github.com/Haivision/srt/compare/v1.5.2...v1.5.3
API/ABI version: 1.5.
SRTO_MAXREXMITBW
.tsbpd()
deadlock with processCtrlShutdown()
.IP_ADD_SOURCE_MEMBERSHIP
.@aaron-jencks, @ethouris, @gou4shi1, @jlsantiago0, @maxsharabayko, @robUx4, @yomnes0
4682646e SRT version raised to 1.5.3. 78a10205 Added maximum BW limit for retransmissions (#2714). 033dc9f3 Drop unencrypted packets in GCM mode. f9e36db8 Initialize ISN and PeerISN in CUDT. 54ef85fc Minor code clean up in CRateEstimator. 50619bd8 Fix: In rendezvous when processing resulted in ACCEPT it was still sending rejection d039fe6b Rejection not undertaken in rendezvous after KMX failure (#2692). 46b0579a Slightly optimize the RCV drop by message number (#2686). 7cfe12b7 fix tsbpd() may deadlock with processCtrlShutdown() 744035b2 Fix hang up on not enough space in the RCV buffer (#2745). c6572bf2 Refactor CRcvQueue::storePkt(..) for better resource management (#2775). 256244fb Fix memory leak when can't buffer a HS packet (#2757). 69c23766 Fixed RCV buffer initialization in Rendezvous. 88ca9ccc Perf improvement of group reading. 31294e39 Removed unused CUDTGroup::m_Positions. c639310b Fixed group read-ready epoll events. 9f4e9b67 Fixed srctime from closing socket was mistakenly cleared 1737e96a Add volatile keyword to asm block in rdtsc (#2759). 61c7bedf Use overlapped WSASendTo to avoid loss in UDP sending (#2632). 10e71a67 Fixed unhandled error in haicrypt (#2685).
9f414377 Added custom main with transparent parameters for tests (#2681).
421f4e16 Fix downversioning of _WIN32_WINNT (#2754).
33a620bb Fixed conditional IP_ADD_SOURCE_MEMBERSHIP in testmedia (#2780). e9eb8b33 Fix the build for target without IP_ADD_SOURCE_MEMBERSHIP (#2779).
d0633138 Updating the explicit information for binding to IPv6 wildcard (#2765).
API/ABI version: 1.5.
ENABLE_AEAD_API_PREVIEW=ON
,ENABLE_ENCRYPTION=ON
, and USE_ENCLIB=openssl-evp
build options to activate the feature.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.0 (auto)
for SRT listener, sender side. See the SRTO_CRYPTOMODE
socket option.SHUTDOWN
packet the peer now sends a CONCLUSION
handshake packet with a rejection reason.CRcvBuffer::dropMessage(..)
function.CLOSING
state is now set when closing a socket.ReuseAddr
.IP_PKTINFO
case that was failing for IPv4+IPv6 bound sockets.haicrypt
library.SRT_REJ_UNSECURE
) depending on the encryption level error.SRT_REJX_FALLBACK
rejection reason is now used if an application rejects a group connection without providing a reason.SRTO_MSS
< SRTO_PAYLOADSIZE
, a message would be split into two packets in live configuration mode.0x4A17
. The associated rejection reason is SRT_REJ_ROGUE
.srt_getpeername()
function.m_iFlowWindowSize
, m_iSndLastAck
, m_tsLastRspTime
, and m_iSndLastAck
fields.-Wshadow=local
to CMake build flags. Supported since GCC 7.0.std::put_time()
function.SRTO_PBKEYLEN
negotiation table to the documentation.SRTO_PASSPHRASE
length range.PBKEYLEN
conflict resolution.HAICRYPT
logging.SRTO_CRYPTOMODE
, SRT_REJ_CRYPTO
, SRT_KM_S_BADCRYPTOMODE
).srt-test-multiplex
application on medium error.
41c4b1f6 Fixed #ifdef ENABLE_AEAD_API_PREVIEW
(#2603).
b3a21e10 SRT version raised to 1.5.2.
c0d9fcde Restored resetlogfa(..)
in udt.h. Reverting #2558, although udt.h is not the official SRT API.
87de405f Added ENABLE_AEAD_API_PREVIEW
build option to enable AEAD API.
60d12374 Crypto mode 'auto' implemented for listener (#2574).
27e7d8df Socket Options: do not allow AES GCM if TSBPD is disabled.
3e4561e2 Add GCM to the SRT API.
3cefedef Correct remaining endianness issues 30e7ccdf Minor fix of variable shadowing. 6fcff6df Fixed various compiler warnings on various platforms (#2679). 59cde539 Fixed FEC Emergency resize crash (#2717). 2fcd3d44 Fix crypto mode auto for listener sender (#2711). b010763b Fixed typos in MBedTLS where it referred to GnuTLS (#2699). a991767c Fix peer filter config being rejected because of endianness 1cffd2f2 Added rejection handshake sent to the peer in rendezvous mode (#2667). f57ba891 Added missing thread watchdog ticks in 3 thread loop (#2669). e8d05331 Fixed old ENABLE_AEAD_PREVIEW. 599c1fba Reworked the CRcvBuffer::dropMessage(..) function (#2661). 79487722 Removed duplicate lines (#2660). 3ffc93f2 Fixed CRcvBuffer::dropMessage (#2657). e9a3955e Fixed guard for rcv-rexmit fields (#1859). 22e97f8a Fixed warnings and removed redundant includes (#2658). c83c31ba Reduce frequency of the decryption failure log (#2602). 21b55a22 Disabled warnings various platforms and fixed C++20 Windows build (#2411). 65bef373 Set CLOSING state when closing a socket (#2643). 02cba9e1 Drop undecrypted packet based on sequence number (#2654). 6d774dd5 Fixed invalid ASSERT checking outdated object in haicrypt (#2652). 8db35de5 Refaxed and fixed multiplexer reusage (#2608). 6c92a13d Fix crash when enable heavy log and socket id less than 10 (#2619). 64dedef3 CodeQL: operation requires 22 bytes. 0c583f80 CodeQL warning: checking NULL after new. b8962b4a Fixed PKTINFO case that was failing for IPv4+IPv6 bound sockets (#2630). a42a39f4 Fixed wrong null-safety condition check in haicrypt (#2616). 30f6f6bc Removed extra redundant condition checks (#2615). 5f023102 Fix negative id when wrap around f5337161 Fixed reject reason by a caller if connection is UNSECURE (#2622). 04e8dbc6 Fixed default reject reason for a listener callback (#2605). 0b9d5832 AEAD: don't break a connection on decrypt failure. 6db28dcc RCV Buffer Refax: added some utils and simplifications (#2522). 5889a2cc AES-GCM payload length check (#2591). 45232ad1 Allow fileCC in group mode 98b1b004 Added extraction of IP_PKTINFO when reading (#456). de9fc45c Fix CRcvBuffer last position in getTimespan_ms (#2579). 38b4211d Remove use variable length array (#2279). 78dd987c Fixed missing DROPREQ for LOSSREPORT that partially predates ACK (#2498). 4090b253 Reject caller to caller connection (#2562). 0a835ea4 Refax: moved removal of one seq from fresh loss list to a separate function (#2521). 19af5d1b Obtain ConnectionLock while sending crypto keys. 3d517cfc Fixed a warning: member referenced before initialized (#2433). fc82eace Refax: remove usage of LOGF/HLOGF (#2566). 637d439c Refax: removed m_iRcvLastSkipAck and its dependencies (#2546). 6c52f2d8 Pass std::string by const ref where possible. 6d620961 Applied clang-format on md5.cpp and md5.h. 2c48cba3 MD5: Removed null pointer subtraction (may have undefined behavior). ae390526 Fixed rendezvous connection in the Non Blocking Mode (#2548). 01388984 Fixed cloning the RX crypto context (AEAD) be1ccf57 Moved KM refresh in packUniqueData() (#2541). f864cec8 Fixed TARGET_OS_MAC not defined. Wrong include order. 432f2d82 fix CSndBuffer parameter incorrect in AES GCM mode cbfa812c Refax/postfix: further fixes after last refax changes (#2528) e082f30a Fixed validation of input parameters in srt_connect (#2520). 932e5bdc Cleanup of bonding conditionals and unused code (#2525). f477b51f Fixed connected peer address recording (#2526) b76c8b2e Fixed CRcvBuffer::getAvailSize() may jump around. (#2490) 71c3e40a Refax: safety improvements for RCV loss list and closing state (#2517) 491e6e8c Extract RCV buffer insertion handling to a separate function (#2500). 258a8583 Refax: added size cache to the group container (#2510). 2fd13637 Refax: improve logging and code readability around specific logging (#2511). f7a024a0 Refax: removed the synconmsg property and its handling in the group (#2509) 53735e1f Don't consider tool old ACK as IPE, it' may caused by network. d26bbf78 Fixed a false alarm: ACK ERROR...(diff -1) 0f6e7c7e Fixed the inconsistency between getFirstLostSeq() and ackDataUpTo() (#2488) ea86302a Reduced calls to steady_clock::now() from two to one. 8e9958a8 Reject if SRT_MAGIC_CODE is not set in the HS induction response. 8e67aa79 Tune logs of group members adding and removing. c01c6461 Fixed AES-GCM support check. d5f73ca1 Protocol: set AES-GCM auth in the KM message. f6370352 Use setDataPacketTS to timestamp data packets (#2489). 04369b88 Made offset consistent with avail_bufsize. (#2465) ba5ad53e Fixed message seqno check. c416971b Minor edits to the CRcvBuffer::getTimespan_ms(). 9ed73926 CRYSPR GCM: fixed usage of the aes_gcm_cipher(..) prototype. Renamed CRYSPR_AUTHTAGMAX to HAICRYPT_AUTHTAG_MAX and relocated. 66179ab3 CRYSPR: Add AES GCM mode with OpenSSL EVP (#2476). 1b20a48c Replaced m_iRcvLastSkipAck with m_iRcvLastAck in logs. e94d3e16 Add auth tag to the sender buffer. The additional space to be used for auth tag in GCM AEAD. 6dd47c3b Add capacity property to CPacket. 345517b2 Changed CUnit::m_iFlag type to bool. 2fed4002 Renamed buffer.cpp to buffer_snd.cpp. 4f2bf28d Renamed CRcvBufferNew to CRcvBuffer 29c7c643 Removed old receiver buffer and ENABLE_NEW_RCVBUFFER build option. a1c0ab3b Combined the loops of m_FreshLoss and m_pRcvLossList daf91f3d Replaced reorder_prevent_lossreport with initial_loss_ttl. ae181862 Also protected m_pRcvLossList->insert() with m_RcvBufferLock. 432cfe4b Moved m_FreshLoss.push_back() out of the incoming loop. e2f43750 Cleanup the useless tnkeep. c21a5ae9 Mark m_pRcvLossList and m_FreshLoss to be guarded by m_RcvLossLock. 70a8eb28 Fixed missing m_RcvLossLock in processData(). 22588e40 Improved logs of core.cpp with CONID() 229192c8 Added a trailing space in CONID() d84ac20d Improved some logs for the no room issue. 90bcc64f Fixed CRcvLossList can not remove m_iMaxSeqNo. 8c6675cc Fixed some wrong usages of m_iMaxSeqNo. fda74411 Refax: moved buffer tools to a separate file (#2499).
be254e7d Minor fix of variable shadowing. 715da9dc Added check for read-ready for decryption failure case (#2609). 053f1794 Splitting ListenCallback test into 3 separate tests (#2556). 9a022d68 Added AES GCM unit test for CCryptoControl. 43a7c322 Added a couple of tests on RCV loss list. fa8c58a1 Bonding: fixed closing the listener socket (#2538).
66c86b18 Add -Wshadow=local to CMake build flags. Supported since GCC 7.0. 9fc5c092 Upgraded CI: ubuntu to version 20.04 (#2682). d9c17945 Set serial running unit tests property (#2671). f57beb6e Fixed CodeQL configuration (#2644). a7bd1b03 Use CXX 14 in MacOS GitHub Action. dd19eac4 Add CodeQL workflow for GitHub code scanning (#2578). 85f555d0 Fix builds where the C++ runtime library does not have std::put_time() (#2439). a08a42c4 Use GTest from brew in MacOS action. (#2607) ef17a24f Travis: display stack trace by gdb on crash (#2565). fdb93890 Run codecov only after success in Travis. f86df397 Disable ConnectionTimeout test (blocking), Win GitHub Action (#2543). 27a92b36 Upgrade to checkout@v3 GitHub action. b90b64d2 Identify parameters with a prepended -l in CMAKE_CXX_IMPLICIT_LINK_LIBRARIES 90af35a2 Fix MacOS Build with SDK-10.5 (#2462). f610fe60 Find GTest using version range 1.8-1.12.
39822840 Fixed crash in srt-test-multiplex on medium error (#2688). 46d55c6a Added 'bind' parameter handling for applications (#2672). aba73de4 Added examples for message mode transmission (#2592). b38b61dc Fix ENABLE_AEAD_API_PREVIEW in apps. (#2588) b6f1e9cf Examples: wait 1 sec until receiver completes (#2572). 11701a64 Added cryptomode URI query option. 18c829a4 UriParser: fixed protocol type detection (#2452).
4c9a4178 Added the link for registration in slack to the getting started table (#2721). 806f474e Changed the buffer size description to be clearer (#2670). 09fa30ca Added SRTO_PBKEYLEN negotiation table (#2659). f15f7a21 Fixed formatting and minor errors in srt_bind API doc (#2642). bb7472f1 Fixed invalid link 2-srt_km_state (#2614). 746551d2 Added package version badges (#2604). 5b16f695 Removed LGTM badges from README. a7e4204a groupconnect option value "1" (instead of "true") (#2590) ba67d36a AES-GCM is only allowed if TSBPD is enabled. 72d135d5 Fixed SRTO_PASSPHRASE length range. 6a0caac9 Address multiple typo fixes. (#2570) 37d44f42 Added lacking SRTO_BINDTODEVICE for srt_config_add (#2564). a791156b Fixed wrong description of PBKEYLEN conflict resolution (#2513). 89992c0b Added a note on activating HAICRYPT logging (#2529) 8a775251 Add SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE. e0a25d0b Fixed the build-win.md (#2487) 0f49f1c2 Defined a reason to use C++11 on Windows 6c4c2993 Updated docs on release notes generation
Changes from v1.5.2-rc.1.
API/ABI version: 1.5.
#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.
#2688: Fixed crash in srt-test-multiplex on medium error.
#2726: Add -Wshadow=local
to CMake build flags. Supported since GCC 7.0.
#2721: Added the link for registration in Slack to the getting started table.
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
be254e7 Minor fix of variable shadowing.
66c86b1 Add -Wshadow=local to CMake build flags. Supported since GCC 7.0. 9fc5c09 Upgraded CI: ubuntu to version 20.04 (#2682).
3982284 Fixed crash in srt-test-multiplex on medium error (#2688).
4c9a417 Added the link for registration in slack to the getting started table (#2721).
Including changes from v1.5.2-rc.0.
API/ABI version: 1.5.
ENABLE_AEAD_API_PREVIEW=ON
and USE_ENCLIB=openssl-evp
build options.IP_PKTINFO
.CRcvBuffer::dropMessage(..)
function.srt_getpeername()
.std::put_time()
.SRTO_PBKEYLEN
negotiation table.PBKEYLEN
conflict resolution.SRTO_CRYPTOMODE
, SRT_REJ_CRYPTO
, SRT_KM_S_BADCRYPTOMODE
.
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.
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).
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).
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.
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)
806f474 Changed the buffer size description to be clearer (#2670). 09fa30c Added SRTO_PBKEYLEN negotiation table (#2659). f15f7a2 Fixed formatting and minor errors in srt_bind API doc (#2642). bb7472f Fixed invalid link 2-srt_km_state (#2614). 746551d Added package version badges (#2604). 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 90d2f07 Fixed the version to 1.5.1 and did some minor changes to build options summary table 82f742b Added Packet Managers section to Build Instructions
API/ABI version: 1.5.
ENABLE_AEAD_API_PREVIEW=ON
and USE_ENCLIB=openssl-evp
build options.IP_PKTINFO
.srt_getpeername()
.PBKEYLEN
conflict resolution.SRTO_CRYPTOMODE
, SRT_REJ_CRYPTO
, SRT_KM_S_BADCRYPTOMODE
.
b3a21e10 [API] SRT version raised to 1.5.2.
c0d9fcde [API] Restored resetlogfa(..)
in udt.h. Reverting #2558, although udt.h is not the official SRT API.
87de405f [API] Added ENABLE_AEAD_API_PREVIEW build option to enable AEAD API.
60d12374 [API] Crypto mode 'auto' implemented for listener (#2574).
27e7d8df [api] Socket Options: do not allow AES GCM if TSBPD is disabled.
3e4561e2 [API] Add GCM to the SRT API.
0b9d5832 AEAD: don't break a connection on decrypt failure. 6db28dcc RCV Buffer Refax: added some utils and simplifications (#2522). 5889a2cc AES-GCM payload length check (#2591). 45232ad1 Allow fileCC in group mode 98b1b004 Added extraction of IP_PKTINFO when reading (#456). de9fc45c Fix CRcvBuffer last position in getTimespan_ms (#2579). 38b4211d Remove use variable length array (#2279). 78dd987c Fixed missing DROPREQ for LOSSREPORT that partially predates ACK (#2498). 4090b253 Reject caller to caller connection (#2562). 0a835ea4 Refax: moved removal of one seq from fresh loss list to a separate function (#2521). 19af5d1b Obtain ConnectionLock while sending crypto keys. 3d517cfc Fixed a warning: member referenced before initialized (#2433). fc82eace Refax: remove usage of LOGF/HLOGF (#2566). 637d439c Refax: removed m_iRcvLastSkipAck and its dependencies (#2546). 6c52f2d8 Pass std::string by const ref where possible. 6d620961 Applied clang-format on md5.cpp and md5.h. 2c48cba3 MD5: Removed null pointer subtraction (may have undefined behavior). ae390526 Fixed rendezvous connection in the Non Blocking Mode (#2548). 01388984 Fixed cloning the RX crypto context (AEAD) be1ccf57 Moved KM refresh in packUniqueData() (#2541). f864cec8 Fixed TARGET_OS_MAC not defined. Wrong include order. 432f2d82 fix CSndBuffer parameter incorrect in AES GCM mode cbfa812c Refax/postfix: further fixes after last refax changes (#2528) e082f30a Fixed validation of input parameters in srt_connect (#2520). 932e5bdc Cleanup of bonding conditionals and unused code (#2525). f477b51f Fixed connected peer address recording (#2526) b76c8b2e Fixed CRcvBuffer::getAvailSize() may jump around. (#2490) 71c3e40a Refax: safety improvements for RCV loss list and closing state (#2517) 491e6e8c Extract RCV buffer insertion handling to a separate function (#2500). 258a8583 Refax: added size cache to the group container (#2510). 2fd13637 Refax: improve logging and code readability around specific logging (#2511). f7a024a0 Refax: removed the synconmsg property and its handling in the group (#2509) 53735e1f Don't consider tool old ACK as IPE, it' may caused by network. d26bbf78 Fixed a false alarm: ACK ERROR...(diff -1) 0f6e7c7e Fixed the inconsistency between getFirstLostSeq() and ackDataUpTo() (#2488) ea86302a Reduced calls to steady_clock::now() from two to one. 8e9958a8 Reject if SRT_MAGIC_CODE is not set in the HS induction response. 8e67aa79 Tune logs of group members adding and removing. c01c6461 Fixed AES-GCM support check. d5f73ca1 Protocol: set AES-GCM auth in the KM message. f6370352 Use setDataPacketTS to timestamp data packets (#2489). 04369b88 Made offset consistent with avail_bufsize. (#2465) ba5ad53e Fixed message seqno check. c416971b Minor edits to the CRcvBuffer::getTimespan_ms(). 9ed73926 CRYSPR GCM: fixed usage of the aes_gcm_cipher(..) prototype. Renamed CRYSPR_AUTHTAGMAX to HAICRYPT_AUTHTAG_MAX and relocated. 66179ab3 CRYSPR: Add AES GCM mode with OpenSSL EVP (#2476). 1b20a48c Replaced m_iRcvLastSkipAck with m_iRcvLastAck in logs. e94d3e16 Add auth tag to the sender buffer. The additional space to be used for auth tag in GCM AEAD. 6dd47c3b Add capacity property to CPacket. 345517b2 Changed CUnit::m_iFlag type to bool. 2fed4002 Renamed buffer.cpp to buffer_snd.cpp. 4f2bf28d Renamed CRcvBufferNew to CRcvBuffer 29c7c643 Removed old receiver buffer and ENABLE_NEW_RCVBUFFER build option. a1c0ab3b Combined the loops of m_FreshLoss and m_pRcvLossList daf91f3d Replaced reorder_prevent_lossreport with initial_loss_ttl. ae181862 Also protected m_pRcvLossList->insert() with m_RcvBufferLock. 432cfe4b Moved m_FreshLoss.push_back() out of the incoming loop. e2f43750 Cleanup the useless tnkeep. c21a5ae9 Mark m_pRcvLossList and m_FreshLoss to be guarded by m_RcvLossLock. 70a8eb28 Fixed missing m_RcvLossLock in processData(). 22588e40 Improved logs of core.cpp with CONID() 229192c8 Added a trailing space in CONID() d84ac20d Improved some logs for the no room issue. 90bcc64f Fixed CRcvLossList can not remove m_iMaxSeqNo. 8c6675cc Fixed some wrong usages of m_iMaxSeqNo. fda74411 Refax: moved buffer tools to a separate file (#2499).
053f1794 Splitting ListenCallback test into 3 separate tests (#2556). 9a022d68 Added AES GCM unit test for CCryptoControl. 43a7c322 Added a couple of tests on RCV loss list. fa8c58a1 Bonding: fixed closing the listener socket (#2538).
ef17a24f Travis: display stack trace by gdb on crash (#2565). fdb93890 Run codecov only after success in Travis. f86df397 Disable ConnectionTimeout test (blocking), Win GitHub Action (#2543). 27a92b36 Upgrade to checkout@v3 GitHub action. b90b64d2 Identify parameters with a prepended -l in CMAKE_CXX_IMPLICIT_LINK_LIBRARIES 90af35a2 Fix MacOS Build with SDK-10.5 (#2462). f610fe60 Find GTest using version range 1.8-1.12.
aba73de4 Added examples for message mode transmission (#2592). b38b61dc Fix ENABLE_AEAD_API_PREVIEW in apps. (#2588) b6f1e9cf Examples: wait 1 sec until receiver completes (#2572). 11701a64 Added cryptomode URI query option. 18c829a4 UriParser: fixed protocol type detection (#2452).
5b16f695 Removed LGTM badges from README. a7e4204a groupconnect option value "1" (instead of "true") (#2590) ba67d36a AES-GCM is only allowed if TSBPD is enabled. 72d135d5 Fixed SRTO_PASSPHRASE length range. 6a0caac9 Address multiple typo fixes. (#2570) 37d44f42 Added lacking SRTO_BINDTODEVICE for srt_config_add (#2564). a791156b Fixed wrong description of PBKEYLEN conflict resolution (#2513). 89992c0b Added a note on activating HAICRYPT logging (#2529) 8a775251 Add SRTO_CRYPTOMODE, SRT_REJ_CRYPTO, SRT_KM_S_BADCRYPTOMODE. e0a25d0b Fixed the build-win.md (#2487) 0f49f1c2 Defined a reason to use C++11 on Windows 6c4c2993 Updated docs on release notes generation
API/ABI version: 1.5.
Some minor changes touching, but not affecting the API/ABI compliance:
MJ
and MN
and almost immediately undefines them. Those short names could potentially conflict with macros in 3rd party applications. Renamed macro MN
to SRT_EMN
and MJ
to SRT_EMJ
.mingw-w64
that supports __declspec(dllexport)
and __declspec(import)
specifiers.-DUSE_ENCLIB=openssl-evp
CMake build option.CRcvQueue
and CUnitQueue
.CUnitQueue
changes.byteRcvLoss
statistic. This is a fix for the issue #2414 introduced in PR #2212. Affected version is v1.5.0.mbedTLS
.sendBroadcast()
function message length.ENABLE_BONDING
socket option to the Windows PowerShell build script.@maxsharabayko, @jeandube, @oviano, @robUx4, @mbakholdina, @ethouris, @gou4shi1, @maksqwe, @lewk2, @Adela0814
453b276 SRT version raised to 1.5.1. ec52c45 Export functions in mingw-w64 when building as a DLL (#2451). daf838e Renamed macro MN to SRT_EMN, MJ to SRT_EMJ.
646bf2c Remove MSG_TRUNC logging
293a677 Removed unused struct HaveState
96d0c12 Fixed missing reject reason types (logging). (#2436)
8941831 Changed cond notification naming. Added and used new sync utilities. (#2429)
eae2749 Update TSBPD base time and clock drift on an idle connection. (#2408)
e50ccde Applied clang-format on CPacket.
666ee63 Fixed outlen_p value in EVP_AES_EcbCipher (crysprOpenSSL_EVP_AES_EcbCipher).
f0b2003 Minor CSndBuffer edits. (#2430)
fe98265 CCryptoControl: Partially removed dependency on CUDT. (#2424)
5ae3b00 Removed unused struct FByOldestActive.
7f12138 Initialize CRYSPR in startup() (#2425)
1b30573 Remove unused variable
e48f43d Fixed SRT_ASSERT definition for non-MSVC compilers (#2423).
ee398a3 Small refactor of the crysprFallback_MsEncrypt
618db39 Fixed byteRcvLoss
stats
088e27d Create MbedTLS ctx in PBKDF (#2413)
ced76c7 Increased CUnitQueue block allocation speed. Allocates 128 additional units at the start and every time 90% of units are taken. Previously was allocating only 32 units.
a51ec39 Protect CUnit::m_iFlag
from data race using an atomic. Refactored common allocation code CUnitQueue::allocateEntry(..).
b5055db Minor clean-up fix rethrowing an exception.
c3fed9c CRcvQueue
tracks IP version instead of CUnitQueue
830c599 CUnitQueue::increase()
: Do not adjust taken units. The adjustment was intended to patch issues around m_iCount. Those are not present anymore.
cdafca5 Fix sendBroadcast()
message length (#2391).
c5f613e Added OpenSSL EVP API support to HaiCrypt (#2333).
5070037 Cookie contest log msg downgraded to Debug
bb6c493 Rethrow an exception without copying it.
c9e48bd Made CRcvQueue::m_counter
atomic to avoid data race. Used for setting the RcvQueue:: worker thread name for logging.
6a489e1 Fixed suspicious (HCRYPT_CTX_F_ENCRYPT & ctx->flags ? ..).
2de9e6e Explicitly compare with an enum type. Fixes #2374.
61170ad Fixed local variable 'i' hiding previous local declaration. Fixes #2371.
88aab43 Fixed 'false' value implicitly casting to an integer. Handle handling failure of fillHsExtKMRSP(..)
. Fixed some other minor conversion warnings. Fixes #2372.
0bc3b03 List contributors using the changelog generation script (#2456)
3ed8bfa Fixed a typo: cypto -> crypto. 086dfe9 Fixed TestIPv6.v6_calls_v4 0153f69 Minor fix for Bonding.CloseGroupAndSocket (#2406). 04407e6 SyncRandom.GenRandomInt: Increase tolerance (#2385)
95d82c4 Only install headers if CMAKE_INSTALL_INCLUDEDIR is available 91a4373 Only install pkg-config files if CMAKE_INSTALL_LIBDIR is available 3709471 Use the default TARGETS installation folder when possible 286b43e Don't force RUNTIME targets in CMAKE_INSTALL_BINDIR 3170590 Install scripts/srt-ffplay in the bin directory ea84103 Always use GNUInstallDirs bb6fede Add variable telling if DESTINATION is needed with install() 6b70452 Add 'ENABLE BONDING' option to Windows PowerShell build script (#2398).
90d2f07 Fixed the version to 1.5.1 and did some minor changes to build options summary table. 82f742b Added Packet Managers section to Build Instructions. 286b3aa Updated the Debian badge in ReadMe 89e11eb Fixed Time Access link in API-functions. 5812e1f Fixed a typo in srt_epoll_uwait
API/ABI version: 1.5.
-DUSE_ENCLIB=openssl-evp
CMake build option).CRcvQueue
).byteRcvLoss
stats.sendBroadcast()
message length.ENABLE BONDING
option to Windows PowerShell build script.__declspec(dllexport)
).
453b276 SRT version raised to 1.5.1. ec52c45 Export functions in mingw-w64 when building as a DLL (#2451). daf838e Renamed macro MN to SRT_EMN, MJ to SRT_EMJ.
646bf2c Remove MSG_TRUNC logging
293a677 Removed unused struct HaveState
96d0c12 Fixed missing reject reason types (logging). (#2436)
8941831 Changed cond notification naming. Added and used new sync utilities. (#2429)
eae2749 Update TSBPD base time and clock drift on an idle connection. (#2408)
e50ccde Applied clang-format on CPacket.
666ee63 Fixed outlen_p value in EVP_AES_EcbCipher (crysprOpenSSL_EVP_AES_EcbCipher).
f0b2003 Minor CSndBuffer edits. (#2430)
fe98265 CCryptoControl: Partially removed dependency on CUDT. (#2424)
5ae3b00 Removed unused struct FByOldestActive.
7f12138 Initialize CRYSPR in startup() (#2425)
1b30573 Remove unused variable
e48f43d Fixed SRT_ASSERT definition for non-MSVC compilers (#2423).
ee398a3 Small refactor of the crysprFallback_MsEncrypt
618db39 Fixed byteRcvLoss
stats
088e27d Create MbedTLS ctx in PBKDF (#2413)
ced76c7 Increased CUnitQueue block allocation speed. Allocates 128 additional units at the start and every time 90% of units are taken. Previously was allocating only 32 units.
a51ec39 Protect CUnit::m_iFlag
from data race using an atomic. Refactored common allocation code CUnitQueue::allocateEntry(..).
b5055db Minor clean-up fix rethrowing an exception.
c3fed9c CRcvQueue
tracks IP version instead of CUnitQueue
830c599 CUnitQueue::increase()
: Do not adjust taken units. The adjustment was intended to patch issues around m_iCount. Those are not present anymore.
cdafca5 Fix sendBroadcast()
message length (#2391).
c5f613e Added OpenSSL EVP API support to HaiCrypt (#2333).
5070037 Cookie contest log msg downgraded to Debug
bb6c493 Rethrow an exception without copying it.
c9e48bd Made CRcvQueue::m_counter
atomic to avoid data race. Used for setting the RcvQueue:: worker thread name for logging.
6a489e1 Fixed suspicious (HCRYPT_CTX_F_ENCRYPT & ctx->flags ? ..).
2de9e6e Explicitly compare with an enum type. Fixes #2374.
61170ad Fixed local variable 'i' hiding previous local declaration. Fixes #2371.
88aab43 Fixed 'false' value implicitly casting to an integer. Handle handling failure of fillHsExtKMRSP(..)
. Fixed some other minor conversion warnings. Fixes #2372.
3ed8bfa Fixed a typo: cypto -> crypto. 086dfe9 Fixed TestIPv6.v6_calls_v4 0153f69 Minor fix for Bonding.CloseGroupAndSocket (#2406). 04407e6 SyncRandom.GenRandomInt: Increase tolerance (#2385)
95d82c4 Only install headers if CMAKE_INSTALL_INCLUDEDIR is available 91a4373 Only install pkg-config files if CMAKE_INSTALL_LIBDIR is available 3709471 Use the default TARGETS installation folder when possible 286b43e Don't force RUNTIME targets in CMAKE_INSTALL_BINDIR 3170590 Install scripts/srt-ffplay in the bin directory ea84103 Always use GNUInstallDirs bb6fede Add variable telling if DESTINATION is needed with install() 6b70452 Add 'ENABLE BONDING' option to Windows PowerShell build script (#2398).
286b3aa Updated the Debian badge in ReadMe 89e11eb Fixed Time Access link in API-functions. 5812e1f Fixed a typo in srt_epoll_uwait
API/ABI version: 1.5.
PR #2316: Renamed ENABLE_EXPERIMENTAL_BONDING
build option to ENABLE_BONDING
. With the Connection Bonding feature disabled, bonding API functions are present, but return an error.
PR #2081: Added the SRTO_GROUPMINSTABLETIMEO
socket option which defines the minimum stability timeout for all the active member sockets in a Main/Backup group.
PR #2312: Deprecated srt_rejectreason_msg[]
. The API function srt_rejectreason_str()
should be used instead.
PR #2271: Fixed missing extern "C"
for the srt_rejectreason_str()
API function.
PR #2152: Use SOCKET
type for any WIN32
environment.
PR #2176: Fixed handshake cookie validation by the listener for rendezvous connections.
While this feature remains disabled by default, you can use the ENABLE_BONDING=ON
build option to activate it.
Similar to SMPTE-2022-7 over managed networks, Connection Bonding adds seamless stream protection and hitless failover to the SRT protocol. This technology relies on more than one IP network path to prevent disruption to live video streams in the event of network congestion or outages, maintaining continuity of service.
This is accomplished using the socket groups introduced in the current release. The general concept of socket groups means having a group that contains multiple sockets, where one operation for sending one data signal is applied to the group. Single sockets inside the group will take over this operation and do what is necessary to deliver the signal to the receiver.
Two modes are supported:
Broadcast - In Broadcast mode, data is sent redundantly over all the member links in a group. If one of the links fails or experiences network jitter and/or packet loss, the missing data will be received over another link in the group. Redundant packets are simply discarded at the receiver side.
Main/Backup - In Main/Backup mode, only one (main) link at a time is used for data transmission while other (backup) connections are on standby to ensure the transmission will continue if the main link fails. The goal of Main/Backup mode is to identify a potential link break before it happens, thus providing a time window within which to seamlessly switch to one of the backup links.
Improvements and bug fixes since v1.4.4:
PR #2260: Use the latest available input rate estimate from the main link for the newly activated backup link when the main one breaks (Main/Backup mode). This improvement is applied when maximum bandwidth is configured to operate in INPUTBW_ESTIMATED
mode.
PR #2316: Added the SRTO_GROUPCONNECT
socket option. When set on a listener socket, the socket is allowed to accept incoming group connections.
PR #2316: Added the SRTO_GROUPTYPE
read-only socket option which returns the group type declared in the incoming connection.
PR #2081: Added the SRTO_GROUPMINSTABLETIMEO
socket option which defines the minimum stability timeout for all active member sockets in a Main/Backup group.
PR #2257: Fixed the loss of initial packets by a group in Message mode with a message consisting of several packets.
PR #2258: Fixed packet sequence number tracking in group sender (Broadcast mode).
PR #2245: Improved group read-readiness update on sending an acknowledgment packet.
PR #1964: Enabled by default with theENABLE_NEW_RCVBUFFER=ON
build option. Note that while it is still possible to fall back to the old receiver buffer implementation, eventually the new implementation will be the only one available.
Improved memory management to better work with shared objects and fixed const-correctness violations to avoid unnecessary object state changes.
It is now possible to read packets from the receiver buffer without waiting for them to be acknowledged. The SRT latency can now be less than the interval of sending acknowledgments of 10 ms. See #1429.
Better handling of sender’s drop requests. The current implementation will mark packets as “dropped by sender”, and when the time comes those packets will be dropped by the TSBPD mechanism at the receiver side.
Out-of-order reading is now supported for the file transmission use case.
In the case of file transmission in message mode, the notification about the readiness of reading a message consisting of several packets is now sent once all the packets forming this message are received and ready to be read.
PR #2185: Operate with either the time when the packets are submitted to the SRT library (on the sender), or the source time, not both. If provided, source time is preferred over submitted time. Previously, submitted time was used by the Too-Late Packet Drop mechanism when dropping a message by TTL and calculating sender buffer timespan statistics (msSndBuf
). If provided, source time was used as a data packet timestamp.
PR #2180: Prioritize sending original packets over retransmissions in live streaming configuration. For file transmission configuration, the order of sending remains the same: retransmitted over original packets.
PR #2232: Fixed issue #713 where the Too-Late Packet Drop mechanism may violate the configured maximum bandwidth, which limits the bandwidth usage by SRT.
PR #2230: Use sender buffer delay (tsNow - tsOldestPacket)
in Too-Late Packet Drop mechanism instead of timespan between the latest submitted packet and the oldest one present at the sender buffer (tsLatestPacket - tsOldestPacket)
.
PR #2068: Drop a message based on Time to Live (TTL) even if it hasn’t been sent. A TTL value, in milliseconds, can be provided when submitting a message to SRT via the srt_sendmsg2(..., msgctrl.msgttl)
function. If the TTL since a message has been submitted to SRT for sending is expired, this message will be discarded even if it hasn’t been sent yet. Previously, a message was always sent (at least once) and TTL affected further retransmissions only.
PR #2229: The code related to forming an original data packet for sending has been moved to a separate function (packUniqueData(..)
).
PRs #2324, #2125, #2301: Resolved symbol name leakage related issues. Placed sender and receiver buffer implementations, CEpoll
, CEPollDesc
, CIPAddress
, CInfoBlock
, CMD5
and other functions under the srt
namespace.
PRs #2241, #2208, #2210: Improved the condition for smoothed RTT recalculation in the case of bidirectional transmission. Fixed the issue introduced in RTT estimation when adding atomic types in PR #1863 (affected version: v1.4.4).
PR #2159: Use Mersenne Twister engine with C++11 instead of std::random_device
. Fixed the probability calculation of getting the maximum value for the default (C++03) rand()
.
PR #1913: Replaced the global CUDTUnited
object with static local one.
PR #2277: Check if CryptoControl
exists in craftKmResponse()
. Fixes crash #2231.
PRs #2291, #2292: Fixed volatile
keyword usage. Prefer the usage of std::atomic
where possible.
PR #2223: Fixed missing m_RcvBufferLock
in processCtrlDropReq()
.
PR #2195: Fixed consistency of packet sequence numbers inserted in CRcvLossList
.
PR #2196: Fixed the issue with CRcvLossList::m_iTail
not being reset to -1
.
PR #2197: Fixed deadlock introduced by CUDTGroup::setOpt()
.
PR #2162: A fix for UDP RCVBUF
and SNDBUF
socket options on Solaris.
PR #2168: Changed the locking order in bstats()
API functions to access statistics.
PR #1950: Fixed the issue with m_GCStopLock
being set up multiple times and never being released.
PR #2148: Support for Android NDK r23 with OpenSSL v3.
PRs #2319, #2325: Fixed building sendfile
and recvfile
examples as they do not require C++11 support.
docs/build
.Kudos to Guangqing Chen and Zhili Zhao for their valuable contributions to this release.
49fb18e2 Fixed ABI compatibility issue with bonding enabled and disabled.
e208d9f0 SRT_SOCKGROUPDATA
typedef closer to the place it is needed in.
64d7f69f SRT version raised to 1.5.0.
c6b95f5e Removed unused srt_group_configure API function.
f82b1313 Dummy bonding API version if ENABLE_BONDING
is disabled.
78b4d65b Drop EXPERIMENTAL
from ENABLE_EXPERIMENTAL_BONDING
042df34f Removed balancing and multicast group types (#2323)
94ff1683 Removed unused srt_include(..)
and srt_exclude(..)
API functions for unimplemented externally managed groups.
1c6e1ce5 Deprecated srt_rejectreason_msg[]
. (#2312)
2fb3c9ab Use the SOCKET
type for any WIN32 environment (#2152)
8d1643e1 Fixed warning on SRT_ATTR_REQUIRES. SAL supports only one argument, added SRT_ATTR_REQUIRES2. 5247d91b Fixed CUDT::packUniqueData return value. Truncation from 'int' to 'bool'. 64846cc7 Fixed build with the old receiver buffer. 7bfdba01 Fixed setting group type on a socket accepted w/o listener callback. 116c554a Have SRT_SocketOptionObject even if bonding is disabled. 990b75a9 Moved bonding API to the end of srt.h 8901838f Moved CWindow inside the srt namespace. 97610630 Moved sockaddr_any inside the srt namespace. 909c8fb7 Moved CCache inside the srt namespace. 3fbb9172 Placed CHandshake inside the srt namespace. 9ba7e647 Moved CEpoll, CUDTException, etc. into the srt namespace 681b3635 Placed CSndLossList and CRcvLossList inside the srt namespace. e9266539 Fixed minor compiler warnings in RCV buffer 9b3e3c15 Fixed ENABLE_HAICRYPT_LOGGING (#2315). 477530ff Drop packets in the new RCV buffer by group RCV base (#2207) 69284ce7 Fixed updating new RCV buffer on ISN change. (#2309) c76f43df fix CRcvBufferNew::m_iStartSeqNo was not sync in group 48d13641 Added explicit to the Scoped and UniqueLock constructors 992d816f Check if CryptoControl exists in craftKmResponse. Fixes crash #2231. 591e320a Clean up the CUDT processConnectRequest(..) function. Update listener write-ready only after the new connection. Was changed in #1650, but must not be done at all (see #1831). 911de75f Fix name conflict with md5 functions (#2301) c0da44ee FixedArray: use a function to throw an exception. 29d56be9 Define an iterator for the srt::FixedArray. 1cd39b9d Show RCV buffer timespan instead of TSBPD ready span. cc62e989 Fixed CRcvBufferNew::strFullnessState(..). Possible null pointer object call after if (m_entries[iLastPos].pUnit). Show the first valid packet instead of the very first position in the buffer. 6c8f0f14 fix volatile in group.h 1f8c1e90 prefer to use std::atomic if available fec9a408 fix m_iLastSchedSeqNo 8f22c964 CSndUList use notify_one() instead of notify_all() af6ff164 Downgrade ACKACK reorder log to Note 1dacc2a5 Remove declaration srt_logger_config again 4c08c3da Move srt_rejectreason_str implementation to srt_c_api a68683a5 haicrypt_log.cpp include its header file f1ec2705 Remove duplicated includes 5bf0cc1b Remove redundant ';' after '}' 8d1a7229 Applied clang-format on api.h and api.cpp. ebbac9aa fix CRcvBufferNew::m_bPeerRexmitFlag. 024e9c07 Fix extraction seq with scheduling seq in group. (#2258) 39754281 fix unrecoverable initial packets lose in group message mode fe5debb8 Source rate estimate: ignore old samples 589d36ea Backup group: derive source rate estimate from an active link on idle member activation daf94c4f Moved source rate estimation logic to CRateEstimator from CSndBuffer a60d98a2 Protect RCV buffer access from socket stats 4b70a638 Group option SRTO_GROUPMINSTABLETIMEO (#2081) f15d300a Fix build for FreeBSD kernel (#2255) 7d77d417 SND Drop Request: ignore if TLPktDrop and TSBPD are enabled to reduce false drops when a packet can still arrive later. It will be dropped anyway as too late. 5adc2db2 RCV don't drop packets on SND drop request if they already exist in the buffer and can be read (full message is available). 81a31da7 Fix RCV drop count when dropping on SND DROP REQ. Extended RCVBUF trace logging. 0c5bf7a8 Decreased SND drop request log level to Debug c885ed15 Group::updateReadState() support out-of-order messages 650dbe6d Fixed rcvDropTooLateUpTo calls. Broken after merging #2218 8f68f613 refactor Group::recv() base on new rcv buffer to support message mode ac854f26 Fixed setting the peer rexmit flag on the RCV buffer 409d3635 Improved the condition for smoothed_rtt recalculation, bidirectional transmission 08e6482f SND prioritize original packets in live configuration ef11d26c SND pacing: amendment on probing packets 912463b9 Fix MaxBW limitation. Don't reschedule sending (keep pacing) on - SND drop, - NAK received - retransmission timeout. 308cd309 Added missing lock to CSndBuffer::readData 5773901b Use SND buffer delay for TL Packet Drop instead of the timespan between the first and the last packet in the buffer. a31e618e Refactoring: added packUniqueData(..) func 85185585 fixed missing m_RcvBufferLock in processCtrlDropReq() 8c05c70d Fix CRcvBufferNew::dropMessage() (#2222) 24bf666d CRcvBufferNew::dropUpTo() able to drop non-empty units (#2221) 31de8aa5 Add CRcvBufferNew::dropUnitInPos(..) (#2226) 8afcdbeb fix m_iMaxPosInc was not updated in releaseNextFillerEntries() 258167de replace ++ with incPos() in getTimespan_ms() 3d26644e Fixed build with the old RCV buffer 1111cbd1 Fixed RCV TL drop of packets dropped by SND (#2214) 5f7bc23f Refactored the core stats structure (#2212). 3558cd0d Fix GC stop handling (#1950) 26678fe2 Fixed the issue with RTT in case of bidirectional transmission introduced when adding atomic types ae787bf2 Fix rtt estimate in bidirectional mode c8cb38fe Fix m_GroupOf->updateReadState() in message mode (#2204) 1d808c15 fix recv_WaitForReadReady() return empty c9a8db75 Fix consistency of packet seqno in CRcvLossList (#2195) 244d2f41 Fix deadlock introduced by CUDTGroup::setOpt() 8b68157d fix CRcvLossList::m_iTail not reset to -1 e5a11795 Fix UDP RCVBUF and SNDBUF on Solaris (#2162). 6ae42c67 Drop msg by TTL even if hasn't ever been sent (#2068) b99e41cc SND buffer: operate either origin or source time, not both. 33c8e492 checkNeedDrop returns the congestion state 5f3cd06c Fixed std::runtime_error usage (use C++03 version instead of C++11) (#2184) e4a1d2b0 Fixed read-ready epoll event in stream (file) mode. Only the new RCV buffer (PR #1964) is affected. ec571a03 Fixed new RCV buffer in stream mode (reading fractional packets) 3c3824fe Removed unused SRT_DEBUG_TSBPD_DRIFT f11b026d fix listener's cookie check (#2176). 276a841d New receiver buffer implementation 3f2945ca Reduced nesting of checkBrokenSockets() c1fdb612 Changed lock order in bstats (#2168) 489c5fc6 Use Mersenne Twister engine with C++11 instead of the std::random_device. Fixed max value probability for the default (C++03) rand(). 86d1eb2d Added CUDT::isRcvReady() with mutex lock. Added CUDT::getAvailRcvBufferSize() function with and without mutex lock. 2031b2c6 Do not set peerAddress in connectIn(..). CUDT::startConnect(..) sets it itself. 790b7831 Small refax of CUDTUnited::channelSettingsMatch(..) 5b0811ca Replaced global CUDTUnited with static local variable (#1913) 0c604c1e Moved SND and RCV buffers into the 'srt' namespace
b8e788a2 Replace volatile with atomic f372356b Use std::random_device in Transmission.FileUpload e0aaa443 Minor improvement of the TestSocketOptions 01ef57a9 Added unit tests for RCV buffer in stream mode 427cecef Receiver buffer tests 8f2d3182 Refactored RCV buffer unit tests (#2170) 6e896399 Fixed async launch TestConnection.Multiple 8bcf30bf More RCV buffer unit tests fa1c3736 Added check for a minimal value of the uniform distribution. ac6ec62a Improved the TestConnection.Multiple test. Using std::array. Try to bind SRT directly instead of UDP. 4f7f9998 Remove duplicated includes
060c0d1a Fix OpenSSL static linking error (#2369). ccb47af4 Fixed building with deprecated ENABLE_EXPERIMENTAL_BONDING dfb9c391 Do not install examples and testing apps 73e2623e Synchronized changes in configure script with CMake (#2353) 4f863eae Added mbedTLS build to Travis CI (#2326) ea6448f0 Added ENABLE_BONDING status message in cmake output. 886843ea Sendfile and recvfile examples don't need C++11. 0b47e6f7 Sendfile and recvfile examples don't need logsupport. c8726ac0 Fixed building examples with C++11 disabled (#2319) 1ddeaec2 build openssl share library without version extesion for android. 277fa583 Travis MinGW job now uses OpenSSL 1.1.1g 2aa90bb2 CMake: fix system library names for MinGW (#2219) d9b79883 Add ShowProjectConfig CMake Module. (#2161) a5b61db5 Fixed missing ws2_32 lib in Windows installer (#2169) 2da63dc2 Add Android build action to GitHub CI (#2149) 15f33d4e Fix build with default configuration for GCC <4.7 (#2160) 6886bfaa Add enable-experimental-bonding opt in configure 73b49feb Support NDK r23, OpenSSL v3 (#2148)
031603f1 Removed calls to non-existing srt_group_configure() function. d618c301 Clean up sendfile and recvfile examples. a77b3ae9 Replace volatile with atomic fb494e4f Remove redundant ';' after '}' 40b51294 Added support for adapter parameter in caller mode (#2202) ce2742b9 Split off stats writer from apputil.cpp (#2130) 1a2aa05c Print SRT version and clock type
e8b713e9 Added Connection Bonding Quick Start documentation
04b7c00b Improved SRT project README
fba72ac4 Minor improvements to Connection Bonding documentation
30bd8271 Fixed SRTO_LINGER default values.
63026dc6 Improved the access control document. (#2358)
f1896012 Improved build and socket options description for v1.5.0 (#2355)
0bbc62d2 srt_bind_acquire requires a not connected UDP socket (#2342)
a58af53b Fixed retransmitalgo naming plus added the link for Medium article.
66692ff4 Added an example for srt_getsockname
API function.
06cfb79f Changed the name from RFC to Internet Draft plus updated the links
9f17bd67 Fixed wrong weight type in SRT_SOCKGROUPCONFIG.
48ead241 Fixed a typo in anchor link (#2329)
45acb746 Updated bonding API functions doc on return errors.
7b2311f6 Added note on versioning (#2311)
f1a64158 Fixed srt_bstats return type description
badf4011 Fixed SRT version in srt-live-transmit.md
9b95ffc3 Reworked the build options document. (#2247)
5b7ac45d srt-live-transmit.md: add ffplay, ffprobe examples (#2242)
cf34d69f Updated options description for srt-live-transmit (#2209)
545700fd Added and updated description of useful test applications (#2191)
API/ABI version: 1.5.
ENABLE_BONDING
build option (instead of ENABLE_EXPERIMENTAL_BONDING
). Dummy bonding API version if disabled (default).srt_rejectreason_msg[]
.SOCKET
type for any WIN32
environment.extern "C"
for API function srt_rejectreason_str(..)
.SRTO_GROUPMINSTABLETIMEO
.srt
namespace).ENABLE_NEW_RCVBUFFER=ON
build option).std::random_device
. Fixed max value probability for the default (C++03) rand()
.CUDTUnited
with static local variable.volatile
keyword usage. Prefer using std::atomic
where possible.sendCtrlAck()
. Group::updateReadState()
support out-of-order messages.processCtrlDropReq()
.CRcvLossList
.CUDTGroup::setOpt()
.CRcvLossList::m_iTail
not reset to -1.RCVBUF
and SNDBUF
socket options on Solaris.bstats(..)
API functions to access statistics.Kudos for valuable contribution in the release to Guangqing Chen, Zhili Zhao.
64d7f69f SRT version raised to 1.5.0.
c6b95f5e Removed unused srt_group_configure API function.
f82b1313 Dummy bonding API version if ENABLE_BONDING
is disabled.
78b4d65b Drop EXPERIMENTAL
from ENABLE_EXPERIMENTAL_BONDING
042df34f Removed balancing and multicast group types (#2323)
94ff1683 Removed unused srt_include(..)
and srt_exclude(..)
API functions for unimplemented externally managed groups.
1c6e1ce5 Deprecated srt_rejectreason_msg[]
. (#2312)
2fb3c9ab Use the SOCKET
type for any WIN32 environment (#2152)
990b75a9 Moved bonding API to the end of srt.h 8901838f Moved CWindow inside the srt namespace. 97610630 Moved sockaddr_any inside the srt namespace. 909c8fb7 Moved CCache inside the srt namespace. 3fbb9172 Placed CHandshake inside the srt namespace. 9ba7e647 Moved CEpoll, CUDTException, etc. into the srt namespace 681b3635 Placed CSndLossList and CRcvLossList inside the srt namespace. e9266539 Fixed minor compiler warnings in RCV buffer 9b3e3c15 Fixed ENABLE_HAICRYPT_LOGGING (#2315). 477530ff Drop packets in the new RCV buffer by group RCV base (#2207) 69284ce7 Fixed updating new RCV buffer on ISN change. (#2309) c76f43df fix CRcvBufferNew::m_iStartSeqNo was not sync in group 48d13641 Added explicit to the Scoped and UniqueLock constructors 992d816f Check if CryptoControl exists in craftKmResponse. Fixes crash #2231. 591e320a Clean up the CUDT processConnectRequest(..) function. Update listener write-ready only after the new connection. Was changed in #1650, but must not be done at all (see #1831). 911de75f Fix name conflict with md5 functions (#2301) c0da44ee FixedArray: use a function to throw an exception. 29d56be9 Define an iterator for the srt::FixedArray. 1cd39b9d Show RCV buffer timespan instead of TSBPD ready span. cc62e989 Fixed CRcvBufferNew::strFullnessState(..). Possible null pointer object call after if (m_entries[iLastPos].pUnit). Show the first valid packet instead of the very first position in the buffer. 6c8f0f14 fix volatile in group.h 1f8c1e90 prefer to use std::atomic if available fec9a408 fix m_iLastSchedSeqNo 8f22c964 CSndUList use notify_one() instead of notify_all() af6ff164 Downgrade ACKACK reorder log to Note 1dacc2a5 Remove declaration srt_logger_config again 4c08c3da Move srt_rejectreason_str implementation to srt_c_api a68683a5 haicrypt_log.cpp include its header file f1ec2705 Remove duplicated includes 5bf0cc1b Remove redundant ';' after '}' 8d1a7229 Applied clang-format on api.h and api.cpp. ebbac9aa fix CRcvBufferNew::m_bPeerRexmitFlag. 024e9c07 Fix extraction seq with scheduling seq in group. (#2258) 39754281 fix unrecoverable initial packets lose in group message mode fe5debb8 Source rate estimate: ignore old samples 589d36ea Backup group: derive source rate estimate from an active link on idle member activation daf94c4f Moved source rate estimation logic to CRateEstimator from CSndBuffer a60d98a2 Protect RCV buffer access from socket stats 4b70a638 Group option SRTO_GROUPMINSTABLETIMEO (#2081) f15d300a Fix build for FreeBSD kernel (#2255) 7d77d417 SND Drop Request: ignore if TLPktDrop and TSBPD are enabled to reduce false drops when a packet can still arrive later. It will be dropped anyway as too late. 5adc2db2 RCV don't drop packets on SND drop request if they already exist in the buffer and can be read (full message is available). 81a31da7 Fix RCV drop count when dropping on SND DROP REQ. Extended RCVBUF trace logging. 0c5bf7a8 Decreased SND drop request log level to Debug c885ed15 Group::updateReadState() support out-of-order messages 650dbe6d Fixed rcvDropTooLateUpTo calls. Broken after merging #2218 8f68f613 refactor Group::recv() base on new rcv buffer to support message mode ac854f26 Fixed setting the peer rexmit flag on the RCV buffer 409d3635 Improved the condition for smoothed_rtt recalculation, bidirectional transmission 08e6482f SND prioritize original packets in live configuration ef11d26c SND pacing: amendment on probing packets 912463b9 Fix MaxBW limitation. Don't reschedule sending (keep pacing) on - SND drop, - NAK received - retransmission timeout. 308cd309 Added missing lock to CSndBuffer::readData 5773901b Use SND buffer delay for TL Packet Drop instead of the timespan between the first and the last packet in the buffer. a31e618e Refactoring: added packUniqueData(..) func 85185585 fixed missing m_RcvBufferLock in processCtrlDropReq() 8c05c70d Fix CRcvBufferNew::dropMessage() (#2222) 24bf666d CRcvBufferNew::dropUpTo() able to drop non-empty units (#2221) 31de8aa5 Add CRcvBufferNew::dropUnitInPos(..) (#2226) 8afcdbeb fix m_iMaxPosInc was not updated in releaseNextFillerEntries() 258167de replace ++ with incPos() in getTimespan_ms() 3d26644e Fixed build with the old RCV buffer 1111cbd1 Fixed RCV TL drop of packets dropped by SND (#2214) 5f7bc23f Refactored the core stats structure (#2212). 3558cd0d Fix GC stop handling (#1950) 26678fe2 Fixed the issue with RTT in case of bidirectional transmission introduced when adding atomic types ae787bf2 Fix rtt estimate in bidirectional mode c8cb38fe Fix m_GroupOf->updateReadState() in message mode (#2204) 1d808c15 fix recv_WaitForReadReady() return empty c9a8db75 Fix consistency of packet seqno in CRcvLossList (#2195) 244d2f41 Fix deadlock introduced by CUDTGroup::setOpt() 8b68157d fix CRcvLossList::m_iTail not reset to -1 e5a11795 Fix UDP RCVBUF and SNDBUF on Solaris (#2162). 6ae42c67 Drop msg by TTL even if hasn't ever been sent (#2068) b99e41cc SND buffer: operate either origin or source time, not both. 33c8e492 checkNeedDrop returns the congestion state 5f3cd06c Fixed std::runtime_error usage (use C++03 version instead of C++11) (#2184) e4a1d2b0 Fixed read-ready epoll event in stream (file) mode. Only the new RCV buffer (PR #1964) is affected. ec571a03 Fixed new RCV buffer in stream mode (reading fractional packets) 3c3824fe Removed unused SRT_DEBUG_TSBPD_DRIFT f11b026d fix listener's cookie check (#2176). 276a841d New receiver buffer implementation 3f2945ca Reduced nesting of checkBrokenSockets() c1fdb612 Changed lock order in bstats (#2168) 489c5fc6 Use Mersenne Twister engine with C++11 instead of the std::random_device. Fixed max value probability for the default (C++03) rand(). 86d1eb2d Added CUDT::isRcvReady() with mutex lock. Added CUDT::getAvailRcvBufferSize() function with and without mutex lock. 2031b2c6 Do not set peerAddress in connectIn(..). CUDT::startConnect(..) sets it itself. 790b7831 Small refax of CUDTUnited::channelSettingsMatch(..) 5b0811ca Replaced global CUDTUnited with static local variable (#1913) 0c604c1e Moved SND and RCV buffers into the 'srt' namespace
b8e788a2 Replace volatile with atomic f372356b Use std::random_device in Transmission.FileUpload e0aaa443 Minor improvement of the TestSocketOptions 01ef57a9 Added unit tests for RCV buffer in stream mode 427cecef Receiver buffer tests 8f2d3182 Refactored RCV buffer unit tests (#2170) 6e896399 Fixed async launch TestConnection.Multiple 8bcf30bf More RCV buffer unit tests fa1c3736 Added check for a minimal value of the uniform distribution. ac6ec62a Improved the TestConnection.Multiple test. Using std::array. Try to bind SRT directly instead of UDP. 4f7f9998 Remove duplicated includes
886843ea Sendfile and recvfile examples don't need C++11. 0b47e6f7 Sendfile and recvfile examples don't need logsupport. c8726ac0 Fixed building examples with C++11 disabled (#2319) 1ddeaec2 build openssl share library without version extesion for android. 277fa583 Travis MinGW job now uses OpenSSL 1.1.1g 2aa90bb2 CMake: fix system library names for MinGW (#2219) d9b79883 Add ShowProjectConfig CMake Module. (#2161) a5b61db5 Fixed missing ws2_32 lib in Windows installer (#2169) 2da63dc2 Add Android build action to GitHub CI (#2149) 15f33d4e Fix build with default configuration for GCC <4.7 (#2160) 6886bfaa Add enable-experimental-bonding opt in configure 73b49feb Support NDK r23, OpenSSL v3 (#2148)
d618c301 Clean up sendfile and recvfile examples. a77b3ae9 Replace volatile with atomic fb494e4f Remove redundant ';' after '}' 40b51294 Added support for adapter parameter in caller mode (#2202) ce2742b9 Split off stats writer from apputil.cpp (#2130) 1a2aa05c Print SRT version and clock type
45acb746 Updated bonding API functions doc on return errors. 7b2311f6 Added note on versioning (#2311) f1a64158 Fixed srt_bstats return type description badf4011 Fixed SRT version in srt-live-transmit.md 9b95ffc3 Reworked the build options document. (#2247) 5b7ac45d srt-live-transmit.md: add ffplay, ffprobe examples (#2242) cf34d69f Updated options description for srt-live-transmit (#2209) 545700fd Added and updated description of useful test applications (#2191)