fix(audio): reject false-positive uac sanity runs

This commit is contained in:
Brad Stein 2026-04-24 21:49:29 -03:00
parent 74e664a28a
commit 49c25bbf21
5 changed files with 19 additions and 7 deletions

6
Cargo.lock generated
View File

@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lesavka_client"
version = "0.13.8"
version = "0.13.9"
dependencies = [
"anyhow",
"async-stream",
@ -1676,7 +1676,7 @@ dependencies = [
[[package]]
name = "lesavka_common"
version = "0.13.8"
version = "0.13.9"
dependencies = [
"anyhow",
"base64",
@ -1688,7 +1688,7 @@ dependencies = [
[[package]]
name = "lesavka_server"
version = "0.13.8"
version = "0.13.9"
dependencies = [
"anyhow",
"base64",

View File

@ -4,7 +4,7 @@ path = "src/main.rs"
[package]
name = "lesavka_client"
version = "0.13.8"
version = "0.13.9"
edition = "2024"
[dependencies]

View File

@ -1,6 +1,6 @@
[package]
name = "lesavka_common"
version = "0.13.8"
version = "0.13.9"
edition = "2024"
build = "build.rs"

View File

@ -92,6 +92,8 @@ build_candidates() {
run_tone() {
local candidate="$1"
local log
log=$(mktemp)
echo "🎧 trying UAC playback device: $candidate" >&2
set +e
timeout --signal=INT "${DURATION_SECONDS}s" \
@ -107,14 +109,24 @@ run_tone() {
provide-clock=false \
enable-last-sample=false \
buffer-time="$BUFFER_TIME_US" \
latency-time="$LATENCY_TIME_US"
latency-time="$LATENCY_TIME_US" \
2>"$log"
local rc=$?
set -e
if grep -Eiq 'unknown pcm|playback open error|invalid argument|no such (device|file)|^error:|could not open|failed to change state|not-negotiated' "$log"; then
echo "⚠️ tone failed on $candidate (sink open error)" >&2
sed 's/^/ /' "$log" >&2 || true
rm -f "$log"
return 1
fi
if [[ $rc -eq 0 || $rc -eq 124 ]]; then
echo "✅ UAC tone completed on $candidate" >&2
rm -f "$log"
return 0
fi
echo "⚠️ tone failed on $candidate (rc=$rc)" >&2
sed 's/^/ /' "$log" >&2 || true
rm -f "$log"
return "$rc"
}

View File

@ -10,7 +10,7 @@ bench = false
[package]
name = "lesavka_server"
version = "0.13.8"
version = "0.13.9"
edition = "2024"
autobins = false