Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
6326a9b
fix(dtls): ignore timeout before transport starts (#135)
mirsella Jul 23, 2026
a10cd2c
ice: send srflx/prflx checks from the candidate base, not the mapped …
lann Jul 24, 2026
5f9dca5
fix(data_channel): default `ordered` to true, as documented (#140)
yexiyue Jul 29, 2026
a1566b7
fix(data_channel): reject sends the write path cannot carry out (#138)
yexiyue Jul 29, 2026
146b756
fix(dtls): honor disable_certificate_fingerprint_verification (#137)
yexiyue Jul 29, 2026
480f019
making Interceptor object-safe and introduce BoxedInterceptor so that…
rainliu Jul 29, 2026
c654497
add integration tests/rtcp_processing_boxed_interop.rs and examples/r…
rainliu Jul 29, 2026
4acf47b
remove static from trait Interceptor
rainliu Jul 29, 2026
59e02b7
update inline-docs
rainliu Jul 29, 2026
f4fc532
add #![warn(missing_docs)] for rtc sub-crates
rainliu Jul 30, 2026
3067374
fix module level inline doc issue
rainliu Jul 30, 2026
840bcdf
Fix "cargo test --workspace --no-default-features --features aws-lc-r…
rainliu Jul 30, 2026
c62bd44
update test coverage to run packages: --workspace for features: aws-l…
rainliu Jul 30, 2026
039f625
update rkyv = "0.8.17" to avoid potential Security Vulnerabilities
rainliu Jul 30, 2026
444e2c9
Create semver.yml
rainliu Jul 30, 2026
d8365be
Update semver.yml
rainliu Jul 30, 2026
c866c6c
Update semver.yml
rainliu Jul 30, 2026
ffc3dfb
Update semver.yml
rainliu Jul 30, 2026
487d2fc
fix webrtc issue 808: No public API to configure DTLS cipher suites; …
rainliu Jul 31, 2026
ff9af2f
ICE restart after TURN credential rotation re-allocates on the same 5…
rainliu Jul 31, 2026
efc8887
bump version to v0.20.0
rainliu Jul 31, 2026
892ad3b
dd CHANGELOG.md
rainliu Jul 31, 2026
db1aa0a
Add RSA as an allowed private key kind in `rtc_dtls::ConfigBuilder::v…
dominik2m Jul 31, 2026
4d0c507
[Pre-1.0] G1 — Stop advertising ULPFEC by default #837
rainliu Aug 1, 2026
8d331c6
update changelog
rainliu Aug 1, 2026
02d2f9a
[Pre-1.0] G2 — Make the API extensible before freezing it #838 (#142)
rainliu Aug 2, 2026
b47f82f
make v0.20.x branch run github actions
rainliu Aug 2, 2026
9aa477c
make v0.21.x branch run github actions
rainliu Aug 2, 2026
82fda92
P0 — Baseline and design freeze
rainliu Aug 2, 2026
b8bb313
P1 — Build rtc-crypto
rainliu Aug 3, 2026
f8298ce
P2 — Migrate STUN
rainliu Aug 3, 2026
425494c
P3 — Audit ICE and SCTP randomness
rainliu Aug 3, 2026
fd81f68
P4 — Migrate SRTP
rainliu Aug 3, 2026
219788a
P5 — Migrate DTLS
rainliu Aug 3, 2026
927b27d
P6 — Top-level RTC and certificate integration
rainliu Aug 3, 2026
b3062a1
P7 — Cleanup, validation, performance, and migration docs
rainliu Aug 3, 2026
5e73f3c
Merge pull request #143 from webrtc-rs/v0.21.x
rainliu Aug 4, 2026
d8fb818
P8 — Integrate with the async webrtc repository
rainliu Aug 4, 2026
b1f30ea
Merge pull request #144 from webrtc-rs/v0.21.x
rainliu Aug 4, 2026
4121c0c
remove public API crypto_provider from RTCPeerConnection and refactor…
rainliu Aug 4, 2026
b3ac944
optimize dtls/sctp poll_timeout
rainliu Aug 5, 2026
afcc19f
Merge pull request #147 from webrtc-rs/v0.21.x
rainliu Aug 5, 2026
89f518e
sctp: don't discard received-but-undelivered data on incoming stream …
lann Jul 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
186 changes: 182 additions & 4 deletions .github/workflows/cargo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: cargo

on:
push:
branches: [master]
branches: [ master, v0.20.x, v0.21.x ]
pull_request:
branches: [master]
branches: [ master, v0.20.x, v0.21.x ]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -18,15 +18,15 @@ jobs:
name: Build
strategy:
matrix:
os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Build
run: cargo build --verbose

test:
name: Test
name: Test (default backend)
strategy:
matrix:
os: [ 'ubuntu-latest' ] #, 'macos-latest', 'windows-latest' ]
Expand All @@ -36,6 +36,184 @@ jobs:
- name: Run tests
run: cargo test --verbose

crypto_backend_baseline:
name: Crypto baseline (${{ matrix.backend }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
backend: [ crypto-ring, crypto-aws-lc-rs ]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test workspace
run: cargo test --workspace --no-fail-fast --lib --bins --examples --tests --no-default-features --features rtc/${{ matrix.backend }} --verbose
- name: Test workspace documentation
run: cargo test --workspace --doc --no-default-features --features rtc/${{ matrix.backend }} --verbose
- name: Build standalone crypto consumers
shell: bash
run: |
cargo check --package rtc-dtls --no-default-features --features ${{ matrix.backend }} --verbose
cargo check --package rtc-srtp --no-default-features --features ${{ matrix.backend }} --verbose
cargo check --package rtc-stun --no-default-features --features ${{ matrix.backend }} --verbose

rtc_crypto_provider_matrix:
name: rtc-crypto (${{ matrix.name }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: default
args: --features test-support
- name: ring
args: --no-default-features --features crypto-ring,test-support
- name: aws-lc-rs
args: --no-default-features --features crypto-aws-lc-rs,test-support
- name: ring + aws-lc-rs
args: --no-default-features --features crypto-ring,crypto-aws-lc-rs,test-support
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test provider configuration
run: cargo test --package rtc-crypto ${{ matrix.args }} --verbose

rtc_crypto_custom_provider:
name: rtc-crypto (no built-in, custom provider)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Test downstream-style provider
run: cargo test --package rtc-crypto --no-default-features --features test-support --test custom_provider --verbose
- name: Verify publishable package
run: cargo package --package rtc-crypto --no-default-features

workspace_provider_matrix:
name: Workspace (${{ matrix.name }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: default
args: ""
- name: ring only
args: --no-default-features --features crypto-ring
- name: aws-lc-rs only
args: --no-default-features --features crypto-aws-lc-rs
# Both backends in one graph. This was a `compile_error!` before G3; it is now the
# regression guard for Cargo feature additivity, since feature unification can enable
# both from unrelated dependencies.
- name: ring + aws-lc-rs
args: --features crypto-ring,crypto-aws-lc-rs
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
# Compiles the `assert_dyn_compatible` guard in rtc-crypto/src/lib.rs under this feature
# set. `Arc<dyn RTCCryptoProvider>` is load-bearing for the whole design, and object
# safety is lost silently by adding one generic method — possibly behind a feature flag.
- name: Build workspace and dyn-compatibility guard
run: cargo build --workspace --all-targets ${{ matrix.args }} --verbose
- name: Test workspace
run: cargo test --workspace --no-fail-fast ${{ matrix.args }} --verbose
- name: Doctests
run: cargo test --workspace --doc ${{ matrix.args }} --verbose

standalone_crate_checks:
name: Standalone crates (${{ matrix.backend }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
backend: [ crypto-ring, crypto-aws-lc-rs ]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
# Crates that forward provider features must build on their own, not only as part of the
# workspace, since standalone protocol users are a supported audience.
- name: Check provider-forwarding crates
run: |
cargo check --package rtc-crypto --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
cargo check --package rtc-dtls --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
cargo check --package rtc-srtp --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
cargo check --package rtc-stun --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
cargo check --package rtc-ice --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
cargo check --package rtc-turn --no-default-features --features ${{ matrix.backend }} --all-targets --verbose
# These perform no cryptography and must not have acquired a provider dependency.
- name: Check crates that must stay crypto-free
run: |
cargo check --package rtc-shared --all-targets --verbose
cargo check --package rtc-sctp --all-targets --verbose
cargo check --package rtc-rtp --all-targets --verbose
cargo check --package rtc-rtcp --all-targets --verbose
cargo check --package rtc-sdp --all-targets --verbose
cargo check --package rtc-media --all-targets --verbose

crypto_dependency_audit:
name: Crypto dependency boundary
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Enforces the G3 invariant: rtc-crypto is the only crate naming a crypto implementation.
# The script parses dependency sections so that provider-feature forwarding
# (`ring = ["crypto/ring"]`) and the root `[workspace.dependencies]` table are not
# mistaken for real dependencies.
- name: No crypto implementation outside rtc-crypto
run: python3 scripts/check-crypto-boundary.py
- name: No mutually exclusive backend guards
run: |
if grep -rn 'At most one of the features' --include='*.rs' . ; then
echo "A mutually exclusive backend compile_error! guard is still present."
exit 1
fi
- name: No backend-name aliasing
run: |
if grep -rn 'extern crate aws_lc_rs as ring' --include='*.rs' . ; then
echo "The aws-lc-rs-as-ring alias is still present."
exit 1
fi

package_publication_order:
name: cargo package (publication order)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
# rtc-crypto is new in this release and has no intra-workspace dependencies, so it is the
# first crate in publication order and the only one whose packaging can be verified from
# a clean checkout today.
- name: Package rtc-crypto first
run: cargo package --package rtc-crypto --allow-dirty
- name: Package crates with no rtc-crypto dependency
run: cargo package --package rtc-shared --allow-dirty
# Crates depending on rtc-crypto cannot be packaged until rtc-crypto 0.21.0 exists on
# crates.io: `cargo package` resolves the dependency graph against the registry and the
# path dependency is stripped from the published manifest. This is expected for a newly
# introduced crate, not a regression. This step asserts the failure is exactly that
# missing-version resolution error and nothing else, so a different packaging break is
# still caught.
- name: Confirm dependents block only on rtc-crypto publication
run: |
if cargo package --package rtc-stun --allow-dirty 2>package.log; then
echo "rtc-stun packaged; rtc-crypto appears to be published."
echo "Replace this step with a normal packaging check."
exit 0
fi
if grep -q 'failed to select a version for the requirement `rtc-crypto' package.log; then
echo "Expected: rtc-stun awaits the first rtc-crypto publish."
exit 0
fi
echo "rtc-stun packaging failed for an unexpected reason:"
cat package.log
exit 1

rustfmt_and_clippy:
name: Check rustfmt style && run clippy
runs-on: ubuntu-latest
Expand Down
14 changes: 5 additions & 9 deletions .github/workflows/grcov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: coverage

on:
push:
branches: [ master ]
branches: [ master, v0.20.x, v0.21.x ]
pull_request:
branches: [ master ]
branches: [ master, v0.20.x, v0.21.x ]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -26,13 +26,9 @@ jobs:
- nightly
crypto:
- name: ring
features: rtc/ring
packages: --workspace
test_args: ""
features: crypto-ring
- name: aws-lc-rs
features: aws-lc-rs
packages: --package rtc
test_args: --lib
features: crypto-aws-lc-rs
steps:
- name: Checkout source code
uses: actions/checkout@v4
Expand All @@ -49,7 +45,7 @@ jobs:
tool: grcov

- name: Test
run: cargo test ${{ matrix.crypto.packages }} --no-fail-fast --no-default-features --features ${{ matrix.crypto.features }} ${{ matrix.crypto.test_args }}
run: cargo test --workspace --no-fail-fast --no-default-features --features ${{ matrix.crypto.features }}
env:
CARGO_INCREMENTAL: "0"
RUSTFLAGS: "-Cinstrument-coverage"
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/semver.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: SemVer Check

on:
push:
branches: [ master, v0.20.x, v0.21.x ]
pull_request:
branches: [ master, v0.20.x, v0.21.x ]

jobs:
semver:
name: Check SemVer
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry and build artifacts
uses: Swatinem/rust-cache@v2

- name: Install cargo-semver-checks
run: cargo install cargo-semver-checks --locked

- name: Run cargo-semver-checks
run: cargo semver-checks --workspace --default-features
Loading
Loading