Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6140e3b
[core] Added the virtual transport seam behind CChannel
maxolgi Oct 12, 2026
026d05c
[core] Added SRTO_SKIP_INDUCTION: Conclusion-first handshakes over vi…
maxolgi Oct 12, 2026
daeb922
[core] Added SRTO_INITIAL_RTT option (RTT estimator seed)
maxolgi Oct 12, 2026
81ff070
[tests] Added the virtual transport test suite
maxolgi Oct 17, 2026
e88fe27
[build] Added the virtual transport option to the configure wrapper
maxolgi Oct 16, 2026
25316fc
[CI] Added Linux workflow for the virtual transport build
maxolgi Oct 16, 2026
d98844a
[docs] Documented the virtual transport options, API and build support
maxolgi Oct 16, 2026
d8b6a74
[core] Fixed the false BROKEN status window in postConnect
maxolgi Oct 17, 2026
318620d
[core] Locked the receiver loss-list reads in the LOSSREPORT sender
maxolgi Oct 18, 2026
44e7722
[core] Guarded the buffer publication against the GC scan
maxolgi Oct 18, 2026
0413698
[core] Demoted the empty-readMessage warning to debug
maxolgi Oct 18, 2026
3eb9256
[maint] Renamed WebSRT to QuicSRT
maxolgi Oct 18, 2026
9b864f6
[core] Made the virtual transport API symbols unconditional
maxolgi Oct 31, 2026
dc8e9d0
[tests] Added stock-build rejection tests for the virtual transport API
maxolgi Oct 31, 2026
9f09a8a
[docs] Updated the virtual transport docs for unconditional API symbols
maxolgi Oct 31, 2026
40feead
[build] Dropped the fork branch from the virtual transport CI triggers
maxolgi Oct 31, 2026
dc2ad7f
[core] Removed product and fork names from the code comments
maxolgi Oct 31, 2026
49bc818
[core] Formatted the new virtual transport sources per clang-format
maxolgi Oct 31, 2026
b6b64d0
[tests] Renamed the warm-up local to satisfy codespell
maxolgi Oct 31, 2026
a8fde60
[tests] Dropped the POSIX-only include from the stock VT test
maxolgi Oct 31, 2026
aa42239
[core] Clarified the virtual transport option comments in the enum
maxolgi Oct 31, 2026
5b220f6
[core] Corrected comments flagged in review
maxolgi Oct 31, 2026
d58a777
[core] Covered the CLOSE_SYNCH send-buffer wait under the buffer lock
maxolgi Oct 31, 2026
5d34194
[docs] Completed the virtual transport docs from review findings
maxolgi Oct 31, 2026
4a82104
[build] Defaulted the C++ standard to 11 when the virtual transport i…
maxolgi Oct 31, 2026
d134123
[build] Aligned the virtual transport CI with the shared workflow scr…
maxolgi Oct 31, 2026
fbf3599
[tests] Used inet_pton in the stock VT test
maxolgi Oct 31, 2026
5b273e5
[tests] Pinned the conclusion-first handshake on the wire
maxolgi Oct 31, 2026
6ee8903
[core] Fixed the one-past-the-end vector access in the VT receive path
maxolgi Oct 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/ubuntu-virtual-transport.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Linux Virtual Transport

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
name: C++11 virtual transport
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Prepare
run: ./scripts/workflows/build/ubuntu-prepare-environment.sh
- name: Configure
# The stock Linux C++11 workflow builds with ENABLE_VIRTUAL_TRANSPORT=OFF,
# so the gate-ON code paths are exercised only here.
run: ./scripts/workflows/build/configure.sh _build -std 11 -sync std -ut on -bonding on -testing on -examples on -debug on -werror on -- -DENABLE_VIRTUAL_TRANSPORT=ON
- name: Build
run: ./scripts/workflows/build/build.sh _build
- name: Test
run: ./scripts/workflows/build/test.sh _build
68 changes: 45 additions & 23 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ option(ENABLE_SOCK_CLOEXEC "Enable setting SOCK_CLOEXEC on a socket" ON)
option(ENABLE_SHOW_PROJECT_CONFIG "Enable show Project Configuration" OFF)

option(ENABLE_CLANG_TSA "Enable Clang Thread Safety Analysis" OFF)
option(ENABLE_VIRTUAL_TRANSPORT "Enable the virtual transport seam: sockets exchanging datagrams through an owner-supplied transport instead of an OS UDP socket (Linux and Emscripten)" OFF)

if (DEFINED OPENSSL_USE_STATIC_LIBS AND "${OPENSSL_USE_STATIC_LIBS}" STREQUAL "ON")
message(WARNING "Use of OPENSSL_USE_STATIC_LIBS as SRT build option here is deprecated.
Expand Down Expand Up @@ -557,6 +558,47 @@ else()
message(STATUS "ENCRYPTION AEAD API: N/A")
endif()

function (srt_check_cxxstd stdval OUT_STD OUT_PFX)

set (STDPFX c++)
if (stdval MATCHES "([^+]+\\++)([0-9]*)")
set (STDPFX ${CMAKE_MATCH_1})
set (STDCXX ${CMAKE_MATCH_2})
elseif (stdval MATCHES "[0-9]*")
set (STDCXX ${stdval})
else()
set (STDCXX 0)
endif()

# Handle C++98 < C++11
# Please fix this around 2070 year.
if (${STDCXX} GREATER 80)
set (STDCXX 03)
endif()

# return
set (${OUT_STD} ${STDCXX} PARENT_SCOPE)
set (${OUT_PFX} ${STDPFX} PARENT_SCOPE)
endfunction()

if (ENABLE_VIRTUAL_TRANSPORT)
if (NOT LINUX AND NOT EMSCRIPTEN)
message(FATAL_ERROR "ENABLE_VIRTUAL_TRANSPORT is only supported on Linux and Emscripten.")
endif()
if (DEFINED USE_CXX_STD)
srt_check_cxxstd(${USE_CXX_STD} STDCXX STDPFX)
if (${STDCXX} LESS 11)
message(FATAL_ERROR "If ENABLE_VIRTUAL_TRANSPORT, then USE_CXX_STD must specify at least C++11")
endif()
else()
set (USE_CXX_STD 11)
endif()
add_definitions(-DSRT_ENABLE_VIRTUAL_TRANSPORT)
message(STATUS "VIRTUAL TRANSPORT: ENABLED")
else()
message(STATUS "VIRTUAL TRANSPORT: DISABLED")
endif()

if (USE_GNUSTL)
pkg_check_modules (GNUSTL REQUIRED gnustl)
link_directories(${GNUSTL_LIBRARY_DIRS})
Expand Down Expand Up @@ -632,29 +674,6 @@ else()
set (ENABLE_CXX11 1)
endif()

function (srt_check_cxxstd stdval OUT_STD OUT_PFX)

set (STDPFX c++)
if (stdval MATCHES "([^+]+\\++)([0-9]*)")
set (STDPFX ${CMAKE_MATCH_1})
set (STDCXX ${CMAKE_MATCH_2})
elseif (stdval MATCHES "[0-9]*")
set (STDCXX ${stdval})
else()
set (STDCXX 0)
endif()

# Handle C++98 < C++11
# Please fix this around 2070 year.
if (${STDCXX} GREATER 80)
set (STDCXX 03)
endif()

# return
set (${OUT_STD} ${STDCXX} PARENT_SCOPE)
set (${OUT_PFX} ${STDPFX} PARENT_SCOPE)
endfunction()

if (NOT ENABLE_CXX11)
message(WARNING "Parts that require C++11 support will be disabled (srt-live-transmit)")
if (ENABLE_STDCXX_SYNC)
Expand Down Expand Up @@ -808,6 +827,9 @@ elseif(DARWIN)
elseif(BSD)
message(STATUS "DETECTED SYSTEM: BSD; BSD=1")
add_definitions(-DBSD=1)
elseif(EMSCRIPTEN)
add_definitions(-DLINUX=1)
message(STATUS "DETECTED SYSTEM: EMSCRIPTEN; LINUX=1 (preprocessor only: Emscripten's musl-libc compiles the Linux code paths, but the CMake LINUX variable stays unset so Linux-only extras like -lrt and BINDTODEVICE stay off)")
elseif(LINUX)
add_definitions(-DLINUX=1)
message(STATUS "DETECTED SYSTEM: LINUX; LINUX=1" )
Expand Down
1 change: 1 addition & 0 deletions configure-data.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ set cmake_options {
enable-thread-check "Enable #include <threadcheck.h> that implements THREAD_* macros"
enable-unittests-discovery "Enable UT Discovery (will run when building) (default: ON)"
enable-unittests "Enable Unit Tests (will download Google UT) (default: OFF)"
enable-virtual-transport "Enable the virtual transport seam: sockets exchanging datagrams through an owner-supplied transport instead of an OS UDP socket (Linux and Emscripten) (default: OFF)"
openssl-crypto-library=<filepath> "OpenSSL: Path to a libcrypto library."
openssl-include-dir=<path> "OpenSSL: Path to includes."
openssl-ssl-library=<filepath> "OpenSSL: Path to a libssl library."
Expand Down
Loading