Squashed 'external/toxcore/c-toxcore/' changes from 1828c5356..c9cdae001

c9cdae001 fix(toxav): remove extra copy of video frame on encode
4f6d4546b test: Improve the fake network library.
a2581e700 refactor(toxcore): generate `Friend_Request` and `Dht_Nodes_Response`
2aaa11770 refactor(toxcore): use Tox_Memory in generated events
5c367452b test(toxcore): fix incorrect mutex in tox_scenario_get_time
8f92e710f perf: Add a timed limit of number of cookie requests.
695b6417a test: Add some more simulated network support.
815ae9ce9 test(toxcore): fix thread-safety in scenario framework
6d85c754e test(toxcore): add unit tests for net_crypto
9c22e79cc test(support): add SimulatedEnvironment for deterministic testing
f34fcb195 chore: Update windows Dockerfile to debian stable (trixie).
ece0e8980 fix(group_moderation): allow validating unsorted sanction list signatures
a4fa754d7 refactor: rename struct Packet to struct Net_Packet
d6f330f85 cleanup: Fix some warnings from coverity.
e206bffa2 fix(group_chats): fix sync packets reverting topics
0e4715598 test: Add new scenario testing framework.
668291f44 refactor(toxcore): decouple Network_Funcs from sockaddr via IP_Port
fc4396cef fix: potential division by zero in toxav and unsafe hex parsing
8e8b352ab refactor: Add nullable annotations to struct members.
7740bb421 refactor: decouple net_crypto from DHT
1936d4296 test: add benchmark for toxav audio and video
46bfdc2df fix: correct printf format specifiers for unsigned integers
REVERT: 1828c5356 fix(toxav): remove extra copy of video frame on encode

git-subtree-dir: external/toxcore/c-toxcore
git-subtree-split: c9cdae001341e701fca980c9bb9febfeb95d2902
This commit is contained in:
Green Sky
2026-01-11 14:42:31 +01:00
parent e95f2cbb1c
commit 565efa4f39
328 changed files with 19057 additions and 13982 deletions

View File

@@ -4,11 +4,16 @@ CPPFLAGS="-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE"
CPPFLAGS+=("-DCMP_NO_FLOAT=1")
CPPFLAGS+=("-isystem" "/usr/include/opus")
CPPFLAGS+=("-Iauto_tests")
CPPFLAGS+=("-Iauto_tests/scenarios")
CPPFLAGS+=("-Iauto_tests/scenarios/framework")
CPPFLAGS+=("-Iother")
CPPFLAGS+=("-Iother/bootstrap_daemon/src")
CPPFLAGS+=("-Iother/fun")
CPPFLAGS+=("-Itesting")
CPPFLAGS+=("-Itesting/fuzzing")
CPPFLAGS+=("-Itesting/support")
CPPFLAGS+=("-Itesting/support/doubles")
CPPFLAGS+=("-Itesting/support/public")
CPPFLAGS+=("-Itoxcore")
CPPFLAGS+=("-Itoxcore/events")
CPPFLAGS+=("-Itoxav")
@@ -49,29 +54,44 @@ callmain() {
# Include all C and C++ code
FIND_QUERY="find . '-(' -name '*.c' -or -name '*.cc' '-)'"
# Excludes
FIND_QUERY="$FIND_QUERY -and -not -wholename './_build/*'"
FIND_QUERY="$FIND_QUERY -and -not -wholename './other/docker/*'"
FIND_QUERY="$FIND_QUERY -and -not -wholename './super_donators/*'"
FIND_QUERY="$FIND_QUERY -and -not -name amalgamation.cc"
FIND_QUERY="$FIND_QUERY -and -not -name av_test.c"
FIND_QUERY="$FIND_QUERY -and -not -name cracker.c"
FIND_QUERY="$FIND_QUERY -and -not -name version_test.c"
FIND_QUERY="$FIND_QUERY -and -not -name '*_fuzz_test.cc'"
FIND_QUERY="$FIND_QUERY -and -not -wholename './testing/fuzzing/*'"
FIND_QUERY="$FIND_QUERY -and -not -wholename './third_party/cmp/examples/*'"
FIND_QUERY="$FIND_QUERY -and -not -wholename './third_party/cmp/test/*'"
HEADER_QUERY="find . '-(' -name '*.h' -or -name '*.hh' '-)'"
if [ "$SKIP_GTEST" == 1 ]; then
FIND_QUERY="$FIND_QUERY -and -not -name '*_test.cc'"
COMMON_EXCLUDES=""
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './_build/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './other/docker/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './super_donators/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './testing/fuzzing/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './third_party/cmp/examples/*'"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -wholename './third_party/cmp/test/*'"
# File name excludes
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name amalgamation.cc"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name av_test.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name cracker.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name version_test.c"
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_fuzz_test.cc'"
if [ "$SKIP_BENCHMARK" == 1 ]; then
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_bench.cc'"
fi
readarray -t FILES <<<"$(eval "$FIND_QUERY")"
if [ "$SKIP_GTEST" == 1 ]; then
COMMON_EXCLUDES="$COMMON_EXCLUDES -and -not -name '*_test.cc'"
fi
(for i in "${FILES[@]}"; do
FIND_QUERY="$FIND_QUERY $COMMON_EXCLUDES"
HEADER_QUERY="$HEADER_QUERY $COMMON_EXCLUDES"
readarray -t FILES <<<"$(eval "$FIND_QUERY")"
readarray -t HEADERS <<<"$(eval "$HEADER_QUERY")"
INCLUDES=$(for i in "${FILES[@]}" "${HEADERS[@]}"; do
grep -o '#include <[^>]*>' "$i" |
grep -E -v '<win|<ws|<iphlp|<libc|<mach/|<crypto_|<randombytes|<u.h>|<sys/filio|<stropts.h>|<linux'
done) | sort -u >>amalgamation.cc
done | sort -u)
echo "$INCLUDES" | grep "<memory>" >>amalgamation.cc
echo "$INCLUDES" | grep -v "<memory>" >>amalgamation.cc
put auto_tests/check_compat.h

View File

@@ -36,7 +36,13 @@ run() {
-Wno-unreachable-code-return \
-Wno-unsafe-buffer-usage \
-Wno-unused-parameter \
-Wno-used-but-marked-unused
-Wno-used-but-marked-unused \
-Wno-unneeded-member-function \
-Wno-unused-function \
-Wno-unused-member-function \
-Wno-unused-parameter \
-Wno-unused-template
# TODO(iphydf): Remove these last 5 when the test framework matures.
}
. other/analysis/variants.sh

View File

@@ -9,7 +9,30 @@ run() {
clang++ --analyze amalgamation.cc \
"${CPPFLAGS[@]}" \
"$@" \
-std=c++20
-std=c++20 &
local pid=$!
local start_time="$(date +%s)"
local last_update="$start_time"
local timeout=$((30 * 60))
local interval=$((5 * 60))
while kill -0 "$pid" 2>/dev/null; do
local current_time="$(date +%s)"
if ((current_time - start_time > timeout)); then
echo "Timeout reached. Killing process."
kill -9 "$pid"
wait "$pid"
return 1
fi
if ((current_time - last_update > interval)); then
echo "Still running..."
last_update=$current_time
fi
sleep 1
done
wait "$pid"
}
. other/analysis/variants.sh

View File

@@ -16,8 +16,7 @@ CHECKS="$CHECKS,-clang-analyzer-nullability.NullPassedToNonnull"
# =========================================================
# TODO(iphydf): Fix these.
ERRORS="$ERRORS,-cert-err34-c"
ERRORS="$ERRORS,-readability-suspicious-call-argument"
CHECKS="$CHECKS,-readability-suspicious-call-argument"
CHECKS="$CHECKS,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto"
CHECKS="$CHECKS,-bugprone-incorrect-roundings"
@@ -193,12 +192,15 @@ CHECKS="$CHECKS,-cppcoreguidelines-macro-usage"
# These are all very C++ and/or LLVM specific.
CHECKS="$CHECKS,-llvmlibc-*"
# We use unions in C, and can't use std::variant or boost::variant.
CHECKS="$CHECKS,-cppcoreguidelines-pro-type-union-access"
set -eux
# TODO(iphydf): Add toxav.
DIRS=(
other/bootstrap_daemon/src
other
toxav
toxcore
toxcore/events
toxencryptsave

View File

@@ -1,6 +1,7 @@
#!/bin/bash
SKIP_GTEST=1
SKIP_BENCHMARK=1
. other/analysis/gen-file.sh
@@ -14,8 +15,6 @@ CPPCHECK+=("--library=other/docker/cppcheck/toxcore.cfg")
CPPCHECK+=("--error-exitcode=1")
# Some files don't match all our suppressions below.
CPPCHECK+=("--suppress=unmatchedSuppression")
# We don't cast function pointers, which cppcheck suggests here.
CPPCHECK+=("--suppress=constParameterCallback")
# This disagrees with clang's warnings.
CPPCHECK+=("--suppress=invalidPrintfArgType_uint")
# False positives in switch statements.
@@ -24,8 +23,11 @@ CPPCHECK+=("--suppress=knownConditionTrueFalse")
CPPCHECK+=("--suppress=missingIncludeSystem")
# TODO(iphydf): Maybe fix?
CPPCHECK+=("--suppress=signConversion")
# We have suppressions in the code for the misra extension.
CPPCHECK+=("--suppress=unmatchedSuppression")
# These const correctness checks are very broken for C.
CPPCHECK+=("--suppress=constParameter")
CPPCHECK+=("--suppress=constParameterCallback")
CPPCHECK+=("--suppress=constParameterPointer")
CPPCHECK+=("--suppress=constVariablePointer")
# We use this for VLAs.
CPPCHECK_CXX+=("--suppress=allocaCalled")

View File

@@ -65,7 +65,9 @@ run() {
-Wunused-value \
-Wunused-but-set-parameter \
-Wunused-but-set-variable \
-fopenmp
-fopenmp \
-Wno-unused-function
# TODO(iphydf): Remove this last 1 when the test framework matures.
}
. other/analysis/variants.sh