Skip to content

fix parsing transmission 3.00 fingerprint #5882

fix parsing transmission 3.00 fingerprint

fix parsing transmission 3.00 fingerprint #5882

Workflow file for this run

name: Linux
on:
push:
branches: [ RC_2_1, master ]
pull_request:
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}
cancel-in-progress: true
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 2
filter: tree:0
- uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: install clang-format-18
timeout-minutes: 5
run: sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-format-18
- uses: j178/prek-action@v2
- name: clang-format check (changed lines vs PR base)
if: github.event_name == 'pull_request'
run: git-clang-format-18 --binary clang-format-18 --diff HEAD^1
build:
name: build
runs-on: ${{ matrix.std.os }}
strategy:
matrix:
std:
- { version: 17, os: ubuntu-22.04 }
- { version: 20, os: ubuntu-22.04 }
- { version: 23, os: ubuntu-24.04 }
- { version: 26, os: ubuntu-24.04 }
config:
- webtorrent=off asio-debugging=on picker-debugging=on
- webtorrent=off extensions=off logging=off streaming=off super-seeding=off share-mode=off predictive-pieces=off dht=off alert-msg=off encryption=off mutable-torrents=off deprecated-functions=off
- webtorrent=off crypto=gcrypt
- webtorrent=off mmap-disk-io=off
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: true
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-build-${{ github.base_ref || github.ref_name }}-${{ matrix.std.version }}-${{ matrix.config }}
ccache_options: |
max_size=5G
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-python-dev libboost-tools-dev libboost-dev libboost-system-dev python3
- name: configure toolchain
run: |
if [ "${{ matrix.std.version }}" = "23" ] || [ "${{ matrix.std.version }}" = "26" ]; then
# gcc-14 (needed for -std=c++26) is preinstalled on the noble runner
echo "using gcc : : g++-14 ;" >>~/user-config.jam
else
echo "using gcc ;" >>~/user-config.jam
fi
- name: install gcrypt
if: ${{ contains(matrix.config, 'crypto=gcrypt') }}
run: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libgcrypt20-dev
- name: build library
run: |
b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on
- name: build examples
run: |
cd examples
b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on
- name: build tools
run: |
cd tools
b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on
- name: build python bindings
run: |
cd bindings/python
echo "using python ;" >>~/user-config.jam
BOOST_ROOT="" b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on
cmake:
name: cmake
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-cmake-${{ github.base_ref }}
ccache_options: |
max_size=5G
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev ninja-build
pip install websockets
- name: cmake configure
env:
# required by deps/libdatachannel's own deps (usrsctp, plog), which
# declare cmake_minimum_required versions older than modern cmake allows
CMAKE_POLICY_VERSION_MINIMUM: 3.5
run: |
cmake -B build-cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -Dbuild_tests=ON -Dbuild_examples=ON -Dbuild_tools=ON -Dwebtorrent=on -Dasserts=on -DCMAKE_CXX_STANDARD=17
- name: cmake build
run: cmake --build build-cmake
- name: ctest
run: |
cd build-cmake
ctest --output-on-failure
- name: cmake install (installed headers are self-sufficient)
run: |
cmake --install build-cmake --prefix "$PWD/install-test"
./tools/check_installed_headers.py "$PWD/install-test"
fuzzers:
name: Fuzzers
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-fuzzers-${{ github.base_ref }}
ccache_options: |
max_size=500M
- name: install clang-15
continue-on-error: true
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-15
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev
echo "using clang : 15 : clang++-15 ;" >>~/user-config.jam
- name: build fuzzers
run: |
cd fuzzers
b2 clang deprecated-functions=on,off warnings-as-errors=on
check_headers:
name: check headers
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-check-headers-${{ github.base_ref }}
ccache_options: |
max_size=500M
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev
echo "using gcc ;" >>~/user-config.jam
- name: compile header files individually
run: |
b2 check-headers warnings-as-errors=on
test:
name: Tests
runs-on: ubuntu-24.04
strategy:
matrix:
include:
- config: webtorrent=on address-sanitizer=norecover undefined-sanitizer=norecover crypto=openssl invariant-checks=on
- config: toolset=clang logging=off address-sanitizer=norecover undefined-sanitizer=norecover invariant-checks=on
# thread-sanitizer is left off webtorrent: libdatachannel's third-party
# deps (usrsctp, libjuice) are multi-threaded and not vetted against TSan,
# which would make this job noisy/flaky for reasons outside our control
- config: webtorrent=off thread-sanitizer=norecover crypto=openssl release debug-symbols=on cxxflags=-Wno-tsan
- config: crypto=gnutls invariant-checks=full
- config: deprecated-functions=off invariant-checks=full
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-tests-${{ matrix.config }}-${{ github.base_ref }}
ccache_options: |
max_size=5G
- name: install gnutls
if: ${{ contains(matrix.config, 'crypto=gnutls') }}
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libgnutls28-dev
- name: install boost.json
if: ${{ !contains(matrix.config, 'webtorrent=off') }}
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-json-dev
- name: install clang-16
continue-on-error: true
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-16
- name: install GCC-14
continue-on-error: true
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-14
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev
pip install websockets
echo "using gcc : 14 : g++-14 ;" >>~/user-config.jam
echo "using clang : 16 : clang++-16 ;" >>~/user-config.jam
- name: build and run tests
env:
LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions
run: |
cd test
b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on deterministic-tests
b2 ${{ matrix.config }} -l500 testing.execute=off warnings-as-errors=on debug-iterators=on asserts=on test_lsd test_hasher test_hasher512 test_natpmp enum_if
b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on simulate-slow=hash test_slow_hash
b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on simulate-slow=write test_disk_io
- name: run tests (flaky)
env:
LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions
uses: nick-fields/retry@v4
with:
timeout_minutes: 90
retry_wait_seconds: 4
max_attempts: 3
command: (cd test; b2 ${{ matrix.config }} -l1800 warnings-as-errors=on debug-iterators=on asserts=on)
test-32bit:
name: Tests (32-bit)
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-tests-32bit-${{ github.base_ref }}
ccache_options: |
max_size=5G
- name: install 32-bit toolchain
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y g++-multilib
- name: install boost from source
run: |
wget -nv -O boost.tar.gz https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz
tar xzf boost.tar.gz
mv boost_1_86_0 boost
cd boost
./bootstrap.sh
./b2 headers
- name: configure user-config.jam
run: echo "using gcc ;" >>~/user-config.jam
- name: build and run tests (32-bit)
env:
BOOST_ROOT: ${{ github.workspace }}/boost
BOOST_BUILD_PATH: ${{ github.workspace }}/boost/tools/build
run: |
cd test
${BOOST_ROOT}/b2 address-model=32 architecture=x86 -l500 \
crypto=built-in warnings-as-errors=on debug-iterators=on asserts=on \
webtorrent=off deterministic-tests
sim:
name: Simulations
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: true
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-simulations-${{ github.base_ref }}
ccache_options: |
max_size=5G
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev
echo "using gcc ;" >>~/user-config.jam
- name: build and run simulations
run: |
cd simulation
b2 debug-iterators=on invariant-checks=full asserts=on picker-debugging=on
- name: build simulations no deprecated
run: |
cd simulation
b2 testing.execute=off deprecated-functions=off
disk-stress:
name: disk I/O stress (smoke)
runs-on: ubuntu-24.04
strategy:
matrix:
config:
- webtorrent=off release asserts=on debug-iterators=on
- webtorrent=off release asserts=on debug-iterators=on address-sanitizer=norecover undefined-sanitizer=norecover crypto=openssl
- webtorrent=off release asserts=on debug-iterators=on thread-sanitizer=norecover crypto=openssl debug-symbols=on cxxflags=-Wno-tsan
steps:
- name: checkout
uses: actions/checkout@v6
with:
submodules: true
fetch-depth: 1
filter: tree:0
- name: update package lists
continue-on-error: true
timeout-minutes: 5
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update
- uses: Chocobo1/setup-ccache-action@v1
with:
update_packager_index: false
override_cache_key: ccache-linux-disk-stress-${{ matrix.config }}-${{ github.base_ref }}
ccache_options: |
max_size=5G
- name: install boost
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev
echo "using gcc ;" >>~/user-config.jam
- name: build disk_io_stress_test
run: |
cd tools
b2 ${{ matrix.config }} warnings-as-errors=on stage
- name: run smoke suite
env:
LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions
run: |
cd tools
./disk_io_stress_test smoke