From 2cdf0b3883d47926e82f24bb599ba693fd050e59 Mon Sep 17 00:00:00 2001 From: coral Date: Fri, 20 Mar 2026 16:08:41 -0700 Subject: [PATCH] big one --- .env.example | 12 + .gitignore | 27 + Cargo.lock | 5572 +++++++++++++++++ Cargo.toml | 3 + Dockerfile | 115 + README.md | 20 + config.toml | 43 + pjsua/Cargo.toml | 12 + pjsua/build.rs | 535 ++ pjsua/pjproject | 1 + pjsua/src/lib.rs | 17 + sipcord-bridge/Cargo.toml | 113 + sipcord-bridge/src/audio/flac.rs | 73 + sipcord-bridge/src/audio/mod.rs | 8 + sipcord-bridge/src/audio/simd.rs | 260 + sipcord-bridge/src/audio/wav.rs | 206 + sipcord-bridge/src/call/mod.rs | 2078 ++++++ sipcord-bridge/src/config.rs | 535 ++ sipcord-bridge/src/fax/audio_port.rs | 344 + sipcord-bridge/src/fax/discord_poster.rs | 224 + sipcord-bridge/src/fax/example.tiff | Bin 0 -> 10650 bytes sipcord-bridge/src/fax/mod.rs | 18 + sipcord-bridge/src/fax/session.rs | 649 ++ sipcord-bridge/src/fax/spandsp.rs | 672 ++ sipcord-bridge/src/fax/tiff_decoder.rs | 1300 ++++ sipcord-bridge/src/lib.rs | 18 + sipcord-bridge/src/main.rs | 126 + sipcord-bridge/src/routing/mod.rs | 101 + sipcord-bridge/src/routing/static_router.rs | 208 + sipcord-bridge/src/services/auth_cache.rs | 274 + sipcord-bridge/src/services/ban.rs | 58 + sipcord-bridge/src/services/mod.rs | 5 + sipcord-bridge/src/services/registrar.rs | 321 + sipcord-bridge/src/services/snowflake.rs | 181 + sipcord-bridge/src/services/sound/mod.rs | 236 + .../src/services/sound/streaming.rs | 273 + sipcord-bridge/src/transport/discord/mod.rs | 1264 ++++ sipcord-bridge/src/transport/discord/voice.rs | 239 + sipcord-bridge/src/transport/mod.rs | 2 + .../src/transport/sip/audio_thread.rs | 863 +++ sipcord-bridge/src/transport/sip/callbacks.rs | 1509 +++++ .../src/transport/sip/channel_audio.rs | 1044 +++ .../src/transport/sip/ffi/direct_player.rs | 161 + .../src/transport/sip/ffi/frame_utils.rs | 184 + sipcord-bridge/src/transport/sip/ffi/init.rs | 918 +++ .../src/transport/sip/ffi/looping_player.rs | 227 + sipcord-bridge/src/transport/sip/ffi/mod.rs | 31 + .../src/transport/sip/ffi/streaming_player.rs | 261 + .../src/transport/sip/ffi/test_tone.rs | 220 + sipcord-bridge/src/transport/sip/ffi/types.rs | 477 ++ sipcord-bridge/src/transport/sip/ffi/utils.rs | 67 + .../src/transport/sip/fork_group.rs | 278 + sipcord-bridge/src/transport/sip/mod.rs | 579 ++ sipcord-bridge/src/transport/sip/nat.rs | 909 +++ .../src/transport/sip/register_handler.rs | 585 ++ wav/JoonaKouvolalainen.flac | Bin 0 -> 5705708 bytes wav/connecting.wav | Bin 0 -> 160078 bytes wav/discord_join.wav | Bin 0 -> 37412 bytes wav/hold.flac | Bin 0 -> 7172096 bytes wav/no_channel_map.mp3 | Bin 0 -> 109441 bytes wav/no_channel_mapping.wav | Bin 0 -> 185652 bytes wav/no_permissions.wav | Bin 0 -> 372898 bytes wav/no_perms.mp3 | Bin 0 -> 203064 bytes wav/nokia.flac | Bin 0 -> 803095 bytes wav/serverisbusy.wav | Bin 0 -> 195684 bytes wav/unknown.wav | Bin 0 -> 65280 bytes wav/unknown_error.mp3 | Bin 0 -> 49255 bytes 67 files changed, 24456 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 config.toml create mode 100644 pjsua/Cargo.toml create mode 100644 pjsua/build.rs create mode 160000 pjsua/pjproject create mode 100644 pjsua/src/lib.rs create mode 100644 sipcord-bridge/Cargo.toml create mode 100644 sipcord-bridge/src/audio/flac.rs create mode 100644 sipcord-bridge/src/audio/mod.rs create mode 100644 sipcord-bridge/src/audio/simd.rs create mode 100644 sipcord-bridge/src/audio/wav.rs create mode 100644 sipcord-bridge/src/call/mod.rs create mode 100644 sipcord-bridge/src/config.rs create mode 100644 sipcord-bridge/src/fax/audio_port.rs create mode 100644 sipcord-bridge/src/fax/discord_poster.rs create mode 100644 sipcord-bridge/src/fax/example.tiff create mode 100644 sipcord-bridge/src/fax/mod.rs create mode 100644 sipcord-bridge/src/fax/session.rs create mode 100644 sipcord-bridge/src/fax/spandsp.rs create mode 100644 sipcord-bridge/src/fax/tiff_decoder.rs create mode 100644 sipcord-bridge/src/lib.rs create mode 100644 sipcord-bridge/src/main.rs create mode 100644 sipcord-bridge/src/routing/mod.rs create mode 100644 sipcord-bridge/src/routing/static_router.rs create mode 100644 sipcord-bridge/src/services/auth_cache.rs create mode 100644 sipcord-bridge/src/services/ban.rs create mode 100644 sipcord-bridge/src/services/mod.rs create mode 100644 sipcord-bridge/src/services/registrar.rs create mode 100644 sipcord-bridge/src/services/snowflake.rs create mode 100644 sipcord-bridge/src/services/sound/mod.rs create mode 100644 sipcord-bridge/src/services/sound/streaming.rs create mode 100644 sipcord-bridge/src/transport/discord/mod.rs create mode 100644 sipcord-bridge/src/transport/discord/voice.rs create mode 100644 sipcord-bridge/src/transport/mod.rs create mode 100644 sipcord-bridge/src/transport/sip/audio_thread.rs create mode 100644 sipcord-bridge/src/transport/sip/callbacks.rs create mode 100644 sipcord-bridge/src/transport/sip/channel_audio.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/direct_player.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/frame_utils.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/init.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/looping_player.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/mod.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/streaming_player.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/test_tone.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/types.rs create mode 100644 sipcord-bridge/src/transport/sip/ffi/utils.rs create mode 100644 sipcord-bridge/src/transport/sip/fork_group.rs create mode 100644 sipcord-bridge/src/transport/sip/mod.rs create mode 100644 sipcord-bridge/src/transport/sip/nat.rs create mode 100644 sipcord-bridge/src/transport/sip/register_handler.rs create mode 100644 wav/JoonaKouvolalainen.flac create mode 100644 wav/connecting.wav create mode 100644 wav/discord_join.wav create mode 100644 wav/hold.flac create mode 100644 wav/no_channel_map.mp3 create mode 100644 wav/no_channel_mapping.wav create mode 100644 wav/no_permissions.wav create mode 100644 wav/no_perms.mp3 create mode 100644 wav/nokia.flac create mode 100644 wav/serverisbusy.wav create mode 100644 wav/unknown.wav create mode 100644 wav/unknown_error.mp3 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..34bc06e --- /dev/null +++ b/.env.example @@ -0,0 +1,12 @@ +# Required +SIP_PUBLIC_HOST=0.0.0.0 +DISCORD_BOT_TOKEN=your_bot_token_here + +# Optional (defaults shown) +# DATA_DIR=/var/lib/sipcord +# CONFIG_PATH=./config.toml +# SOUNDS_DIR=./wav +# SIP_PORT=5060 +# RTP_PORT_START=10000 +# RTP_PORT_END=15000 +# DEV_MODE=false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd66c5b --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Cargo build output +target/ +debug/ + +# Rustfmt backup files +**/*.rs.bk + +# MSVC debug info +*.pdb + +# Environment variables +.env +.env.local +.env.*.local + +# OS +.DS_Store +Thumbs.db + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# Temporary fax files +tmp/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..164c106 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5572 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aformat" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f387c59d52324934bdd3586fe904051338ce4583a9bb921982a3dbb060a26e6f" +dependencies = [ + "aformat-macros", + "to-arraystring", + "typenum", + "typenum_mappings", +] + +[[package]] +name = "aformat-macros" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254adeba6d67e7e6706f01ffdf1787cdad41e361be5b7c1e3265bba54dca7d8f" +dependencies = [ + "bytestring", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "audio-core" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ebbf82d06013f4c41fe71303feb980cddd78496d904d06be627972de51a24" + +[[package]] +name = "audioadapter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25c5bb54993ad4693d8b68b6f29f872c5fd9f92a6469d0acb0cbaf80a13d0f9" +dependencies = [ + "audio-core", + "num-traits", +] + +[[package]] +name = "audioadapter-buffers" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6af89882334c4e501faa08992888593ada468f9e1ab211635c32f9ada7786e0" +dependencies = [ + "audioadapter", + "audioadapter-sample", + "num-traits", +] + +[[package]] +name = "audioadapter-sample" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9a3d502fec0b21aa420febe0b110875cf8a7057c49e83a0cace1df6a73e03e" +dependencies = [ + "audio-core", + "num-traits", +] + +[[package]] +name = "audiopus" +version = "0.3.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab55eb0e56d7c6de3d59f544e5db122d7725ec33be6a276ee8241f3be6473955" +dependencies = [ + "audiopus_sys", +] + +[[package]] +name = "audiopus_sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62314a1546a2064e033665d658e88c620a62904be945f8147e6b16c3db9f8651" +dependencies = [ + "cmake", + "log", + "pkg-config", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "aws-lc-rs" +version = "1.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.11.0", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.117", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.11.0", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.117", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bool_to_bitflags" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c039d9bc676b768f6d59556e99f95f5e47c811b672f8b2b2b606eb28527a2f" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", + "to-arraystring", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "bytestring" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.2.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "claxon" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" + +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-models" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94950e87ea550d6d68f1993f3e7bebc8cb7235157bff84337d46195c3aa0b3f0" +dependencies = [ + "hax-lib", + "pastey", + "rand 0.9.2", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core 0.10.2", + "darling_macro 0.10.2", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core 0.10.2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core 0.9.12", + "serde", +] + +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "davey" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20e05bae3e741c249912d39c6cec28d2ef3c1a196e9acac025582182a8f9fbb7" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "hex-literal", + "hmac", + "num-derive", + "num-traits", + "openmls", + "openmls_basic_credential", + "openmls_rust_crypto", + "p256", + "rand 0.8.5", + "scrypt", + "sha2", + "subtle", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" +dependencies = [ + "darling 0.10.2", + "derive_builder_core", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" +dependencies = [ + "darling 0.10.2", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "discortp" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c793408a15d361754613fa68123ffa60424c2617fafdf82127b4bedf37d3f5d" +dependencies = [ + "pnet_macros", + "pnet_macros_support", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "serde", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array", + "group", + "hkdf", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "extract_map" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8855baff5d450715f5d34c1d291a8c77363bd5a20ddacf560d7d6ea2a07f2c3" +dependencies = [ + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", + "zlib-rs", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "spin", +] + +[[package]] +name = "fluvio-wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b768c170dc045fa587a8f948c91f9bcfb87f774930477c6215addf54317f137f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "from_map" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99f31122ab0445ff8cee420b805f24e07683073815de1dd276ee7d588d301700" +dependencies = [ + "hashmap_derive", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generator" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "hashmap_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb30bf173e72cc31b5265dac095423ca14e7789ff7c3b0e6096a37a996f12883" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "hax-lib" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "543f93241d32b3f00569201bfce9d7a93c92c6421b23c77864ac929dc947b9fc" +dependencies = [ + "hax-lib-macros", + "num-bigint", + "num-traits", +] + +[[package]] +name = "hax-lib-macros" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8755751e760b11021765bb04cb4a6c4e24742688d9f3aa14c2079638f537b0f" +dependencies = [ + "hax-lib-macros-types", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "hax-lib-macros-types" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f177c9ae8ea456e2f71ff3c1ea47bf4464f772a05133fcbba56cd5ba169035a2" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hls_m3u8" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b906521a5b0e6d2ec07ea0bb855d92a1db30b48812744a645a3b2a1405cb8159" +dependencies = [ + "derive_builder", + "derive_more", + "hex", + "shorthand", + "stable-vec", + "strum 0.17.1", + "thiserror 1.0.69", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "hpke-rs" +version = "0.3.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b245758dea58531acbdd0e9a20d73a93561a78f78531a2bed0ef9b5a39cc0ff2" +dependencies = [ + "hpke-rs-crypto", + "hpke-rs-libcrux", + "hpke-rs-rust-crypto", + "libcrux-sha3", + "log", + "rand_core 0.9.5", + "serde", + "tls_codec", + "zeroize", +] + +[[package]] +name = "hpke-rs-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51ffd304e06803f90f2e56a24a6910f19b8516f842d7b72a436c51026279876" +dependencies = [ + "rand_core 0.9.5", +] + +[[package]] +name = "hpke-rs-libcrux" +version = "0.3.0-alpha.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96fa708a147e2068a04ec209f5d94f2446f89a754e2556a4c14b88101aa26ff8" +dependencies = [ + "hpke-rs-crypto", + "libcrux-chacha20poly1305", + "libcrux-ecdh", + "libcrux-hkdf", + "libcrux-kem", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "hpke-rs-rust-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7dc0df494528a0b90005bb511c117453c6a89cd8819f6cf311d0f4446dcf45" +dependencies = [ + "aes-gcm", + "chacha20poly1305", + "hkdf", + "hpke-rs-crypto", + "k256", + "p256", + "p384", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sha2", + "x25519-dalek", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots 1.0.6", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.3", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "elliptic-curve", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "libcrux-chacha20poly1305" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0683aedd9048bead90863fa83f56fc224ea545762fdd108c845d5c15391413" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-poly1305", +] + +[[package]] +name = "libcrux-curve25519" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a39960483f24efea15b1aa111bb8668dc671f808598793104ccc4fec9f5e28b" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", +] + +[[package]] +name = "libcrux-ecdh" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5ecef729c99bb2f751133b89186a636cd8b3e8320d094131d21ea8c82348ca" +dependencies = [ + "libcrux-curve25519", + "libcrux-p256", + "rand 0.9.2", +] + +[[package]] +name = "libcrux-hacl-rs" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a141e79dcefa1a91b68831783114232ed6a69b8c8c853c6e6b1cf2af231c3c" +dependencies = [ + "libcrux-macros", +] + +[[package]] +name = "libcrux-hkdf" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2663b258d1a4a023a03e946bb949cf30f862d2da1e68fe9a1d3e6103c1d4a6a5" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-hmac", +] + +[[package]] +name = "libcrux-hmac" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c8d021153affaad2aba7c6dd4c23e7304e77198080ce9b949c725682912154" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-sha2", +] + +[[package]] +name = "libcrux-intrinsics" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3b41dcbc21a5fb7efbbb5af7405b2e79c4bfe443924e90b13afc0080318d31" +dependencies = [ + "core-models", + "hax-lib", +] + +[[package]] +name = "libcrux-kem" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc932402ccd803c064e228ff2a4d2aef5b5a0b03b461518d29046e01ebc2cf98" +dependencies = [ + "libcrux-ecdh", + "libcrux-ml-kem", + "libcrux-sha3", + "libcrux-traits", + "rand 0.9.2", +] + +[[package]] +name = "libcrux-macros" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc8e38ec9c49ba83cb7e72d278c3537552afbc67728f22e567c21725cdd8b3ba" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "libcrux-ml-kem" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6206bb81fc3e51bd94d4b847760039d44a9a8e77bac841df8ed9320f79a6f3be" +dependencies = [ + "hax-lib", + "libcrux-intrinsics", + "libcrux-platform", + "libcrux-secrets", + "libcrux-sha3", + "rand 0.9.2", +] + +[[package]] +name = "libcrux-p256" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb56de31fa136bdaa838401547c3644f3e11c7929818dfb45d934a2db7ab521" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-sha2", +] + +[[package]] +name = "libcrux-platform" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db82d058aa76ea315a3b2092f69dfbd67ddb0e462038a206e1dcd73f058c0778" +dependencies = [ + "libc", +] + +[[package]] +name = "libcrux-poly1305" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8907194cd2d35dd763519189036c6062f5464ac9b63fb968b10abcb09feef3" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", +] + +[[package]] +name = "libcrux-secrets" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332737e629fe6ba7547f5c0f90559eac865d5dbecf98138ffae8f16ab8cbe33f" +dependencies = [ + "hax-lib", +] + +[[package]] +name = "libcrux-sha2" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0c0266cc2b0920f3b1540bb1268ea5dae2cfff9aa0e92b316d2c73e618fb64" +dependencies = [ + "libcrux-hacl-rs", + "libcrux-macros", + "libcrux-traits", +] + +[[package]] +name = "libcrux-sha3" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c076a07a2df2cc8f6603042823e752c0057bce51beb4e0b2cbf0b3dfb7f73d" +dependencies = [ + "hax-lib", + "libcrux-intrinsics", + "libcrux-platform", +] + +[[package]] +name = "libcrux-traits" +version = "0.0.3-alpha.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "477d39395a82293e079313c288f313bcbb62501ae4c31588e471344eea1a77da" +dependencies = [ + "rand 0.9.2", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moka" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85f8024e1c8e71c778968af91d43700ce1d11b219d127d79fb2934153b82b42b" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot 0.12.5", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "no-std-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" +dependencies = [ + "serde", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openmls" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692e9c6b7d725e53cc42d1fa870066770fd67df35cf1cfbbd047dc0355e06b67" +dependencies = [ + "fluvio-wasm-timer", + "getrandom 0.2.17", + "log", + "openmls_traits", + "rayon", + "serde", + "serde_bytes", + "thiserror 2.0.18", + "tls_codec", + "zeroize", +] + +[[package]] +name = "openmls_basic_credential" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e6454b2b1b6749fc2f142d7f74eb387f7793be88187ed372e9f5f4cf10c34c" +dependencies = [ + "ed25519-dalek", + "openmls_traits", + "p256", + "rand 0.8.5", + "serde", + "tls_codec", +] + +[[package]] +name = "openmls_memory_storage" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7b071ea5573a97efaa72b7c53e81cebc644b62ef0fe992bad685cc0f7dd4ea" +dependencies = [ + "log", + "openmls_traits", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "openmls_rust_crypto" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3faef09e17a15c8065b9ec6b1e150c19dcb0c4cb810a636b6f010a94a189678e" +dependencies = [ + "aes-gcm", + "chacha20poly1305", + "ed25519-dalek", + "hkdf", + "hmac", + "hpke-rs", + "hpke-rs-crypto", + "hpke-rs-rust-crypto", + "openmls_memory_storage", + "openmls_traits", + "p256", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2", + "thiserror 2.0.18", + "tls_codec", +] + +[[package]] +name = "openmls_traits" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e21d8877bacdbc407060df29bf59b145bb886a8fa0099b87ae8067a34b902a13" +dependencies = [ + "serde", + "tls_codec", +] + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "ordered-float" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p384" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +dependencies = [ + "elliptic-curve", + "primeorder", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.12", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + +[[package]] +name = "patricia_tree" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f2f4539bffe53fc4b4da301df49d114b845b077bd5727b7fe2bd9d8df2ae68" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pjsua" +version = "0.1.0" +dependencies = [ + "bindgen 0.71.1", + "cmake", + "pkg-config", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "pnet_base" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cf6fb3ab38b68d01ab2aea03ed3d1132b4868fa4e06285f29f16da01c5f4c" +dependencies = [ + "no-std-net", +] + +[[package]] +name = "pnet_macros" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688b17499eee04a0408aca0aa5cba5fc86401d7216de8a63fdf7a4c227871804" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.117", +] + +[[package]] +name = "pnet_macros_support" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea925b72f4bd37f8eab0f221bbe4c78b63498350c983ffa9dd4bcde7e030f56" +dependencies = [ + "pnet_base", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.11.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "poise" +version = "0.6.1" +source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#8807088ee077f81c2b88d54d065b82b4c7dce28d" +dependencies = [ + "async-trait", + "derivative", + "futures-util", + "indexmap", + "parking_lot 0.12.5", + "poise_macros", + "regex", + "serenity", + "tokio", + "tracing", + "trim-in-place", +] + +[[package]] +name = "poise_macros" +version = "0.6.1" +source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#8807088ee077f81c2b88d54d065b82b4c7dce28d" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "primal-check" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08" +dependencies = [ + "num-integer", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pxfm" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2 0.6.3", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.3", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "realfft" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f821338fddb99d089116342c46e9f1fbf3828dba077674613e734e01d6ea8677" +dependencies = [ + "rustfft", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.4.2", + "web-sys", + "webpki-roots 1.0.6", +] + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.5.0", + "web-sys", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ringbuf" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe47b720588c8702e34b5979cb3271a8b1842c7cb6f57408efa70c779363488c" +dependencies = [ + "crossbeam-utils", + "portable-atomic", + "portable-atomic-util", +] + +[[package]] +name = "rtrb" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7204ed6420f698836b76d4d5c2ec5dec7585fd5c3a788fd1cde855d1de598239" + +[[package]] +name = "rubato" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5258099699851cfd0082aeb645feb9c084d9a5e1f1b8d5372086b989fc5e56a1" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "realfft", +] + +[[package]] +name = "rubato" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90173154a8a14e6adb109ea641743bc95ec81c093d94e70c6763565f7108ebeb" +dependencies = [ + "audioadapter", + "audioadapter-buffers", + "num-complex", + "num-integer", + "num-traits", + "realfft", + "visibility", + "windowfunctions", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustfft" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", +] + +[[package]] +name = "rustls" +version = "0.23.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +dependencies = [ + "aws-lc-rs", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.103.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" +dependencies = [ + "aws-lc-rs", + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty_pool" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ed36cdb20de66d89a17ea04b8883fc7a386f2cf877aaedca5005583ce4876ff" +dependencies = [ + "crossbeam-channel", + "futures", + "futures-channel", + "futures-executor", + "num_cpus", +] + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "pbkdf2", + "salsa20", + "sha2", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags 2.11.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-aux" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "207f67b28fe90fb596503a9bf0bf1ea5e831e21307658e177c5dfcdfc3ab8a0a" +dependencies = [ + "chrono", + "serde", + "serde-value", + "serde_json", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_cow" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7bbbec7196bfde255ab54b65e34087c0849629280028238e67ee25d6a4b7da" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serenity" +version = "0.12.5" +source = "git+https://github.com/serenity-rs/serenity?branch=next#4e1cd66c8fb64354c293a5991e287f26efb94006" +dependencies = [ + "aformat", + "arrayvec", + "async-trait", + "base64", + "bitflags 2.11.0", + "bool_to_bitflags", + "bytes", + "chrono", + "dashmap", + "extract_map", + "flate2", + "foldhash 0.2.0", + "futures", + "mime", + "mime_guess", + "nonmax", + "parking_lot 0.12.5", + "percent-encoding", + "ref-cast", + "reqwest 0.13.2", + "serde", + "serde_cow", + "serde_json", + "small-fixed-array", + "strum 0.27.2", + "time", + "to-arraystring", + "tokio", + "tokio-tungstenite 0.28.0", + "tracing", + "typesize", + "url", + "zeroize", + "zstd", +] + +[[package]] +name = "serenity-voice-model" +version = "0.3.0" +source = "git+https://github.com/serenity-rs/voice-model.git?branch=next#cef32674d5ad6c539b1ee2ff9dcda39b6d71e18f" +dependencies = [ + "bitflags 2.11.0", + "num-traits", + "serde", + "serde_json", + "serde_repr", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shorthand" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474f77f985d8212610f170332eaf173e768404c0c1d4deb041f32c297cf18931" +dependencies = [ + "from_map", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "sipcord-bridge" +version = "1.5.5" +dependencies = [ + "anyhow", + "async-trait", + "audioadapter", + "audioadapter-buffers", + "audiopus", + "base64", + "byteorder", + "bytes", + "chrono", + "claxon", + "crossbeam-channel", + "crossbeam-queue", + "dashmap", + "dotenvy", + "envy", + "image", + "ipnet", + "md-5", + "moka", + "parking_lot 0.12.5", + "pjsua", + "poise", + "rand 0.9.2", + "reqwest 0.13.2", + "rtrb", + "rubato 1.0.1", + "rustls", + "serde", + "serde_json", + "serenity", + "songbird", + "spandsp", + "symphonia", + "symphonia-core", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "toml", + "tracing", + "tracing-subscriber", + "udptl", +] + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "small-fixed-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47eb472ef0994fb63d68ce4851eef89fa0faaf0dc4088c941b4015ce32c083f" +dependencies = [ + "serde", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "songbird" +version = "0.5.0" +source = "git+https://github.com/jtscuba/songbird?branch=davey#2ee686af37a692cd189a17771beda426ae7f051f" +dependencies = [ + "aead", + "aes-gcm", + "async-trait", + "audiopus", + "byteorder", + "bytes", + "chacha20poly1305", + "crypto-common", + "dashmap", + "davey", + "derivative", + "discortp", + "either", + "flume", + "futures", + "nohash-hasher", + "nonmax", + "parking_lot 0.12.5", + "pin-project", + "rand 0.9.2", + "reqwest 0.12.28", + "ringbuf", + "rubato 0.16.2", + "rusty_pool", + "serde", + "serde-aux", + "serde_json", + "serenity", + "serenity-voice-model", + "socket2 0.5.10", + "stream_lib", + "streamcatcher", + "symphonia", + "symphonia-core", + "tokio", + "tokio-tungstenite 0.26.2", + "tokio-util", + "tokio-websockets", + "tracing", + "tracing-futures", + "twilight-gateway", + "typenum", + "url", + "uuid", +] + +[[package]] +name = "spandsp" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5f076b6e56f1a1062d6950dcd1c6c1df281ae2828db271929c50c191ec8c79e" +dependencies = [ + "bitflags 2.11.0", + "spandsp-sys", + "thiserror 2.0.18", +] + +[[package]] +name = "spandsp-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05ab99051230293dded61ba3cd32f06eb15b437a8135be21f560f72bab713db" +dependencies = [ + "bindgen 0.72.1", + "cc", + "pkg-config", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable-vec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dac7bc0f7d0d44329b200020effbc25a534d89fa142af95e3ddf76113412a5e" + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "stream_lib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e106dd009a0dfd2cf57777c39cad08f852debd366df6e841b250d956cec3277e" +dependencies = [ + "bytes", + "futures-core", + "futures-util", + "hls_m3u8", + "patricia_tree", + "reqwest 0.12.28", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "streamcatcher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71664755c349abb0758fda6218fb2d2391ca2a73f9302c03b145491db4fcea29" +dependencies = [ + "crossbeam-utils", + "futures-util", + "loom", +] + +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "530efb820d53b712f4e347916c5e7ed20deb76a4f0457943b3182fb889b06d2c" +dependencies = [ + "strum_macros 0.17.1", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6e163a520367c465f59e0a61a23cfae3b10b6546d78b6f672a382be79f7110" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "symphonia" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5773a4c030a19d9bfaa090f49746ff35c75dfddfa700df7a5939d5e076a57039" +dependencies = [ + "lazy_static", + "symphonia-bundle-flac", + "symphonia-codec-pcm", + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "symphonia-bundle-flac" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91565e180aea25d9b80a910c546802526ffd0072d0b8974e3ebe59b686c9976" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + +[[package]] +name = "symphonia-codec-pcm" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e89d716c01541ad3ebe7c91ce4c8d38a7cf266a3f7b2f090b108fb0cb031d95" +dependencies = [ + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af" +dependencies = [ + "arrayvec", + "bitflags 1.3.2", + "bytemuck", + "lazy_static", + "log", +] + +[[package]] +name = "symphonia-metadata" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16" +dependencies = [ + "encoding_rs", + "lazy_static", + "log", + "symphonia-core", +] + +[[package]] +name = "symphonia-utils-xiph" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27c85ab799a338446b68eec77abf42e1a6f1bb490656e121c6e27bfbab9f16" +dependencies = [ + "symphonia-core", + "symphonia-metadata", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tls_codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" +dependencies = [ + "serde", + "tls_codec_derive", + "zeroize", +] + +[[package]] +name = "tls_codec_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "to-arraystring" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fafaa22f176928fb926345e78eb2ec404603c878b274e6ab1f76de1f6dde1b1" +dependencies = [ + "arrayvec", + "itoa", + "ryu", +] + +[[package]] +name = "tokio" +version = "1.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot 0.12.5", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.3", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.26.2", + "webpki-roots 0.26.11", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.28.0", + "webpki-roots 0.26.11", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-websockets" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fcaf159b4e7a376b05b5bfd77bfd38f3324f5fce751b4213bfc7eaa47affb4e" +dependencies = [ + "base64", + "bytes", + "fastrand", + "futures-core", + "futures-sink", + "http", + "httparse", + "ring", + "rustls-native-certs", + "rustls-pki-types", + "sha1_smol", + "simdutf8", + "tokio", + "tokio-rustls", + "tokio-util", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.0.10+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" +dependencies = [ + "winnow 1.0.0", +] + +[[package]] +name = "toml_writer" +version = "1.0.7+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "trim-in-place" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.2", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.2", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "url", + "utf-8", +] + +[[package]] +name = "twilight-gateway" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863ef55467bcf6a2958162766fd0b72f33112e36971b37f9ec09b86d4fd0f7d1" +dependencies = [ + "bitflags 2.11.0", + "fastrand", + "futures-core", + "futures-sink", + "serde", + "serde_json", + "tokio", + "tokio-websockets", + "tracing", + "twilight-gateway-queue", + "twilight-model", +] + +[[package]] +name = "twilight-gateway-queue" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c962bd4693da0a215abe6b431fd73eb87111f49c431b87951780f9f7985002" +dependencies = [ + "tokio", + "tracing", +] + +[[package]] +name = "twilight-model" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "191e2efa051dfbd9bed4c9f6bd3f5e007bda909c687a1db2760371a3d566617d" +dependencies = [ + "bitflags 2.11.0", + "serde", + "serde-value", + "serde_repr", + "time", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "typenum_mappings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cbc2d8952dd1e08b0164a5b51549e80631ac9da4107669d26c8ea89cb0b5545" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "to-arraystring", +] + +[[package]] +name = "typesize" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da66c62c5b7017a2787e77373c03e6a5aafde77a73bff1ff96e91cd2e128179" +dependencies = [ + "chrono", + "nonmax", + "parking_lot 0.12.5", + "secrecy", + "serde_json", + "time", + "typesize-derive", + "url", +] + +[[package]] +name = "typesize-derive" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "536b6812192bda8551cfa0e52524e328c6a951b48e66529ee4522d6c721243d6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "udptl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b255ad0ff36582a8a453c42a2bcc16c72d00f0ab16a14a4a7aeacb55ccb2a351" +dependencies = [ + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "visibility" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804f18a4ac2676ffb4e8b5b5fa9ae38af06df08162314f96a68d2a363e21a8ca" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + +[[package]] +name = "webpki-roots" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windowfunctions" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90628d739333b7c5d2ee0b70210b97b8cddc38440c682c96fd9e2c24c2db5f3a" +dependencies = [ + "num-traits", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core 0.6.4", + "serde", + "zeroize", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zlib-rs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-jpeg" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec5f41c76397b7da451efd19915684f727d7e1d516384ca6bd0ec43ec94de23c" +dependencies = [ + "zune-core", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..cd8458a --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,3 @@ +[workspace] +members = ["sipcord-bridge", "pjsua"] +resolver = "2" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a2b8ccb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,115 @@ +# Stage 0: Shared base with build dependencies +FROM debian:trixie AS build-base + +RUN apt-get update && apt-get install -y \ + cmake \ + pkg-config \ + build-essential \ + libssl-dev \ + libasound2-dev \ + uuid-dev \ + libclang-dev \ + curl \ + libopencore-amrnb-dev \ + libopencore-amrwb-dev \ + libopus-dev \ + libtiff-dev \ + libjpeg-dev \ + && rm -rf /var/lib/apt/lists/* + +# Stage 1: Build pjproject C library (slow, cached unless pjsua/pjproject changes) +FROM build-base AS pjproject-builder + +WORKDIR /build + +COPY pjsua/pjproject/ pjproject-src/ + +RUN mkdir -p pjproject-build pjproject-install && \ + cd pjproject-build && \ + cmake \ + -G "Unix Makefiles" \ + -DCMAKE_INSTALL_PREFIX=/build/pjproject-install \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DPJ_SKIP_EXPERIMENTAL_NOTICE=ON \ + -DPJ_ENABLE_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + -DPJMEDIA_WITH_VIDEO=OFF \ + -DPJMEDIA_WITH_FFMPEG=OFF \ + -DPJMEDIA_WITH_LIBYUV=OFF \ + -DPJMEDIA_WITH_OPENCORE_AMRNB_CODEC=ON \ + -DPJMEDIA_WITH_OPENCORE_AMRWB_CODEC=ON \ + -DPJMEDIA_WITH_OPUS_CODEC=ON \ + -DPJLIB_WITH_SSL=openssl \ + "-DCMAKE_C_FLAGS=-DPJSUA_MAX_CALLS=128" \ + "-DCMAKE_CXX_FLAGS=-DPJSUA_MAX_CALLS=128" \ + ../pjproject-src && \ + cmake --build . -j$(nproc) \ + --target pjlib pjlib-util pjnath pjmedia pjmedia-audiodev \ + pjmedia-codec pjsip pjsip-simple pjsip-ua pjsua-lib pjsua2 \ + resample srtp speex g7221 gsm ilbc && \ + cmake --install . || true + +# Collect all .a files into a single flat lib directory +RUN mkdir -p /build/pjproject-install/lib && \ + find /build/pjproject-build /build/pjproject-install -name '*.a' -exec cp -n {} /build/pjproject-install/lib/ \; && \ + echo "Libraries collected:" && ls /build/pjproject-install/lib/ + +# Stage 2: Build Rust dependencies (cached unless Cargo.toml/lock changes) +FROM build-base AS deps-builder + +# Install Rust nightly (required for portable_simd) +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly +ENV PATH="/root/.cargo/bin:${PATH}" + +WORKDIR /build + +# Copy pre-built pjproject from stage 1 +COPY --from=pjproject-builder /build/pjproject-install /pjproject +ENV PJPROJECT_DIR=/pjproject + +# Copy only what cargo needs for dependency resolution +COPY Cargo.toml Cargo.lock ./ +COPY pjsua/ pjsua/ +COPY sipcord-bridge/Cargo.toml sipcord-bridge/Cargo.toml + +# Create dummy source files to build dependencies only +RUN mkdir -p sipcord-bridge/src && \ + echo '#![feature(portable_simd)] fn main() {}' > sipcord-bridge/src/main.rs && \ + echo '#![feature(portable_simd)]' > sipcord-bridge/src/lib.rs + +RUN cargo build --release -p sipcord-bridge + +# Stage 3: Build application (fast, only rebuilds when src/ changes) +FROM deps-builder AS builder + +RUN rm -rf sipcord-bridge/src +COPY sipcord-bridge/src/ sipcord-bridge/src/ +COPY wav/ wav/ +COPY config.toml config.toml + +RUN touch sipcord-bridge/src/main.rs sipcord-bridge/src/lib.rs +RUN cargo build --release -p sipcord-bridge + +# Stage 4: Minimal runtime image +FROM debian:trixie-slim + +RUN apt-get update && apt-get install -y \ + ca-certificates \ + libasound2 \ + libssl3 \ + libuuid1 \ + libopencore-amrnb0 \ + libopencore-amrwb0 \ + libopus0 \ + libtiff6 \ + libjpeg62-turbo \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY --from=builder /build/target/release/sipcord-bridge /app/sipcord-bridge +COPY --from=builder /build/config.toml /app/config.toml +COPY --from=builder /build/wav/ /app/wav/ + +ENTRYPOINT ["/app/sipcord-bridge"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..8783f3c --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# SIPcord Bridge + +This is a slice of the code that powers [SIPcord](https://sipcord.net/) that you can use to self host something similar. It's not the full SIPcord package but rather the core functionality used in SIPcord with ways to build your own backend adapter. SIPcord itself uses this as a component of the full build so the code is the same that runs on the public bridges. + +## Help! + +I am providing 0 support for this, my goal is to run [sipcord.net](https://sipcord.net/), not support self hosting. If you want to run this self hosted, feel free to use this code but do not ask me for support. + +## I have a feature request! + +**PR's welcome**. No really, feel free to implement it and contribute. + +## Acknowledgements + +- Thanks to [dusthillguy](https://www.youtube.com/watch?v=IK1ydvw3xkU) for letting me use the song *"Joona Kouvolalainen buttermilk"* as hold music and distribute it. +- Thanks to chrischrome for hosting bridge-use1 + +## License + +GPLv3 \ No newline at end of file diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..7ca420b --- /dev/null +++ b/config.toml @@ -0,0 +1,43 @@ +# Sipcord Bridge — sample configuration +# +# Copy this file to your working directory and adjust as needed. +# All sections except [sounds] are optional (defaults shown). + +[sounds] +# System sounds (preloaded into memory at startup) +discord_join = { src = "discord_join.wav", preload = true } +connecting = { src = "connecting.wav", preload = true } +unknown_error = { src = "unknown.wav", preload = true } +no_channel_mapping = { src = "no_channel_mapping.wav", preload = true } +no_permissions = { src = "no_permissions.wav", preload = true } +server_is_busy = { src = "serverisbusy.wav", preload = true } + +# Easter eggs (streamed from disk on demand) +easteregg = { src = "nokia.flac", preload = false, extension = 11111 } +hold = { src = "JoonaKouvolalainen.flac", preload = false, extension = 10000 } + +# Test tone — 440Hz sine wave, generated dynamically (no file needed) +test_tone = { extension = 0 } + +[bridge] +# rtp_inactivity_timeout_secs = 60 +# no_audio_timeout_secs = 10 +# empty_bridge_grace_period_secs = 30 +# max_channel_buffer_samples = 32000 +# api_timeout_secs = 10 +# health_check_interval_secs = 5 +# voice_join_max_retries = 2 +# voice_join_retry_delay_secs = 5 +# pjsip_log_level = 4 + +[audio] +# ring_buffer_samples = 96000 +# pre_buffer_samples = 14400 +# vad_silence_threshold = 200 +# vad_mute_threshold = 50 +# vad_silence_frames_before_stop = 15 + +[fax] +# tmp_folder = "/tmp/sipcord-fax" +# prefix = "fax_" +# output_format = "png" diff --git a/pjsua/Cargo.toml b/pjsua/Cargo.toml new file mode 100644 index 0000000..b827add --- /dev/null +++ b/pjsua/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "pjsua" +version = "0.1.0" +edition = "2021" +description = "Rust bindings for pjsua (pjproject SIP library)" + +[dependencies] + +[build-dependencies] +bindgen = "0.71" +pkg-config = "0.3" +cmake = "0.1" diff --git a/pjsua/build.rs b/pjsua/build.rs new file mode 100644 index 0000000..e6c0d51 --- /dev/null +++ b/pjsua/build.rs @@ -0,0 +1,535 @@ +//! Build script for pjsua bindings +//! +//! This script builds pjproject from source if not found, then generates +//! Rust bindings using bindgen. +//! +//! Set PJPROJECT_DIR to a pre-built pjproject install prefix to skip the +//! cmake build (used in Docker to separate the slow C build into its own layer). + +use std::env; +use std::path::PathBuf; +use std::process::Command; + +fn main() { + println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-env-changed=PJPROJECT_DIR"); + + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + + // If PJPROJECT_DIR is set, use pre-built pjproject (e.g. from a separate Docker stage). + // Otherwise build from source via cmake. + let include_paths = if let Ok(prefix) = env::var("PJPROJECT_DIR") { + let prefix = PathBuf::from(&prefix); + println!("cargo:warning=Using pre-built pjproject from: {}", prefix.display()); + + let lib_dir = prefix.join("lib"); + println!("cargo:rustc-link-search=native={}", lib_dir.display()); + + // Link libraries in the correct dependency order (same as build-from-source path) + let pj_libs = [ + "pjsua-lib", "pjsua2", "pjsip-ua", "pjsip-simple", "pjsip", + "pjmedia-codec", "pjmedia", "pjmedia-audiodev", "pjnath", + "pjlib-util", "pjlib", + "srtp", "resample", "speex", "g7221", "gsm", "ilbc", + ]; + for lib in &pj_libs { + println!("cargo:rustc-link-lib=static={}", lib); + } + + vec![prefix.join("include")] + } else { + build_from_source(&out_dir) + }; + + // ---- System libraries (common to both paths) ---- + + #[cfg(target_os = "macos")] + { + println!("cargo:rustc-link-lib=framework=AudioToolbox"); + println!("cargo:rustc-link-lib=framework=AudioUnit"); + println!("cargo:rustc-link-lib=framework=CoreAudio"); + println!("cargo:rustc-link-lib=framework=CoreServices"); + println!("cargo:rustc-link-lib=framework=Foundation"); + println!("cargo:rustc-link-lib=framework=AVFoundation"); + println!("cargo:rustc-link-lib=framework=CoreMedia"); + println!("cargo:rustc-link-lib=framework=CoreVideo"); + println!("cargo:rustc-link-lib=framework=VideoToolbox"); + println!("cargo:rustc-link-lib=framework=Security"); + } + + #[cfg(target_os = "linux")] + { + println!("cargo:rustc-link-lib=asound"); + println!("cargo:rustc-link-lib=pthread"); + println!("cargo:rustc-link-lib=m"); + println!("cargo:rustc-link-lib=rt"); + println!("cargo:rustc-link-lib=uuid"); + println!("cargo:rustc-link-lib=opencore-amrnb"); + println!("cargo:rustc-link-lib=opencore-amrwb"); + println!("cargo:rustc-link-lib=opus"); + } + + // OpenSSL + #[cfg(target_os = "macos")] + { + let openssl_paths = [ + "/opt/homebrew/opt/openssl@3/lib", + "/opt/homebrew/opt/openssl/lib", + "/usr/local/opt/openssl@3/lib", + "/usr/local/opt/openssl/lib", + ]; + for path in &openssl_paths { + if std::path::Path::new(path).exists() { + println!("cargo:rustc-link-search=native={}", path); + break; + } + } + + let amr_paths = [ + "/opt/homebrew/opt/opencore-amr/lib", + "/usr/local/opt/opencore-amr/lib", + ]; + for path in &amr_paths { + if std::path::Path::new(path).exists() { + println!("cargo:rustc-link-search=native={}", path); + println!("cargo:rustc-link-lib=opencore-amrnb"); + println!("cargo:rustc-link-lib=opencore-amrwb"); + break; + } + } + + let opus_paths = [ + "/opt/homebrew/opt/opus/lib", + "/usr/local/opt/opus/lib", + ]; + for path in &opus_paths { + if std::path::Path::new(path).exists() { + println!("cargo:rustc-link-search=native={}", path); + println!("cargo:rustc-link-lib=opus"); + break; + } + } + } + + println!("cargo:rustc-link-lib=ssl"); + println!("cargo:rustc-link-lib=crypto"); + + #[cfg(target_os = "macos")] + println!("cargo:rustc-link-lib=c++"); + #[cfg(target_os = "linux")] + println!("cargo:rustc-link-lib=stdc++"); + + // ---- Generate bindings ---- + + let mut clang_args = Vec::new(); + + for path in &include_paths { + clang_args.push(format!("-I{}", path.display())); + } + + #[cfg(target_endian = "little")] + { + clang_args.push("-DPJ_IS_LITTLE_ENDIAN=1".to_string()); + clang_args.push("-DPJ_IS_BIG_ENDIAN=0".to_string()); + } + #[cfg(target_endian = "big")] + { + clang_args.push("-DPJ_IS_LITTLE_ENDIAN=0".to_string()); + clang_args.push("-DPJ_IS_BIG_ENDIAN=1".to_string()); + } + + #[cfg(target_os = "macos")] + { + clang_args.push("-DPJ_DARWINOS=1".to_string()); + clang_args.push("-DPJ_HAS_LIMITS_H=1".to_string()); + } + #[cfg(target_os = "linux")] + { + clang_args.push("-DPJ_LINUX=1".to_string()); + clang_args.push("-DPJ_HAS_LIMITS_H=1".to_string()); + } + + #[cfg(target_pointer_width = "64")] + clang_args.push("-DPJ_HAS_INT64=1".to_string()); + + clang_args.push("-DPJ_AUTOCONF=1".to_string()); + + let pjsua_header = include_paths.iter() + .find_map(|p| { + let header = p.join("pjsua-lib/pjsua.h"); + if header.exists() { + return Some(header); + } + let header = p.join("pjsua.h"); + if header.exists() { Some(header) } else { None } + }) + .expect("Could not find pjsua.h header in installed location"); + + println!("cargo:warning=Using pjsua.h from: {}", pjsua_header.display()); + println!("cargo:warning=Include paths: {:?}", include_paths); + + let bindings = bindgen::Builder::default() + .header(pjsua_header.to_str().unwrap()) + .clang_args(&clang_args) + .generate_comments(false) + .allowlist_type(r"pj.*") + .allowlist_type(r"PJ.*") + .allowlist_var(r"pj.*") + .allowlist_var(r"PJ.*") + .allowlist_function(r"pj.*") + .allowlist_function(r"PJ.*") + .generate() + .expect("Unable to generate bindings"); + + let bindings_path = out_dir.join("bindings.rs"); + bindings + .write_to_file(&bindings_path) + .expect("Couldn't write bindings!"); + + println!("cargo:warning=Bindings written to: {}", bindings_path.display()); +} + +/// Build pjproject from source and return include paths. +fn build_from_source(out_dir: &PathBuf) -> Vec { + let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); + let pjproject_src = manifest_dir.join("pjproject"); + + let pjproject_build = out_dir.join("pjproject-build"); + let pjproject_install = out_dir.join("pjproject-install"); + + std::fs::create_dir_all(&pjproject_build).expect("Failed to create build directory"); + std::fs::create_dir_all(&pjproject_install).expect("Failed to create install directory"); + + let include_dir = pjproject_install.join("include"); + let lib_dir = pjproject_install.join("lib"); + + build_pjproject(&pjproject_src, &pjproject_build, &pjproject_install); + + let include_paths = vec![include_dir.clone()]; + let lib_paths = vec![lib_dir.clone()]; + + // Set up library paths + for path in &lib_paths { + println!("cargo:rustc-link-search=native={}", path.display()); + } + + // For built-from-source pjproject, libraries are in the build directory subdirs + let pjproject_build_for_libs = out_dir.join("pjproject-build"); + if pjproject_build_for_libs.exists() { + let lib_subdirs = [ + "pjlib", + "pjlib-util", + "pjmedia", + "pjnath", + "pjsip", + "third_party/resample", + "third_party/speex", + "third_party/g7221", + "third_party/yuv", + "third_party/gsm", + "third_party/srtp", + "third_party/ilbc", + ]; + + for subdir in &lib_subdirs { + let lib_path = pjproject_build_for_libs.join(subdir); + if lib_path.exists() { + println!("cargo:rustc-link-search=native={}", lib_path.display()); + } + } + + // Link libraries in the correct order (dependencies matter!) + let pj_libs = [ + "pjsua-lib", // main pjsua library + "pjsua2", // C++ wrapper (may be needed) + "pjsip-ua", // SIP user agent + "pjsip-simple", // SIP SIMPLE presence + "pjsip", // Core SIP + "pjmedia-codec",// Media codecs + "pjmedia", // Media framework + "pjmedia-audiodev", // Audio device + "pjnath", // NAT traversal + "pjlib-util", // Utility functions + "pjlib", // Core library + // Third party + "srtp", + "resample", + "speex", + "g7221", + "gsm", + "ilbc", + ]; + + for lib in &pj_libs { + println!("cargo:rustc-link-lib=static={}", lib); + } + } else { + // Link against pjproject libraries from install directory (static) + for lib_path in &lib_paths { + if let Ok(entries) = std::fs::read_dir(lib_path) { + for entry in entries.flatten() { + let path = entry.path(); + if let Some(ext) = path.extension() { + if ext == "a" { + if let Some(name) = path.file_stem() { + let name = name.to_string_lossy(); + if name.starts_with("lib") { + let lib_name = name.strip_prefix("lib").unwrap(); + println!("cargo:rustc-link-lib=static={}", lib_name); + } + } + } + } + } + } + } + } + + include_paths +} + +fn build_pjproject(pjproject_src: &std::path::Path, pjproject_build: &std::path::Path, pjproject_install: &std::path::Path) { + // Check for .pc file in build dir (CMake install doesn't always copy it to install dir) + let pc_file = pjproject_build.join("libpjproject.pc"); + + if !pc_file.exists() { + println!("cargo:warning=Building pjproject from source (this may take several minutes)..."); + + // Detect cross-compilation target + let target = env::var("TARGET").unwrap_or_default(); + let host = env::var("HOST").unwrap_or_default(); + let is_cross = target != host; + + // Collect C/CXX flags — merged at the end into CMAKE_C_FLAGS/CMAKE_CXX_FLAGS. + // pjsua.h guards PJSUA_MAX_CALLS with #ifndef, so -D on the command line wins. + let mut c_flags: Vec<&str> = vec!["-DPJSUA_MAX_CALLS=128"]; + + let mut cmake_args = vec![ + "-G".to_string(), "Unix Makefiles".to_string(), + format!("-DCMAKE_INSTALL_PREFIX={}", pjproject_install.display()), + "-DCMAKE_BUILD_TYPE=Release".to_string(), + "-DBUILD_SHARED_LIBS=OFF".to_string(), + "-DPJ_SKIP_EXPERIMENTAL_NOTICE=ON".to_string(), + // Disable tests to avoid linking issues with cross-compilation + "-DPJ_ENABLE_TESTS=OFF".to_string(), + "-DBUILD_TESTING=OFF".to_string(), + // Disable video support + "-DPJMEDIA_WITH_VIDEO=OFF".to_string(), + "-DPJMEDIA_WITH_FFMPEG=OFF".to_string(), + "-DPJMEDIA_WITH_LIBYUV=OFF".to_string(), + // Enable AMR codecs (IMS/MR-NB support) + "-DPJMEDIA_WITH_OPENCORE_AMRNB_CODEC=ON".to_string(), + "-DPJMEDIA_WITH_OPENCORE_AMRWB_CODEC=ON".to_string(), + // Enable Opus codec + "-DPJMEDIA_WITH_OPUS_CODEC=ON".to_string(), + // Enable TLS/SSL support with OpenSSL + "-DPJLIB_WITH_SSL=openssl".to_string(), + ]; + + // Configure cross-compilation toolchain + if is_cross { + println!("cargo:warning=Cross-compiling for {} from {}", target, host); + + // Map Rust target to cross-compiler prefix + let cross_prefix = match target.as_str() { + "aarch64-unknown-linux-gnu" => "aarch64-linux-gnu", + "x86_64-unknown-linux-gnu" => "x86_64-linux-gnu", + _ => "", + }; + + if !cross_prefix.is_empty() { + let cc = format!("{}-gcc", cross_prefix); + let cxx = format!("{}-g++", cross_prefix); + + // Check if cross-compiler exists + if std::process::Command::new("which").arg(&cc).output().map(|o| o.status.success()).unwrap_or(false) { + cmake_args.push(format!("-DCMAKE_C_COMPILER={}", cc)); + cmake_args.push(format!("-DCMAKE_CXX_COMPILER={}", cxx)); + println!("cargo:warning=Using cross-compiler: {}", cc); + + // ARM64: Fix atomic alignment issues + // 1. -mno-outline-atomics: Use inline atomics instead of helper functions + // 2. -DPJ_POOL_ALIGNMENT=8: Force pjlib pool to use 8-byte alignment (C define) + if target.contains("aarch64") { + c_flags.push("-mno-outline-atomics"); + c_flags.push("-DPJ_POOL_ALIGNMENT=8"); + println!("cargo:warning=ARM64: Using inline atomics with 8-byte pool alignment"); + } + + // The cross-compiler (from crossbuild-essential-arm64) has --sysroot=/usr/aarch64-linux-gnu + // baked into its specs, but the actual libraries are in /usr/lib/aarch64-linux-gnu/ + // via Debian's multiarch. We must override the sysroot to "/" so the linker + // finds libc at /lib/aarch64-linux-gnu/ instead of the non-existent + // /usr/aarch64-linux-gnu/lib/libc.so.6 + cmake_args.push("-DCMAKE_SYSROOT=/".to_string()); + println!("cargo:warning=Overriding sysroot to / for multiarch compatibility"); + + // Help CMake find cross-compiled libraries in multiarch paths + let multiarch_lib = format!("/usr/lib/{}", cross_prefix); + if std::path::Path::new(&multiarch_lib).exists() { + cmake_args.push(format!("-DCMAKE_FIND_ROOT_PATH=/usr;{}", multiarch_lib)); + cmake_args.push("-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH".to_string()); + cmake_args.push("-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH".to_string()); + cmake_args.push("-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER".to_string()); + println!("cargo:warning=Using multiarch library path: {}", multiarch_lib); + + // Explicitly set OpenSSL paths for cross-compilation + let openssl_ssl = format!("{}/libssl.so", multiarch_lib); + let openssl_crypto = format!("{}/libcrypto.so", multiarch_lib); + if std::path::Path::new(&openssl_ssl).exists() { + cmake_args.push("-DOPENSSL_ROOT_DIR=/usr".to_string()); + cmake_args.push("-DOPENSSL_INCLUDE_DIR=/usr/include".to_string()); + cmake_args.push(format!("-DOPENSSL_SSL_LIBRARY={}", openssl_ssl)); + cmake_args.push(format!("-DOPENSSL_CRYPTO_LIBRARY={}", openssl_crypto)); + println!("cargo:warning=Using cross-compiled OpenSSL from {}", multiarch_lib); + } + + // Explicitly set Opus paths for cross-compilation + let opus_lib = format!("{}/libopus.so", multiarch_lib); + if std::path::Path::new(&opus_lib).exists() { + cmake_args.push("-DOPUS_INCLUDE_DIR=/usr/include".to_string()); + cmake_args.push(format!("-DOPUS_LIBRARY={}", opus_lib)); + println!("cargo:warning=Using cross-compiled Opus from {}", multiarch_lib); + } + } + } + } + } else { + // Native build - find OpenSSL in standard locations + let openssl_prefixes = if cfg!(target_os = "macos") { + vec![ + "/opt/homebrew/opt/openssl@3", + "/opt/homebrew/opt/openssl", + "/usr/local/opt/openssl@3", + "/usr/local/opt/openssl", + ] + } else { + vec!["/usr", "/usr/local"] + }; + + for prefix in &openssl_prefixes { + let include_path = format!("{}/include", prefix); + if std::path::Path::new(&include_path).join("openssl/ssl.h").exists() { + println!("cargo:warning=Found OpenSSL at: {}", prefix); + cmake_args.push(format!("-DOPENSSL_ROOT_DIR={}", prefix)); + if cfg!(target_os = "macos") { + cmake_args.push(format!("-DOPENSSL_INCLUDE_DIR={}", include_path)); + let lib_path = format!("{}/lib", prefix); + let static_crypto = format!("{}/libcrypto.a", lib_path); + let static_ssl = format!("{}/libssl.a", lib_path); + if std::path::Path::new(&static_crypto).exists() { + cmake_args.push(format!("-DOPENSSL_CRYPTO_LIBRARY={}", static_crypto)); + cmake_args.push(format!("-DOPENSSL_SSL_LIBRARY={}", static_ssl)); + } + } + break; + } + } + + // Native build - find Opus codec library + let opus_prefixes = if cfg!(target_os = "macos") { + vec![ + "/opt/homebrew/opt/opus", + "/usr/local/opt/opus", + ] + } else { + vec!["/usr", "/usr/local"] + }; + + for prefix in &opus_prefixes { + let include_path = format!("{}/include", prefix); + if std::path::Path::new(&include_path).join("opus/opus.h").exists() { + println!("cargo:warning=Found Opus at: {}", prefix); + cmake_args.push(format!("-DOPUS_INCLUDE_DIR={}", include_path)); + let lib_path = format!("{}/lib", prefix); + let opus_lib = if cfg!(target_os = "macos") { + format!("{}/libopus.a", lib_path) + } else { + format!("{}/libopus.so", lib_path) + }; + if std::path::Path::new(&opus_lib).exists() { + cmake_args.push(format!("-DOPUS_LIBRARY={}", opus_lib)); + } + break; + } + } + } + + // Merge all collected C/CXX flags into cmake args + if !c_flags.is_empty() { + let flags = c_flags.join(" "); + println!("cargo:warning=C flags: {}", flags); + cmake_args.push(format!("-DCMAKE_C_FLAGS={}", flags)); + cmake_args.push(format!("-DCMAKE_CXX_FLAGS={}", flags)); + } + + cmake_args.push(pjproject_src.to_str().unwrap().to_string()); + + // Run CMake configure + let cmake_result = Command::new("cmake") + .current_dir(pjproject_build) + .args(&cmake_args) + .output() + .expect("Failed to run cmake configure"); + + if !cmake_result.status.success() { + eprintln!("CMake configure stdout: {}", String::from_utf8_lossy(&cmake_result.stdout)); + eprintln!("CMake configure stderr: {}", String::from_utf8_lossy(&cmake_result.stderr)); + panic!("CMake configure failed"); + } + + // Get number of CPUs for parallel build + let num_cpus = std::thread::available_parallelism() + .map(|n| n.get()) + .unwrap_or(4); + + // Run CMake build - only build the libraries we need, not sample apps + println!("cargo:warning=Compiling pjproject with {} threads...", num_cpus); + let mut build_args = vec![ + "--build".to_string(), ".".to_string(), + "--config".to_string(), "Release".to_string(), + ]; + + // Specify only the library targets we need + let targets = [ + "pjlib", "pjlib-util", "pjnath", "pjmedia", "pjmedia-audiodev", + "pjmedia-codec", "pjsip", "pjsip-simple", "pjsip-ua", "pjsua-lib", "pjsua2", + "resample", "srtp", "speex", "g7221", "gsm", "ilbc", + ]; + for target in &targets { + build_args.push("--target".to_string()); + build_args.push(target.to_string()); + } + build_args.push("-j".to_string()); + build_args.push(num_cpus.to_string()); + + let build_result = Command::new("cmake") + .current_dir(pjproject_build) + .args(&build_args) + .output() + .expect("Failed to run cmake build"); + + if !build_result.status.success() { + eprintln!("CMake build stdout: {}", String::from_utf8_lossy(&build_result.stdout)); + eprintln!("CMake build stderr: {}", String::from_utf8_lossy(&build_result.stderr)); + panic!("CMake build failed"); + } + println!("cargo:warning=Library builds complete"); + + // Run CMake install - may fail for sample apps but that's OK + let install_result = Command::new("cmake") + .current_dir(pjproject_build) + .args(["--install", "."]) + .output() + .expect("Failed to run cmake install"); + + if !install_result.status.success() { + // Install might fail for sample apps we didn't build, but libraries are installed + println!("cargo:warning=CMake install had errors (OK if only sample apps failed)"); + } + + println!("cargo:warning=pjproject build complete!"); + } else { + println!("cargo:warning=Using cached pjproject build"); + } +} diff --git a/pjsua/pjproject b/pjsua/pjproject new file mode 160000 index 0000000..9caa8d4 --- /dev/null +++ b/pjsua/pjproject @@ -0,0 +1 @@ +Subproject commit 9caa8d4ef5374650cb4d6e06080e854ea5ea339b diff --git a/pjsua/src/lib.rs b/pjsua/src/lib.rs new file mode 100644 index 0000000..5a87e31 --- /dev/null +++ b/pjsua/src/lib.rs @@ -0,0 +1,17 @@ +//! Rust bindings for pjsua (pjproject SIP library) +//! +//! This crate provides low-level FFI bindings to pjsua, generated via bindgen. +//! The pjproject library is built from source automatically if not found on the system. + +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(improper_ctypes)] +#![allow(clippy::all)] + +mod pjsua { + #![allow(unnecessary_transmutes)] + include!(concat!(env!("OUT_DIR"), "/bindings.rs")); +} + +pub use pjsua::*; diff --git a/sipcord-bridge/Cargo.toml b/sipcord-bridge/Cargo.toml new file mode 100644 index 0000000..e3a20ec --- /dev/null +++ b/sipcord-bridge/Cargo.toml @@ -0,0 +1,113 @@ +[package] +name = "sipcord-bridge" +version = "1.5.5" +edition = "2021" +publish = false + +[[bin]] +name = "sipcord-bridge" +path = "src/main.rs" + +[lib] +name = "sipcord_bridge" +path = "src/lib.rs" + +[dependencies] +# Async runtime +tokio = { version = "1.49.0", features = ["full"] } +tokio-util = "0.7" + +# Discord +serenity = { git = "https://github.com/serenity-rs/serenity", default-features = false, features = [ + "default_no_backend", + "rustls_backend", + "voice", + "model", + "framework", +] , branch = "next"} +songbird = { version = "0.5.0", git = "https://github.com/jtscuba/songbird", features = ["driver", "gateway", "receive", "tungstenite"] , branch = "davey" } +poise = { version = "0.6.1", git = "https://github.com/serenity-rs/poise", branch = "serenity-next"} + +# HTTP client for API calls +reqwest = { version = "0.13.1", default-features = false, features = [ + "json", + "multipart", + "rustls", +] } + +# Serialization +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.149" + +# Audio processing +audiopus = "0.3.0-rc.0" +rubato = "1.0.1" +audioadapter = "2.0.0" +audioadapter-buffers = "2.0.0" + +# Symphonia with PCM codec for RawAdapter support in Songbird +symphonia = { version = "0.5.5", default-features = false, features = [ + "pcm", + "flac", +] } + +# FLAC decoder +claxon = "0.4.3" + +# SIP - using pjsua bindings (builds pjproject from pjsua/pjproject submodule) +pjsua = { path = "../pjsua" } + +# SpanDSP - fax demodulation +spandsp = "0.1.5" + +# UDPTL transport for T.38 fax +udptl = "0.1.0" + +# Image conversion (fax TIFF -> PNG for Discord) +image = { version = "0.25", default-features = false, features = [ + "png", + "jpeg", +] } + +# Networking +ipnet = "2.11.0" + +# Lock-free ring buffer for real-time audio +rtrb = "0.3.2" + +# Async trait for dyn Backend +async-trait = "0.1" + +# Utilities +anyhow = "1.0.100" +thiserror = "2.0.18" +tracing = "0.1.44" +tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } +parking_lot = "0.12.5" +crossbeam-channel = "0.5.15" +bytes = "1.11.1" +byteorder = "1.5.0" +symphonia-core = "0.5.5" +dashmap = "6.1.0" +moka = { version = "0.12.13", features = ["sync"] } + +# Crypto (MD5 for SIP digest auth cache verification, rand for nonces) +md-5 = "0.10" +rand = "0.9" + +# Configuration +dotenvy = "0.15.7" +envy = "0.4" +base64 = "0.22.1" +toml = "0.9.11" + +# Date/time handling +chrono = { version = "0.4.43", features = ["serde"] } + +# TLS - explicit crypto provider for rustls 0.23+ +rustls = { version = "0.23", default-features = false, features = [ + "ring", + "std", + "tls12", +] } +crossbeam-queue = "0.3.12" diff --git a/sipcord-bridge/src/audio/flac.rs b/sipcord-bridge/src/audio/flac.rs new file mode 100644 index 0000000..f8cbfc6 --- /dev/null +++ b/sipcord-bridge/src/audio/flac.rs @@ -0,0 +1,73 @@ +//! FLAC file parsing +//! +//! Parses FLAC file bytes to extract raw PCM i16 samples. + +use anyhow::{bail, Context}; +use tracing::debug; + +/// Parse a FLAC file and return the raw PCM i16 samples (mono). +/// +/// Handles: +/// - Standard FLAC files +/// - Stereo to mono conversion (if needed) +/// - Various bit depths (converted to 16-bit) +pub fn parse_flac(data: &[u8]) -> anyhow::Result<(Vec, u32)> { + let cursor = std::io::Cursor::new(data); + let mut reader = claxon::FlacReader::new(cursor).context("Failed to create FLAC reader")?; + + let info = reader.streaminfo(); + let sample_rate = info.sample_rate; + let num_channels = info.channels as usize; + let bits_per_sample = info.bits_per_sample; + + debug!( + "FLAC format: {}Hz, {} channels, {} bits per sample", + sample_rate, num_channels, bits_per_sample + ); + + // Read all samples + let mut raw_samples: Vec = Vec::new(); + for sample in reader.samples() { + raw_samples.push(sample.context("Failed to read FLAC sample")?); + } + + // Convert to i16 based on bit depth + let samples_i16: Vec = match bits_per_sample { + 8 => raw_samples.iter().map(|&s| (s << 8) as i16).collect(), + 16 => raw_samples.iter().map(|&s| s as i16).collect(), + 24 => raw_samples.iter().map(|&s| (s >> 8) as i16).collect(), + 32 => raw_samples.iter().map(|&s| (s >> 16) as i16).collect(), + _ => bail!("Unsupported FLAC bit depth: {}", bits_per_sample), + }; + + // Convert to mono if stereo (samples are interleaved) + let mono_samples = if num_channels == 2 { + samples_i16 + .chunks(2) + .map(|chunk| { + if chunk.len() == 2 { + ((chunk[0] as i32 + chunk[1] as i32) / 2) as i16 + } else { + chunk[0] + } + }) + .collect() + } else if num_channels > 2 { + // For more than 2 channels, take first channel only + samples_i16 + .chunks(num_channels) + .map(|chunk| chunk[0]) + .collect() + } else { + samples_i16 + }; + + debug!( + "FLAC data: {} samples ({}Hz, {} channels -> mono)", + mono_samples.len(), + sample_rate, + num_channels + ); + + Ok((mono_samples, sample_rate)) +} diff --git a/sipcord-bridge/src/audio/mod.rs b/sipcord-bridge/src/audio/mod.rs new file mode 100644 index 0000000..5fa5b20 --- /dev/null +++ b/sipcord-bridge/src/audio/mod.rs @@ -0,0 +1,8 @@ +//! Audio parsing utilities +//! +//! This module provides audio file parsing for WAV and FLAC formats. +//! Used by the `sound` module for loading audio files from disk. + +pub mod flac; +pub mod simd; +pub mod wav; diff --git a/sipcord-bridge/src/audio/simd.rs b/sipcord-bridge/src/audio/simd.rs new file mode 100644 index 0000000..afd5132 --- /dev/null +++ b/sipcord-bridge/src/audio/simd.rs @@ -0,0 +1,260 @@ +//! SIMD-accelerated audio processing utilities +//! +//! Uses portable_simd for cross-platform support (x86_64 SSE/AVX, aarch64 NEON). +//! Falls back to scalar code for unsupported platforms. + +use std::simd::{cmp::SimdOrd, i16x8, i32x8, num::SimdInt}; + +/// SIMD-accelerated max absolute value for i16 samples. +/// +/// Processes 8 samples at a time using SIMD, with scalar fallback for remainder. +/// This is the hot path for Voice Activity Detection (VAD). +/// +/// # Performance +/// - x86_64: Uses SSE2/AVX2 instructions (vpabsw, pmaxsw) +/// - aarch64: Uses NEON instructions +/// - Expected speedup: 4-8x vs scalar +#[inline] +pub fn max_abs_i16(samples: &[i16]) -> i16 { + if samples.is_empty() { + return 0; + } + + let chunks = samples.chunks_exact(8); + let remainder = chunks.remainder(); + + let mut max_vec = i16x8::splat(0); + for chunk in chunks { + let v = i16x8::from_slice(chunk); + // Handle i16::MIN specially since abs(i16::MIN) overflows + // For audio samples this is rare, but we handle it correctly + let abs_v = v.abs(); + max_vec = max_vec.simd_max(abs_v); + } + + // Horizontal max reduction + let mut result = max_vec.reduce_max(); + + // Process remainder with scalar code + for &s in remainder { + result = result.max(s.saturating_abs()); + } + + result +} + +/// SIMD-accelerated widen i16 to i32 (first speaker — overwrites dst). +/// +/// Processes 8 samples at a time. Used for the first speaker in mixing. +#[inline] +pub fn widen_i16_to_i32(src: &[i16], dst: &mut [i32]) { + let len = src.len().min(dst.len()); + let chunks_src = src[..len].chunks_exact(8); + let chunks_dst = dst[..len].chunks_exact_mut(8); + let remainder_start = chunks_src.remainder().len(); + + for (src_chunk, dst_chunk) in chunks_src.zip(chunks_dst) { + let v = i16x8::from_slice(src_chunk); + // Widen i16 -> i32 by casting each lane + let wide: [i32; 8] = [ + v[0] as i32, + v[1] as i32, + v[2] as i32, + v[3] as i32, + v[4] as i32, + v[5] as i32, + v[6] as i32, + v[7] as i32, + ]; + dst_chunk.copy_from_slice(&wide); + } + + // Scalar remainder + let start = len - remainder_start; + for i in start..len { + dst[i] = src[i] as i32; + } +} + +/// SIMD-accelerated accumulate i16 into i32 (mix additional speakers — adds to dst). +/// +/// Processes 8 samples at a time. Used for mixing additional speakers. +#[inline] +pub fn accumulate_i16_to_i32(src: &[i16], dst: &mut [i32]) { + let len = src.len().min(dst.len()); + let chunks_src = src[..len].chunks_exact(8); + let chunks_dst = dst[..len].chunks_exact_mut(8); + let remainder_start = chunks_src.remainder().len(); + + for (src_chunk, dst_chunk) in chunks_src.zip(chunks_dst) { + let v = i16x8::from_slice(src_chunk); + let dst_v = i32x8::from_slice(dst_chunk); + let wide = i32x8::from_array([ + v[0] as i32, + v[1] as i32, + v[2] as i32, + v[3] as i32, + v[4] as i32, + v[5] as i32, + v[6] as i32, + v[7] as i32, + ]); + let sum = dst_v + wide; + dst_chunk.copy_from_slice(sum.as_array()); + } + + // Scalar remainder + let start = len - remainder_start; + for i in start..len { + dst[i] += src[i] as i32; + } +} + +/// SIMD-accelerated clamp i32 to i16 with saturation. +/// +/// Processes 8 samples at a time. Clamps values to i16 range [-32768, 32767]. +#[inline] +pub fn clamp_i32_to_i16(src: &[i32], dst: &mut [i16]) { + let len = src.len().min(dst.len()); + let chunks_src = src[..len].chunks_exact(8); + let chunks_dst = dst[..len].chunks_exact_mut(8); + let remainder_start = chunks_src.remainder().len(); + + let min_val = i32x8::splat(-32768); + let max_val = i32x8::splat(32767); + + for (src_chunk, dst_chunk) in chunks_src.zip(chunks_dst) { + let v = i32x8::from_slice(src_chunk); + let clamped = v.simd_max(min_val).simd_min(max_val); + let narrow: [i16; 8] = [ + clamped[0] as i16, + clamped[1] as i16, + clamped[2] as i16, + clamped[3] as i16, + clamped[4] as i16, + clamped[5] as i16, + clamped[6] as i16, + clamped[7] as i16, + ]; + dst_chunk.copy_from_slice(&narrow); + } + + // Scalar remainder + let start = len - remainder_start; + for i in start..len { + dst[i] = src[i].clamp(-32768, 32767) as i16; + } +} + +/// SIMD-accelerated stereo to mono conversion. +/// +/// Averages adjacent sample pairs (L, R) -> (L+R)/2. +/// `stereo` length must be even. `mono` must be at least `stereo.len() / 2`. +#[inline] +pub fn stereo_to_mono_i16(stereo: &[i16], mono: &mut [i16]) { + let mono_len = (stereo.len() / 2).min(mono.len()); + + // Process 8 mono samples at a time (16 stereo samples) + let mut i = 0; + while i + 8 <= mono_len { + let si = i * 2; + // Load 16 stereo samples as two i16x8 vectors + let v0 = i16x8::from_slice(&stereo[si..si + 8]); + let v1 = i16x8::from_slice(&stereo[si + 8..si + 16]); + + // Deinterleave: extract even (left) and odd (right) samples + let left = i16x8::from_array([v0[0], v0[2], v0[4], v0[6], v1[0], v1[2], v1[4], v1[6]]); + let right = i16x8::from_array([v0[1], v0[3], v0[5], v0[7], v1[1], v1[3], v1[5], v1[7]]); + + // Average: (l + r) / 2 — use arithmetic shift to avoid overflow + // (l >> 1) + (r >> 1) + ((l & r) & 1) for exact rounding + let avg = (left >> i16x8::splat(1)) + (right >> i16x8::splat(1)); + mono[i..i + 8].copy_from_slice(avg.as_array()); + i += 8; + } + + // Scalar remainder + while i < mono_len { + let l = stereo[i * 2] as i32; + let r = stereo[i * 2 + 1] as i32; + mono[i] = ((l + r) / 2) as i16; + i += 1; + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_max_abs_i16_basic() { + let samples = [1, -5, 3, -2, 4, -10, 7, -8, 100]; + assert_eq!(max_abs_i16(&samples), 100); + } + + #[test] + fn test_max_abs_i16_negative_max() { + let samples = [1, -500, 3, -2]; + assert_eq!(max_abs_i16(&samples), 500); + } + + #[test] + fn test_max_abs_i16_empty() { + let samples: [i16; 0] = []; + assert_eq!(max_abs_i16(&samples), 0); + } + + #[test] + fn test_max_abs_i16_aligned() { + // Exactly 8 samples (one SIMD vector) + let samples = [100, -200, 300, -400, 500, -600, 700, -800]; + assert_eq!(max_abs_i16(&samples), 800); + } + + #[test] + fn test_widen_i16_to_i32() { + let src: Vec = (0..20).map(|i| (i * 100 - 1000) as i16).collect(); + let mut dst = vec![0i32; 20]; + widen_i16_to_i32(&src, &mut dst); + for i in 0..20 { + assert_eq!(dst[i], src[i] as i32, "mismatch at index {}", i); + } + } + + #[test] + fn test_accumulate_i16_to_i32() { + let src = [100i16, -200, 300, -400, 500, -600, 700, -800, 900]; + let mut dst = [1i32, 2, 3, 4, 5, 6, 7, 8, 9]; + accumulate_i16_to_i32(&src, &mut dst); + assert_eq!(dst, [101, -198, 303, -396, 505, -594, 707, -792, 909]); + } + + #[test] + fn test_clamp_i32_to_i16() { + let src = [0i32, 32767, -32768, 40000, -40000, 100, -100, 0, 12345]; + let mut dst = [0i16; 9]; + clamp_i32_to_i16(&src, &mut dst); + assert_eq!(dst, [0, 32767, -32768, 32767, -32768, 100, -100, 0, 12345]); + } + + #[test] + fn test_stereo_to_mono() { + // 20 stereo samples -> 10 mono + let stereo: Vec = (0..20).map(|i| (i * 100) as i16).collect(); + let mut mono = vec![0i16; 10]; + stereo_to_mono_i16(&stereo, &mut mono); + for i in 0..10 { + let l = stereo[i * 2] as i32; + let r = stereo[i * 2 + 1] as i32; + let expected = ((l + r) / 2) as i16; + // Allow +-1 for rounding differences between SIMD and scalar + assert!( + (mono[i] as i32 - expected as i32).abs() <= 1, + "mismatch at {}: got {} expected {}", + i, + mono[i], + expected + ); + } + } +} diff --git a/sipcord-bridge/src/audio/wav.rs b/sipcord-bridge/src/audio/wav.rs new file mode 100644 index 0000000..f2efe16 --- /dev/null +++ b/sipcord-bridge/src/audio/wav.rs @@ -0,0 +1,206 @@ +//! WAV file parsing +//! +//! Parses WAV file bytes to extract raw PCM i16 samples. +//! Supports standard PCM WAV files (format code 1). + +use anyhow::ensure; +use tracing::debug; + +/// WAV format chunk data +#[derive(Debug)] +struct WavFormat { + /// Audio format (1 = PCM) + audio_format: u16, + /// Number of channels + num_channels: u16, + /// Sample rate in Hz + sample_rate: u32, + /// Bits per sample (typically 16) + bits_per_sample: u16, +} + +/// Parse a WAV file and return the raw PCM i16 samples (mono). +/// +/// Handles: +/// - Standard PCM WAV files (format code 1) +/// - Stereo to mono conversion (if needed) +/// - 16-bit samples +pub fn parse_wav(data: &[u8]) -> anyhow::Result<(Vec, u32)> { + // Validate RIFF header + ensure!(data.len() >= 12, "WAV file too short for header"); + ensure!(&data[0..4] == b"RIFF", "Missing RIFF header"); + ensure!(&data[8..12] == b"WAVE", "Missing WAVE format"); + + let mut pos = 12; + let mut format: Option = None; + let mut samples: Vec = Vec::new(); + + // Parse chunks + while pos + 8 <= data.len() { + let chunk_id = &data[pos..pos + 4]; + let chunk_size = + u32::from_le_bytes([data[pos + 4], data[pos + 5], data[pos + 6], data[pos + 7]]) + as usize; + pos += 8; + + match chunk_id { + b"fmt " => { + ensure!(chunk_size >= 16, "fmt chunk too small"); + format = Some(WavFormat { + audio_format: u16::from_le_bytes([data[pos], data[pos + 1]]), + num_channels: u16::from_le_bytes([data[pos + 2], data[pos + 3]]), + sample_rate: u32::from_le_bytes([ + data[pos + 4], + data[pos + 5], + data[pos + 6], + data[pos + 7], + ]), + // Skip byte rate (4 bytes) and block align (2 bytes) + bits_per_sample: u16::from_le_bytes([data[pos + 14], data[pos + 15]]), + }); + debug!("WAV format: {:?}", format); + } + b"data" => { + let fmt = format.as_ref().ok_or_else(|| anyhow::anyhow!("data chunk before fmt chunk"))?; + ensure!(fmt.audio_format == 1, "Only PCM format supported"); + ensure!(fmt.bits_per_sample == 16, "Only 16-bit samples supported"); + + let data_end = (pos + chunk_size).min(data.len()); + let sample_data = &data[pos..data_end]; + + // Parse i16 samples + let raw_samples: Vec = sample_data + .chunks_exact(2) + .map(|chunk| i16::from_le_bytes([chunk[0], chunk[1]])) + .collect(); + + // Convert to mono if stereo + samples = if fmt.num_channels == 2 { + raw_samples + .chunks(2) + .map(|chunk| { + if chunk.len() == 2 { + ((chunk[0] as i32 + chunk[1] as i32) / 2) as i16 + } else { + chunk[0] + } + }) + .collect() + } else { + raw_samples + }; + + debug!( + "WAV data: {} samples ({}Hz, {} channels -> mono)", + samples.len(), + fmt.sample_rate, + fmt.num_channels + ); + } + _ => { + // Skip unknown chunks + debug!("Skipping WAV chunk: {:?}", std::str::from_utf8(chunk_id)); + } + } + + // Move to next chunk (chunks are word-aligned) + pos += chunk_size; + if !chunk_size.is_multiple_of(2) { + pos += 1; + } + } + + let sample_rate = format + .as_ref() + .map(|f| f.sample_rate) + .ok_or_else(|| anyhow::anyhow!("No fmt chunk found"))?; + + Ok((samples, sample_rate)) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_parse_simple_wav() { + // Minimal valid WAV with 4 samples of silence + let wav = [ + // RIFF header + b'R', b'I', b'F', b'F', // "RIFF" + 0x2C, 0x00, 0x00, 0x00, // File size - 8 = 44 + b'W', b'A', b'V', b'E', // "WAVE" + // fmt chunk + b'f', b'm', b't', b' ', // "fmt " + 0x10, 0x00, 0x00, 0x00, // Chunk size = 16 + 0x01, 0x00, // Audio format = 1 (PCM) + 0x01, 0x00, // Num channels = 1 (mono) + 0x80, 0x3E, 0x00, 0x00, // Sample rate = 16000 + 0x00, 0x7D, 0x00, 0x00, // Byte rate = 32000 + 0x02, 0x00, // Block align = 2 + 0x10, 0x00, // Bits per sample = 16 + // data chunk + b'd', b'a', b't', b'a', // "data" + 0x08, 0x00, 0x00, 0x00, // Chunk size = 8 bytes = 4 samples + 0x00, 0x00, // Sample 0 = 0 + 0x00, 0x10, // Sample 1 = 4096 + 0x00, 0x20, // Sample 2 = 8192 + 0x00, 0x30, // Sample 3 = 12288 + ]; + + let (samples, rate) = parse_wav(&wav).unwrap(); + assert_eq!(rate, 16000); + assert_eq!(samples.len(), 4); + assert_eq!(samples[0], 0); + assert_eq!(samples[1], 4096); + assert_eq!(samples[2], 8192); + assert_eq!(samples[3], 12288); + } + + #[test] + fn test_parse_wav_too_short() { + let result = parse_wav(&[0u8; 4]); + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains("too short")); + } + + #[test] + fn test_parse_wav_wrong_magic() { + let mut data = [0u8; 44]; + data[0..4].copy_from_slice(b"NOPE"); + let result = parse_wav(&data); + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains("RIFF")); + } + + #[test] + fn test_parse_stereo_wav() { + // Stereo WAV: 2 stereo sample frames = 4 raw samples -> 2 mono samples + let wav = [ + // RIFF header + b'R', b'I', b'F', b'F', 0x2C, 0x00, 0x00, 0x00, // File size - 8 + b'W', b'A', b'V', b'E', // fmt chunk + b'f', b'm', b't', b' ', 0x10, 0x00, 0x00, 0x00, // Chunk size = 16 + 0x01, 0x00, // PCM + 0x02, 0x00, // 2 channels (stereo) + 0x80, 0x3E, 0x00, 0x00, // 16000 Hz + 0x00, 0xFA, 0x00, 0x00, // Byte rate = 64000 + 0x04, 0x00, // Block align = 4 + 0x10, 0x00, // 16 bits + // data chunk + b'd', b'a', b't', b'a', 0x08, 0x00, 0x00, 0x00, // 8 bytes = 2 stereo frames + // Frame 1: L=1000, R=3000 -> mono = 2000 + 0xE8, 0x03, // 1000 LE + 0xB8, 0x0B, // 3000 LE + // Frame 2: L=-100, R=100 -> mono = 0 + 0x9C, 0xFF, // -100 LE + 0x64, 0x00, // 100 LE + ]; + + let (samples, rate) = parse_wav(&wav).unwrap(); + assert_eq!(rate, 16000); + assert_eq!(samples.len(), 2); + assert_eq!(samples[0], 2000); + assert_eq!(samples[1], 0); + } +} diff --git a/sipcord-bridge/src/call/mod.rs b/sipcord-bridge/src/call/mod.rs new file mode 100644 index 0000000..33ff721 --- /dev/null +++ b/sipcord-bridge/src/call/mod.rs @@ -0,0 +1,2078 @@ +//! Audio bridge between SIP and Discord +//! +//! Architecture: +//! - ChannelBridge: One per Discord voice channel, shared by multiple SIP callers +//! - SipCallInfo: Tracks which channel each SIP call is connected to +//! +//! New Call Flow (with 183 Session Progress): +//! 1. SIP call comes in with Digest auth → SipEvent::IncomingCall +//! 2. Send 183 Session Progress (establishes early media) +//! 3. Start playing "connecting" sound in loop +//! 4. Bridge routes call via Backend → gets channel_id and bot_token +//! 5. Connect to Discord +//! 6. Stop connecting loop, play discord_join sound, send 200 OK +//! 7. When caller hangs up, remove from bridge +//! 8. When last caller leaves, destroy the bridge (disconnect bot) + +use crate::fax::session::FaxSession; +use crate::fax::spandsp::FaxT38Receiver; +use crate::routing::{Backend, CallError, CallStartedInfo, OutboundCallRequest, RouteDecision}; +use crate::services::snowflake::Snowflake; +use crate::services::sound::{create_sound_manager, SoundManager}; +use crate::transport::discord::{ + register_discord_to_sip_producer, unregister_discord_to_sip_producer, DiscordEvent, + DiscordVoiceConnection, SharedDiscordClient, +}; +use crate::transport::sip::{ + cleanup_channel_port, clear_channel_stale_audio, empty_bridge_grace_period_secs, + register_call_channel, register_discord_to_sip, stop_loop, unregister_call_channel, + unregister_discord_to_sip, CallId, SipCommand, SipEvent, CONF_SAMPLE_RATE, +}; +use anyhow::Result; +use crossbeam_channel::{bounded, Receiver, Sender}; +use dashmap::{DashMap, DashSet}; +use std::collections::HashSet; +use std::path::PathBuf; +use std::sync::Arc; +use std::time::{Duration, Instant}; +use tokio::sync::Notify; +use tokio_util::sync::CancellationToken; +use tracing::{debug, error, info, trace, warn}; +use udptl::AsyncUdptlSocket; + +/// Ring buffer capacity for Discord→SIP audio (i16 mono @ 16kHz). +/// 3200 samples = 200ms of audio, enough for timing jitter. +const DISCORD_TO_SIP_RING_BUFFER_SIZE: usize = 3200; + +/// Create and register bidirectional ring buffers for a channel. +/// Call this when a new ChannelBridge is created (after Discord connects). +fn setup_channel_ring_buffers(channel_id: Snowflake) { + let (producer, consumer) = rtrb::RingBuffer::new(DISCORD_TO_SIP_RING_BUFFER_SIZE); + register_discord_to_sip_producer(channel_id, producer); + register_discord_to_sip(channel_id, consumer); + info!( + "Created Discord→SIP ring buffer for channel {} (capacity={})", + channel_id, DISCORD_TO_SIP_RING_BUFFER_SIZE + ); +} + +/// Tear down ring buffers for a channel. Call when a ChannelBridge is destroyed. +fn teardown_channel_ring_buffers(channel_id: Snowflake) { + unregister_discord_to_sip_producer(channel_id); + unregister_discord_to_sip(channel_id); + clear_channel_stale_audio(channel_id); + debug!("Removed Discord→SIP ring buffer for channel {}", channel_id); +} + +/// A bridge to a Discord voice channel (shared by multiple SIP callers) +pub struct ChannelBridge { + /// Guild ID (needed for API call on bridge destruction) + pub guild_id: Snowflake, + /// The Discord voice connection (one per channel) + pub discord_connection: DiscordVoiceConnection, + /// SIP call IDs currently connected to this bridge + pub sip_calls: HashSet, + /// Bot token (stored for reference, no longer used for per-call client creation) + pub bot_token: String, + /// Last time a SIP call was active on this bridge (for orphan detection) + pub last_call_time: Instant, + /// When this bridge was created + pub created_at: Instant, + /// Number of reconnection attempts for this channel + pub reconnect_attempts: u32, + /// When the last reconnection attempt was made + pub last_reconnect_at: Option, +} + +/// Info about an active SIP call +pub struct SipCallInfo { + /// Which Discord channel this call is connected to (None if still authenticating) + pub channel_id: Option, + /// User ID from API authentication (for call tracking) + pub _user_id: Option, + /// Guild ID (for call tracking) + pub _guild_id: Option, + /// Tracking ID for outbound calls (used to report no_audio status back to DO) + pub tracking_id: Option, +} + +/// Shared state passed to per-call task handlers +#[derive(Clone)] +struct BridgeContext { + backend: Arc, + bridges: Arc>, + pending_bridges: Arc>, + /// Notify waiters when a pending bridge completes (or fails) + bridge_ready_notifiers: Arc>>, + sip_calls: Arc>, + /// Active fax sessions keyed by SIP call ID. + /// Each entry holds the session and a cancellation token for the T.38 processing task. + fax_sessions: Arc>, CancellationToken)>>, + discord_event_tx: Sender, + sip_cmd_tx: Sender, + sound_manager: Arc, + shared_discord: Arc, + /// Wakes the health check loop immediately when a Songbird driver disconnects unexpectedly. + health_check_notify: Arc, +} + +/// The main bridge coordinator +pub struct BridgeCoordinator { + backend: Arc, + sip_cmd_tx: Sender, + sip_event_rx: Receiver, + bridges: Arc>, + pending_bridges: Arc>, + bridge_ready_notifiers: Arc>>, + sip_calls: Arc>, + /// Active fax sessions keyed by SIP call ID. + /// Each entry holds the session and a cancellation token for the T.38 processing task. + fax_sessions: Arc>, CancellationToken)>>, + /// Stores outbound call requests by tracking_id so the answered handler can retrieve them. + /// Entries are cleaned on answer/fail and periodically swept for stale entries. + outbound_requests: Arc>, + discord_event_tx: Sender, + discord_event_rx: Receiver, + sound_manager: Arc, + shared_discord: Arc, +} + +impl BridgeCoordinator { + pub fn new( + backend: Arc, + sip_cmd_tx: Sender, + sip_event_rx: Receiver, + shared_discord: Arc, + ) -> Self { + let (discord_event_tx, discord_event_rx) = bounded(1000); + + // Load sounds from config.toml + let sounds_dir = PathBuf::from(&crate::config::EnvConfig::global().sounds_dir); + + let sound_manager = create_sound_manager(sounds_dir) + .expect("Failed to create SoundManager - check config.toml and sound files"); + + Self { + backend, + sip_cmd_tx, + sip_event_rx, + bridges: Arc::new(DashMap::new()), + pending_bridges: Arc::new(DashSet::new()), + bridge_ready_notifiers: Arc::new(DashMap::new()), + sip_calls: Arc::new(DashMap::new()), + fax_sessions: Arc::new(DashMap::new()), + outbound_requests: Arc::new(DashMap::new()), + discord_event_tx, + discord_event_rx, + sound_manager, + shared_discord, + } + } + + /// Run the bridge coordinator (consumes self) + pub async fn run(self) -> Result<()> { + info!("Bridge coordinator started"); + + // Shared notify: VoiceReceiver signals this on unexpected DriverDisconnect, + // waking the health check loop immediately instead of waiting for the next tick. + let health_check_notify = Arc::new(Notify::new()); + + // Build shared context for per-call task handlers + let ctx = BridgeContext { + backend: self.backend.clone(), + bridges: self.bridges.clone(), + pending_bridges: self.pending_bridges.clone(), + bridge_ready_notifiers: self.bridge_ready_notifiers.clone(), + sip_calls: self.sip_calls.clone(), + fax_sessions: self.fax_sessions.clone(), + discord_event_tx: self.discord_event_tx.clone(), + sip_cmd_tx: self.sip_cmd_tx.clone(), + sound_manager: self.sound_manager.clone(), + shared_discord: self.shared_discord.clone(), + health_check_notify: health_check_notify.clone(), + }; + + // Clone what we need for the SIP event handler + let backend_for_sip = ctx.backend.clone(); + let bridges = ctx.bridges.clone(); + let sip_calls = ctx.sip_calls.clone(); + let sip_cmd_tx = ctx.sip_cmd_tx.clone(); + let sip_event_rx = self.sip_event_rx.clone(); + let sound_manager = ctx.sound_manager.clone(); + let outbound_requests = self.outbound_requests.clone(); + + let sip_handle = tokio::spawn(async move { + let mut event_count: u64 = 0; + loop { + let Some(event) = poll_recv(&sip_event_rx, "SIP", &mut event_count).await else { + break; + }; + + match event { + SipEvent::IncomingCall { + call_id, + digest_auth, + extension, + source_ip, + } => { + info!( + "Incoming call {} from user={} to ext={} (IP: {:?})", + call_id, digest_auth.username, extension, source_ip + ); + + // Check for config-based extension sounds (easter eggs) + if let Ok(ext_num) = extension.parse::() { + if let Some(sound_name) = sound_manager.get_extension_sound(ext_num) { + info!( + "Extension {} maps to sound '{}' (call {})", + ext_num, sound_name, call_id + ); + + let sound_manager = sound_manager.clone(); + let sip_cmd_tx = sip_cmd_tx.clone(); + let sound_name = sound_name.to_string(); + + tokio::spawn(async move { + play_extension_sound_and_hangup( + call_id, + &sound_name, + &sound_manager, + &sip_cmd_tx, + ) + .await; + }); + continue; + } + } + + // Track this call + sip_calls.insert( + call_id, + SipCallInfo { + channel_id: None, + _user_id: None, + _guild_id: None, + tracking_id: None, + }, + ); + + // Verify auth with API and get channel info + let ctx = ctx.clone(); + + tokio::spawn(async move { + handle_incoming_call(ctx, call_id, *digest_auth, extension, source_ip) + .await; + }); + } + + SipEvent::CallEnded { call_id } => { + unregister_call_channel(call_id); + stop_loop(call_id); + + // Check if this was a fax call — clean up fax session + // Fax calls skip on_call_ended (no "hung up" notification) + if let Some((_, (fax_session, cancel_token))) = + ctx.fax_sessions.remove(&call_id) + { + // Cancel the T.38 processing task (if running) before locking + cancel_token.cancel(); + + // Clean up fax audio port + crate::fax::audio_port::remove_fax_audio_port(call_id); + + let mut session = fax_session.lock().await; + debug!( + "Fax call {} ended (channel={}, duration={:.1}s, audio={:.1}s)", + call_id, + session.text_channel_id, + session.created_at.elapsed().as_secs_f64(), + session.audio_duration_secs() + ); + if !session.is_finished() { + // If we received at least one page, the fax data is in the TIFF. + // The remote may have hung up after sending all pages but before + // the T.30 phase E disconnect handshake completed — this is normal. + let pages = session.pages_received(); + if pages > 0 { + debug!( + "Fax call {} ended with {} page(s) received, converting", + call_id, pages + ); + session.state = crate::fax::session::FaxState::Received; + if let Err(e) = session.convert_and_post().await { + error!( + "Failed to convert/post fax for call {}: {}", + call_id, e + ); + session + .post_failure("Failed to process received fax") + .await; + } + } else { + session + .post_failure("Caller hung up before fax completed") + .await; + } + } + sip_calls.remove(&call_id); + continue; + } + + // Voice call ended — notify backend ("hung up" notification) + let backend = backend_for_sip.clone(); + let sip_call_id_str = call_id.to_string(); + tokio::spawn(async move { + backend.on_call_ended(&sip_call_id_str).await; + }); + + if let Some((_, call_info)) = sip_calls.remove(&call_id) { + if let Some(channel_id) = call_info.channel_id { + let should_destroy = { + if let Some(mut bridge) = bridges.get_mut(&channel_id) { + bridge.sip_calls.remove(&call_id); + info!( + "Removed call {} from bridge for channel {} ({} callers remaining)", + call_id, channel_id, bridge.sip_calls.len() + ); + bridge.sip_calls.is_empty() + } else { + false + } + }; + + if should_destroy { + info!( + "Last caller left, destroying bridge for channel {}", + channel_id + ); + cleanup_channel_port(channel_id); + teardown_channel_ring_buffers(channel_id); + + if let Some((_, bridge)) = bridges.remove(&channel_id) { + bridge.discord_connection.disconnect().await; + } + } + } + } + } + + SipEvent::CallTimeout { call_id, rx_count } => { + warn!( + "Call {} timed out due to RTP inactivity (rx_count={}), forcing hangup", + call_id, rx_count + ); + + // If no audio was ever received, report no_audio to the coordinator + // so the Discord embed can show a diagnostic message + if rx_count == 0 { + if let Some(call_info) = sip_calls.get(&call_id) { + if let Some(ref tracking_id) = call_info.tracking_id { + info!( + "Call {} had zero RTP packets, reporting no_audio (tracking_id={})", + call_id, tracking_id + ); + backend_for_sip.report_call_status(tracking_id, "no_audio"); + } + } + } + + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + } + + SipEvent::OutboundCallAnswered { + tracking_id, + call_id, + } => { + info!( + "Outbound call answered: tracking_id={}, call_id={}", + tracking_id, call_id + ); + + // Check fork group: cancel sibling legs + if let Some(siblings) = + crate::transport::sip::fork_group::mark_answered(&tracking_id, call_id) + { + for sib_id in siblings { + info!( + "Cancelling sibling fork leg: call_id={} (tracking_id={})", + sib_id, tracking_id + ); + // Remove from outbound tracking so its disconnect + // callback won't emit OutboundCallFailed + crate::transport::sip::remove_outbound_tracking(sib_id); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id: sib_id }); + } + } + + backend_for_sip.report_call_status(&tracking_id, "answered"); + + let ctx = ctx.clone(); + let outbound_requests = outbound_requests.clone(); + tokio::spawn(async move { + handle_outbound_call_answered( + ctx, + outbound_requests, + tracking_id, + call_id, + ) + .await; + }); + } + + SipEvent::OutboundCallFailed { + tracking_id, + call_id: failed_call_id, + reason, + } => { + warn!( + "Outbound call failed: tracking_id={}, call_id={:?}, reason={}", + tracking_id, failed_call_id, reason + ); + + // Check fork group: only report failure when ALL legs fail + let all_failed = if let Some(cid) = failed_call_id { + crate::transport::sip::fork_group::mark_failed(&tracking_id, cid) + } else { + // No call_id means it never started - check if this was a single-contact call + true + }; + + if all_failed { + info!( + "All fork legs failed for tracking_id={}, reporting failure", + tracking_id + ); + outbound_requests.remove(&tracking_id); + backend_for_sip.report_call_status(&tracking_id, "failed"); + } else { + debug!( + "Fork leg failed but other legs still active for tracking_id={}", + tracking_id + ); + } + } + + SipEvent::T38Offered { + call_id, + remote_ip, + remote_port, + t38_version, + max_bit_rate, + rate_management, + udp_ec, + local_port, + } => { + info!( + "T.38 re-INVITE for call {}: remote={}:{}, local_port={}, version={}, rate={}bps, mgmt={}, ec={}", + call_id, remote_ip, remote_port, local_port, t38_version, max_bit_rate, rate_management, udp_ec + ); + + // Check if this call has a fax session + if let Some(entry) = ctx.fax_sessions.get(&call_id) { + let (fax_session, cancel_token) = entry.value(); + let fax_session = fax_session.clone(); + let cancel_token = cancel_token.clone(); + let sip_cmd_tx = sip_cmd_tx.clone(); + + tokio::spawn(async move { + handle_t38_switch( + call_id, + remote_ip, + remote_port, + local_port, + fax_session, + cancel_token, + sip_cmd_tx, + ) + .await; + }); + } else { + warn!( + "T.38 re-INVITE for call {} but no fax session — rejecting", + call_id + ); + // Hang up since we can't handle T.38 without a fax session + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + } + } + } + } + }); + + // Handle outbound call requests from the backend + let outbound_backend = self.backend.clone(); + let outbound_sip_cmd_tx = self.sip_cmd_tx.clone(); + let outbound_registrar = crate::services::registrar::GLOBAL_REGISTRAR.get().cloned(); + let outbound_requests_for_handler = self.outbound_requests.clone(); + + let outbound_handle = tokio::spawn(async move { + while let Some(req) = outbound_backend.next_outbound_request().await { + info!( + "Processing outbound call request: call_id={}, user={}", + req.call_id, req.discord_username + ); + + // Look up the user's SIP contact from the registrar + let contacts = if let Some(ref registrar) = outbound_registrar { + registrar.get_contacts_for_discord_user(&req.discord_username) + } else { + Vec::new() + }; + + if contacts.is_empty() { + warn!( + "No SIP contacts for user {} (call_id={})", + req.discord_username, req.call_id + ); + outbound_backend.report_call_status(&req.call_id, "failed"); + continue; + } + + // Store the request so handle_outbound_call_answered can retrieve it + outbound_requests_for_handler.insert(req.call_id.clone(), req.clone()); + + let fork_total = contacts.len(); + info!( + "Forking outbound call to {} contacts for user {} (call_id={})", + fork_total, req.discord_username, req.call_id + ); + + // Ring ALL registered contacts simultaneously + for (contact_uri, source_addr, transport) in &contacts { + // Extract the user part from the Contact URI (e.g., "sip:3001@10.0.1.151:5060" -> "3001") + // The contact_uri has the correct SIP username/extension; source_addr is the NAT'd public address + let user_part = contact_uri + .strip_prefix("sip:") + .or_else(|| contact_uri.strip_prefix("sips:")) + .and_then(|rest| rest.split('@').next()) + .unwrap_or(&req.discord_username); + + let sip_uri = match transport { + crate::services::registrar::SipTransport::Tls => { + format!("sips:{}@{}", user_part, source_addr) + } + crate::services::registrar::SipTransport::Tcp => { + format!("sip:{}@{};transport=tcp", user_part, source_addr) + } + crate::services::registrar::SipTransport::Udp => { + format!("sip:{}@{};transport=udp", user_part, source_addr) + } + }; + + let _ = outbound_sip_cmd_tx.send(SipCommand::MakeOutboundCall { + tracking_id: req.call_id.clone(), + sip_uri, + caller_display_name: Some(req.caller_username.clone()), + fork_total, + }); + } + + outbound_backend.report_call_status(&req.call_id, "ringing"); + } + }); + + // Handle Discord events + let discord_event_rx = self.discord_event_rx.clone(); + + let discord_handle = tokio::spawn(async move { + let mut event_count: u64 = 0; + loop { + let Some(event) = poll_recv(&discord_event_rx, "Discord", &mut event_count).await + else { + break; + }; + + match event { + DiscordEvent::VoiceConnected { + bridge_id, + guild_id, + channel_id, + } => { + info!( + "Discord voice connected: bridge={}, guild={}, channel={}", + bridge_id, guild_id, channel_id + ); + } + + DiscordEvent::VoiceDisconnected { bridge_id } => { + debug!("Discord voice disconnected: bridge={}", bridge_id); + } + } + } + }); + + // Health check task + let bridges = self.bridges.clone(); + let pending_bridges = self.pending_bridges.clone(); + let bridge_ready_notifiers = self.bridge_ready_notifiers.clone(); + let discord_event_tx = self.discord_event_tx.clone(); + let backend_for_health = self.backend.clone(); + let sip_calls_for_health = self.sip_calls.clone(); + let shared_discord_for_health = self.shared_discord.clone(); + let outbound_requests_for_health = self.outbound_requests.clone(); + let sip_cmd_tx_for_health = self.sip_cmd_tx.clone(); + + let health_check_notify_for_loop = health_check_notify.clone(); + let health_check_handle = tokio::spawn(async move { + let mut check_count: u64 = 0; + loop { + let interval = crate::config::AppConfig::bridge().health_check_interval_secs; + tokio::select! { + _ = tokio::time::sleep(Duration::from_secs(interval)) => {}, + _ = health_check_notify_for_loop.notified() => { + info!("Health check woken early by driver disconnect"); + }, + } + check_count += 1; + + // Sweep stale outbound requests (leaked if fork group never resolves) + let before = outbound_requests_for_health.len(); + outbound_requests_for_health + .retain(|_, req| req.created_at.elapsed() < Duration::from_secs(60)); + let swept = before - outbound_requests_for_health.len(); + if swept > 0 { + warn!("Swept {} stale outbound requests (>60s old)", swept); + } + + let active_channel_ids: Vec = bridges + .iter() + .map(|entry| entry.key().to_string()) + .collect(); + + if !active_channel_ids.is_empty() { + let backend = backend_for_health.clone(); + tokio::spawn(async move { + backend.heartbeat(&active_channel_ids).await; + }); + } + + let bridge_cfg = crate::config::AppConfig::bridge(); + + // Collect unhealthy bridges with their reconnection state + // Tuple: (channel_id, guild_id, bridge_id, prev_attempts, prev_reconnect_at) + let mut unhealthy_bridges: Vec<( + Snowflake, + Snowflake, + String, + u32, + Option, + )> = Vec::new(); + // Bridges that exceeded max reconnection attempts — tear them down + let mut exhausted_bridges: Vec = Vec::new(); + + for entry in bridges.iter() { + let channel_id = *entry.key(); + let bridge = entry.value(); + + let is_healthy = bridge.discord_connection.is_healthy(); + let queue_fill = bridge.discord_connection.queue_fill_percent(); + let consecutive_overflows = bridge.discord_connection.consecutive_overflows(); + + if check_count.is_multiple_of(12) { + info!( + "Health check #{}: channel={}, healthy={}, queue={}%, overflows={}, reconnects={}", + check_count, channel_id, is_healthy, queue_fill, consecutive_overflows, + bridge.reconnect_attempts + ); + } + + let needs_reconnect = + !is_healthy || (queue_fill > 90 && consecutive_overflows > 50); + + if needs_reconnect { + // Cooldown: skip if bridge was created/reconnected too recently + let age_secs = bridge.created_at.elapsed().as_secs(); + if age_secs < bridge_cfg.reconnect_min_age_secs { + debug!( + "Bridge for channel {} is unhealthy but too young ({}s < {}s cooldown), skipping", + channel_id, age_secs, bridge_cfg.reconnect_min_age_secs + ); + continue; + } + + // Max attempts: if exceeded, tear down instead of reconnecting + if bridge.reconnect_attempts >= bridge_cfg.reconnect_max_attempts { + error!( + "Bridge for channel {} exceeded max reconnection attempts ({}/{}), tearing down", + channel_id, bridge.reconnect_attempts, bridge_cfg.reconnect_max_attempts + ); + exhausted_bridges.push(channel_id); + continue; + } + + // Exponential backoff: check if enough time has passed since last reconnect + if let Some(last_reconnect) = bridge.last_reconnect_at { + let backoff_secs = bridge_cfg.reconnect_base_delay_secs + * 2u64.saturating_pow(bridge.reconnect_attempts.saturating_sub(1)); + let backoff_secs = + backoff_secs.min(bridge_cfg.reconnect_max_delay_secs); + let elapsed = last_reconnect.elapsed().as_secs(); + if elapsed < backoff_secs { + debug!( + "Bridge for channel {} is unhealthy but in backoff ({}s < {}s), skipping", + channel_id, elapsed, backoff_secs + ); + continue; + } + } + + warn!( + "Bridge for channel {} is UNHEALTHY (attempt {}/{})", + channel_id, + bridge.reconnect_attempts + 1, + bridge_cfg.reconnect_max_attempts + ); + unhealthy_bridges.push(( + channel_id, + bridge.guild_id, + bridge.discord_connection.bridge_id().to_string(), + bridge.reconnect_attempts, + bridge.last_reconnect_at, + )); + } + } + + // Tear down bridges that exhausted reconnection attempts + for channel_id in exhausted_bridges { + if let Some((_, bridge)) = bridges.remove(&channel_id) { + let orphaned_count = bridge.sip_calls.len(); + error!( + "Destroying bridge for channel {} after {} failed reconnection attempts — hanging up {} orphaned calls", + channel_id, bridge.reconnect_attempts, orphaned_count + ); + // Hang up all SIP calls that were on this bridge + for &orphaned_call_id in &bridge.sip_calls { + warn!( + "Hanging up orphaned call {} (bridge for channel {} exhausted reconnects)", + orphaned_call_id, channel_id + ); + let _ = sip_cmd_tx_for_health.send(SipCommand::Hangup { + call_id: orphaned_call_id, + }); + } + cleanup_channel_port(channel_id); + teardown_channel_ring_buffers(channel_id); + bridge.discord_connection.disconnect().await; + } + } + + // Check for orphaned bridges (no SIP calls for grace period) + let mut orphaned_bridges: Vec = Vec::new(); + for entry in bridges.iter() { + let channel_id = *entry.key(); + let bridge = entry.value(); + + if bridge.sip_calls.is_empty() { + let empty_duration = bridge.last_call_time.elapsed().as_secs(); + if empty_duration > empty_bridge_grace_period_secs() { + warn!( + "Bridge for channel {} has no SIP calls for {}s, marking for cleanup", + channel_id, empty_duration + ); + orphaned_bridges.push(channel_id); + } + } else { + // Cross-reference: bridge has sip_calls entries, but do any + // of them actually exist in the coordinator's sip_calls map? + // If none exist, the entries are stale (calls ended without cleanup). + let any_call_exists = bridge + .sip_calls + .iter() + .any(|call_id| sip_calls_for_health.contains_key(call_id)); + + if !any_call_exists + && bridge.last_call_time.elapsed().as_secs() > 30 + && bridge.created_at.elapsed().as_secs() > 60 + { + warn!( + "Bridge for channel {} has {} stale sip_calls entries (none exist in coordinator), \ + last_call={}s ago, age={}s — marking for cleanup", + channel_id, + bridge.sip_calls.len(), + bridge.last_call_time.elapsed().as_secs(), + bridge.created_at.elapsed().as_secs(), + ); + orphaned_bridges.push(channel_id); + } + } + } + + // Destroy orphaned bridges + for channel_id in orphaned_bridges { + if let Some((_, bridge)) = bridges.remove(&channel_id) { + info!( + "Destroying orphaned bridge for channel {} (no SIP calls)", + channel_id + ); + cleanup_channel_port(channel_id); + teardown_channel_ring_buffers(channel_id); + bridge.discord_connection.disconnect().await; + } + } + + // Rate limit: cap reconnections per cycle + let max_per_cycle = bridge_cfg.reconnect_max_per_cycle; + if unhealthy_bridges.len() > max_per_cycle { + warn!( + "Rate limiting reconnections: {} unhealthy bridges but only processing {} per cycle", + unhealthy_bridges.len(), max_per_cycle + ); + unhealthy_bridges.truncate(max_per_cycle); + } + + for (channel_id, guild_id, bridge_id, prev_attempts, _prev_reconnect_at) in + unhealthy_bridges + { + if pending_bridges.contains(&channel_id) { + continue; + } + + let attempt_num = prev_attempts + 1; + warn!( + "Attempting reconnection for unhealthy bridge {} (channel {}, attempt {}/{})", + bridge_id, channel_id, attempt_num, bridge_cfg.reconnect_max_attempts + ); + pending_bridges.insert(channel_id); + + if let Some((_, old_bridge)) = bridges.remove(&channel_id) { + let sip_calls = old_bridge.sip_calls.clone(); + let bot_token = old_bridge.bot_token.clone(); + let old_last_call_time = old_bridge.last_call_time; + teardown_channel_ring_buffers(channel_id); + old_bridge.discord_connection.disconnect().await; + + let new_bridge_id = format!("bridge_{}", channel_id); + match DiscordVoiceConnection::connect( + new_bridge_id.clone(), + &shared_discord_for_health, + guild_id, + channel_id, + discord_event_tx.clone(), + health_check_notify_for_loop.clone(), + ) + .await + { + Ok(new_connection) => { + info!( + "Successfully reconnected bridge {} for channel {} (attempt {}/{})", + new_bridge_id, channel_id, attempt_num, bridge_cfg.reconnect_max_attempts + ); + // Set up fresh ring buffers for reconnected channel + setup_channel_ring_buffers(channel_id); + bridges.insert( + channel_id, + ChannelBridge { + guild_id, + discord_connection: new_connection, + sip_calls: sip_calls.clone(), + bot_token, + last_call_time: old_last_call_time, + created_at: Instant::now(), + reconnect_attempts: attempt_num, + last_reconnect_at: Some(Instant::now()), + }, + ); + + // Cross-reference carried-over sip_calls against the + // coordinator's sip_calls map. If CallEnded fired while + // the bridge was removed from the DashMap, entries will + // be stale — remove them now. + if let Some(mut bridge) = bridges.get_mut(&channel_id) { + let stale: Vec = bridge + .sip_calls + .iter() + .filter(|id| !sip_calls_for_health.contains_key(id)) + .copied() + .collect(); + for id in &stale { + bridge.sip_calls.remove(id); + } + if !stale.is_empty() { + warn!( + "Removed {} stale sip_calls from reconnected bridge {}: {:?}", + stale.len(), channel_id, stale + ); + } + } + } + Err(e) => { + error!( + "Failed to reconnect bridge for channel {} (attempt {}/{}): {}. \ + Bridge removed — {} SIP calls orphaned.", + channel_id, attempt_num, bridge_cfg.reconnect_max_attempts, e, + sip_calls.len() + ); + // Re-insert the bridge entry (without connection) so calls + // aren't silently orphaned — the next health check cycle + // will either retry or tear down after max attempts. + // Since we can't re-insert without a connection, clean up + // the channel port so calls can detect the loss. + cleanup_channel_port(channel_id); + } + } + + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + } + } + } + }); + + tokio::select! { + _ = sip_handle => { info!("SIP event handler finished"); } + _ = discord_handle => { info!("Discord event handler finished"); } + _ = health_check_handle => { info!("Health check handler finished"); } + _ = outbound_handle => { info!("Outbound call handler finished"); } + } + + Ok(()) + } +} + +/// Handle an incoming authenticated call +async fn handle_incoming_call( + ctx: BridgeContext, + call_id: CallId, + digest_auth: crate::transport::sip::DigestAuthParams, + extension: String, + source_ip: Option, +) { + let BridgeContext { + backend, + bridges, + pending_bridges, + bridge_ready_notifiers, + sip_calls, + fax_sessions, + discord_event_tx, + sip_cmd_tx, + sound_manager, + shared_discord, + health_check_notify, + } = ctx; + // Route the call via the backend FIRST to determine call type + let decision = backend.route_call(&digest_auth, &extension).await; + + // For non-fax calls: send 183 Session Progress and play connecting sound + let is_fax = matches!(decision, RouteDecision::ConnectFax { .. }); + if !is_fax { + let _ = sip_cmd_tx.send(SipCommand::Send183 { call_id }); + tokio::time::sleep(Duration::from_millis(100)).await; + + if let Some(connecting_samples) = sound_manager.get_connecting_samples() { + let _ = sip_cmd_tx.send(SipCommand::StartConnectingLoop { + call_id, + samples: (*connecting_samples).clone(), + }); + } else { + warn!("No connecting sound configured - caller will hear silence during setup"); + } + } + + match decision { + RouteDecision::Redirect { domain, extension } => { + info!("Call {} needs redirect to {}", call_id, domain); + let _ = sip_cmd_tx.send(SipCommand::Redirect { + call_id, + domain, + extension, + }); + sip_calls.remove(&call_id); + } + + RouteDecision::RejectInvalidCredentials => { + warn!( + "Invalid credentials for call {} (IP: {:?}) - hanging up", + call_id, source_ip + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + sip_calls.remove(&call_id); + } + + RouteDecision::RejectWithError { error } => { + error!("Call {} rejected: {:?}", call_id, error); + play_error_and_hangup(call_id, error, &sound_manager, &sip_cmd_tx).await; + sip_calls.remove(&call_id); + } + + RouteDecision::ConnectFax { + text_channel_id, + guild_id, + user_id, + bot_token, + } => { + debug!( + "Fax route decision for call {}: text_channel={}, guild={}, user={}", + call_id, text_channel_id, guild_id, user_id + ); + + // Fax calls: answer the SIP call but DON'T connect to Discord voice. + // Instead, create a FaxSession that will receive audio and post to Discord text channel. + + let mut fax_session = match FaxSession::new( + call_id, + text_channel_id, + guild_id, + user_id.clone(), + bot_token, + ) { + Ok(session) => session, + Err(e) => { + error!("Failed to create fax session for call {}: {}", call_id, e); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + sip_calls.remove(&call_id); + return; + } + }; + + // Answer the call to establish audio path + let _ = sip_cmd_tx.send(SipCommand::Answer { call_id }); + + // Post "Receiving fax..." message to Discord + if let Err(e) = fax_session.post_receiving_message().await { + error!("Failed to post fax receiving message: {}", e); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + sip_calls.remove(&call_id); + return; + } + + // Store fax session with cancellation token for T.38 task shutdown + let fax_session = Arc::new(tokio::sync::Mutex::new(fax_session)); + let cancel_token = CancellationToken::new(); + fax_sessions.insert(call_id, (fax_session.clone(), cancel_token)); + + // Wait briefly for PJSUA to establish media (conf_port assignment) + tokio::time::sleep(Duration::from_millis(500)).await; + + // Create bidirectional fax audio port + let audio_ports = crate::fax::audio_port::create_fax_audio_port(call_id).await; + if audio_ports.is_none() { + warn!( + "Could not create fax audio port for call {} — media may not be ready yet. \ + Will retry when media becomes active.", + call_id + ); + } + + // Spawn fax audio processing task + let fax_session_clone = fax_session.clone(); + let sip_cmd_tx_clone = sip_cmd_tx.clone(); + tokio::spawn(async move { + process_fax_audio(call_id, fax_session_clone, audio_ports, sip_cmd_tx_clone).await; + }); + + debug!( + "Fax session created for call {} -> text channel {}", + call_id, text_channel_id + ); + + // NOTE: No on_call_started notification for fax calls — the "called in" / "hung up" + // Discord embeds are only relevant for voice calls. Fax has its own notifications. + } + + RouteDecision::Connect { + channel_id, + guild_id, + user_id, + bot_token, + } => { + info!( + "Route decision for call {}: channel={}, guild={}, user={}", + call_id, channel_id, guild_id, user_id + ); + + // Check if bot is already connected to a DIFFERENT channel in the SAME guild + // Discord bots can only be in one voice channel per guild + let mut conflicting_channel: Option = None; + for entry in bridges.iter() { + let existing_channel_id = *entry.key(); + let existing_bridge = entry.value(); + + if existing_bridge.guild_id == guild_id && existing_channel_id != channel_id { + conflicting_channel = Some(existing_channel_id); + break; + } + } + + if let Some(existing_channel_id) = conflicting_channel { + warn!( + "Guild {} already has active bridge to channel {} (call {} tried to join channel {})", + guild_id, existing_channel_id, call_id, channel_id + ); + play_error_and_hangup(call_id, CallError::ServerBusy, &sound_manager, &sip_cmd_tx) + .await; + sip_calls.remove(&call_id); + return; + } + + // Check if bridge already exists + let bridge_exists = bridges.contains_key(&channel_id); + let bridge_pending = pending_bridges.contains(&channel_id); + + if bridge_pending && !bridge_exists { + info!( + "Call {} waiting for pending bridge for channel {}", + call_id, channel_id + ); + + // Get or create a Notify for this channel (zero-cost when not waiting) + let notify = bridge_ready_notifiers + .entry(channel_id) + .or_insert_with(|| Arc::new(Notify::new())) + .clone(); + + // Wait for notification with timeout (instant wake-up when bridge is ready) + let wait_result = tokio::time::timeout(Duration::from_secs(15), async { + loop { + // Check if bridge is ready or pending cleared + if bridges.contains_key(&channel_id) + || !pending_bridges.contains(&channel_id) + { + return true; + } + // Check if call ended while waiting + if !sip_calls.contains_key(&call_id) { + return false; + } + notify.notified().await; + } + }) + .await; + + match wait_result { + Ok(true) => { + info!( + "Call {} finished waiting, bridge ready for channel {}", + call_id, channel_id + ); + } + Ok(false) => { + warn!("Call {} ended while waiting for pending bridge", call_id); + return; + } + Err(_) => { + error!( + "Timeout waiting for pending bridge for channel {} (call {})", + channel_id, call_id + ); + play_error_and_hangup( + call_id, + CallError::Unknown, + &sound_manager, + &sip_cmd_tx, + ) + .await; + sip_calls.remove(&call_id); + return; + } + } + } + + let bridge_exists = bridges.contains_key(&channel_id); + + if bridge_exists { + // Join existing bridge + if !sip_calls.contains_key(&call_id) { + warn!("Call {} ended during routing, not joining bridge", call_id); + return; + } + + info!( + "Call {} joining existing bridge for channel {}", + call_id, channel_id + ); + + if let Some(mut call) = sip_calls.get_mut(&call_id) { + call.channel_id = Some(channel_id); + call._user_id = Some(user_id.clone()); + call._guild_id = Some(guild_id); + } + + if let Some(mut bridge) = bridges.get_mut(&channel_id) { + bridge.sip_calls.insert(call_id); + bridge.last_call_time = Instant::now(); + info!( + "Bridge for channel {} now has {} callers", + channel_id, + bridge.sip_calls.len() + ); + } + + register_call_channel(call_id, channel_id); + + // Notify backend + let backend = backend.clone(); + let info = CallStartedInfo { + sip_call_id: call_id.to_string(), + user_id: user_id.clone(), + guild_id: guild_id.to_string(), + channel_id: channel_id.to_string(), + extension: extension.clone(), + }; + tokio::spawn(async move { + backend.on_call_started(&info).await; + }); + + // Answer call first, then play join sound + let _ = sip_cmd_tx.send(SipCommand::Answer { call_id }); + play_discord_join(call_id, &sound_manager, &sip_cmd_tx).await; + } else { + // Create new bridge + if !sip_calls.contains_key(&call_id) { + warn!("Call {} ended during routing, not creating bridge", call_id); + return; + } + + pending_bridges.insert(channel_id); + info!( + "Creating new bridge for channel {} (call {})", + channel_id, call_id + ); + + let bridge_id = format!("bridge_{}", channel_id); + match DiscordVoiceConnection::connect( + bridge_id.clone(), + &shared_discord, + guild_id, + channel_id, + discord_event_tx.clone(), + health_check_notify.clone(), + ) + .await + { + Ok(connection) => { + if !sip_calls.contains_key(&call_id) { + warn!("Call {} ended while connecting to Discord", call_id); + connection.disconnect().await; + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + return; + } + + info!("Discord connection established for channel {}", channel_id); + + // Set up Discord→SIP ring buffers for this channel + setup_channel_ring_buffers(channel_id); + + let mut sip_calls_set = HashSet::new(); + sip_calls_set.insert(call_id); + + bridges.insert( + channel_id, + ChannelBridge { + guild_id, + discord_connection: connection, + sip_calls: sip_calls_set, + bot_token: bot_token.clone(), + last_call_time: Instant::now(), + created_at: Instant::now(), + reconnect_attempts: 0, + last_reconnect_at: None, + }, + ); + + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + + if let Some(mut call) = sip_calls.get_mut(&call_id) { + call.channel_id = Some(channel_id); + call._user_id = Some(user_id.clone()); + call._guild_id = Some(guild_id); + } + + register_call_channel(call_id, channel_id); + + // Notify backend + let backend = backend.clone(); + let info = CallStartedInfo { + sip_call_id: call_id.to_string(), + user_id: user_id.clone(), + guild_id: guild_id.to_string(), + channel_id: channel_id.to_string(), + extension: extension.clone(), + }; + tokio::spawn(async move { + backend.on_call_started(&info).await; + }); + + // Answer call first, then play join sound + let _ = sip_cmd_tx.send(SipCommand::Answer { call_id }); + play_discord_join(call_id, &sound_manager, &sip_cmd_tx).await; + } + Err(e) => { + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + error!("Failed to connect to Discord for call {}: {}", call_id, e); + + play_error_and_hangup( + call_id, + CallError::Unknown, + &sound_manager, + &sip_cmd_tx, + ) + .await; + sip_calls.remove(&call_id); + } + } + } + } + } +} + +/// Handle an outbound call that was answered (phone picked up) +/// +/// This mirrors handle_incoming_call but skips authentication (already done by the DO) +/// and doesn't need 183/Answer (the SIP call is already established). +async fn handle_outbound_call_answered( + ctx: BridgeContext, + outbound_requests: Arc>, + tracking_id: String, + call_id: CallId, +) { + let BridgeContext { + backend, + bridges, + pending_bridges, + bridge_ready_notifiers, + sip_calls, + fax_sessions: _, + discord_event_tx, + sip_cmd_tx, + sound_manager, + shared_discord, + health_check_notify, + } = ctx; + + // Step 1: Retrieve and consume the stored outbound request + let req = match outbound_requests.remove(&tracking_id) { + Some((_, req)) => req, + None => { + error!( + "No stored outbound request for tracking_id={} (call {})", + tracking_id, call_id + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + + // Step 2: Parse guild_id and channel_id + let guild_id: Snowflake = match req.guild_id.parse() { + Ok(id) => id, + Err(e) => { + error!( + "Invalid guild_id '{}' in outbound request: {}", + req.guild_id, e + ); + backend.report_call_status(&req.call_id, "failed"); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + let channel_id: Snowflake = match req.channel_id.parse() { + Ok(id) => id, + Err(e) => { + error!( + "Invalid channel_id '{}' in outbound request: {}", + req.channel_id, e + ); + backend.report_call_status(&req.call_id, "failed"); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + + info!( + "Outbound call {} answered, connecting to Discord: guild={}, channel={}", + call_id, guild_id, channel_id + ); + + // Step 3: Track the SIP call + sip_calls.insert( + call_id, + SipCallInfo { + channel_id: None, + _user_id: None, + _guild_id: Some(guild_id), + tracking_id: Some(tracking_id.clone()), + }, + ); + + // Step 4: Play connecting sound loop + if let Some(connecting_samples) = sound_manager.get_connecting_samples() { + let _ = sip_cmd_tx.send(SipCommand::StartConnectingLoop { + call_id, + samples: (*connecting_samples).clone(), + }); + } + + // Step 5: Check for guild conflict (bot already active in this guild) + // For outbound calls, don't try to override the bot if it's already connected + // to any channel in this guild (whether same or different channel). + let mut conflicting_channel: Option = None; + for entry in bridges.iter() { + let existing_channel_id = *entry.key(); + let existing_bridge = entry.value(); + + if existing_bridge.guild_id == guild_id { + conflicting_channel = Some(existing_channel_id); + break; + } + } + // Also check pending bridges (bridge creation in progress) + if conflicting_channel.is_none() && pending_bridges.contains(&channel_id) { + conflicting_channel = Some(channel_id); + } + + if let Some(existing_channel_id) = conflicting_channel { + warn!( + "Guild {} already has active bridge to channel {} (outbound call {} tried channel {})", + guild_id, existing_channel_id, call_id, channel_id + ); + backend.report_call_status(&req.call_id, "failed"); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + sip_calls.remove(&call_id); + return; + } + + // Step 6: Create new bridge (no existing bridge in this guild — checked above) + { + pending_bridges.insert(channel_id); + info!( + "Creating new bridge for channel {} (outbound call {})", + channel_id, call_id + ); + + let bridge_id = format!("bridge_{}", channel_id); + match DiscordVoiceConnection::connect( + bridge_id.clone(), + &shared_discord, + guild_id, + channel_id, + discord_event_tx.clone(), + health_check_notify.clone(), + ) + .await + { + Ok(connection) => { + if !sip_calls.contains_key(&call_id) { + warn!( + "Outbound call {} ended while connecting to Discord", + call_id + ); + connection.disconnect().await; + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + return; + } + + info!( + "Discord connection established for channel {} (outbound call {})", + channel_id, call_id + ); + + // Set up Discord→SIP ring buffers for this channel + setup_channel_ring_buffers(channel_id); + + let mut sip_calls_set = HashSet::new(); + sip_calls_set.insert(call_id); + + bridges.insert( + channel_id, + ChannelBridge { + guild_id, + discord_connection: connection, + sip_calls: sip_calls_set, + bot_token: req.bot_token.clone(), + last_call_time: Instant::now(), + created_at: Instant::now(), + reconnect_attempts: 0, + last_reconnect_at: None, + }, + ); + + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + + if let Some(mut call) = sip_calls.get_mut(&call_id) { + call.channel_id = Some(channel_id); + call._guild_id = Some(guild_id); + } + + register_call_channel(call_id, channel_id); + play_discord_join(call_id, &sound_manager, &sip_cmd_tx).await; + } + Err(e) => { + pending_bridges.remove(&channel_id); + notify_bridge_ready(&bridge_ready_notifiers, channel_id); + error!( + "Failed to connect to Discord for outbound call {}: {}", + call_id, e + ); + backend.report_call_status(&req.call_id, "failed"); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + sip_calls.remove(&call_id); + } + } + } +} + +/// Play the discord join sound +async fn play_discord_join( + call_id: CallId, + sound_manager: &SoundManager, + sip_cmd_tx: &Sender, +) { + if let Some(samples) = sound_manager.get_discord_join_samples() { + info!("Playing Discord join sound for call {}", call_id); + let _ = sip_cmd_tx.send(SipCommand::PlayDirectToCall { + call_id, + samples: (*samples).clone(), + }); + } else { + warn!("No discord_join sound configured"); + } +} + +/// Play an error sound and hangup +async fn play_error_and_hangup( + call_id: CallId, + error: CallError, + sound_manager: &SoundManager, + sip_cmd_tx: &Sender, +) { + info!("Playing error audio for call {}: {:?}", call_id, error); + + // The call was already answered with 183, so we can play audio + // Send 200 OK to fully answer before playing error + let _ = sip_cmd_tx.send(SipCommand::Answer { call_id }); + tokio::time::sleep(Duration::from_millis(200)).await; + + if let Some(samples) = sound_manager.get_error_samples(error.sound_name()) { + let _ = sip_cmd_tx.send(SipCommand::PlayDirectToCall { + call_id, + samples: (*samples).clone(), + }); + + // Wait for playback + let duration_ms = (samples.len() as u64 * 1000) / CONF_SAMPLE_RATE as u64; + tokio::time::sleep(Duration::from_millis(duration_ms + 200)).await; + } else { + warn!("No error sound '{}' configured", error.sound_name()); + } + + info!("Hanging up call {} after error audio", call_id); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); +} + +/// Play an extension-based sound (easter egg) and hangup +/// +/// For streaming sounds (large files), this uses the port-based pull model +/// which provides precise timing controlled by the audio thread. The hangup +/// is handled automatically when playback completes. +/// +/// For test tones, this plays a 440Hz sine wave until the caller hangs up. +async fn play_extension_sound_and_hangup( + call_id: CallId, + sound_name: &str, + sound_manager: &SoundManager, + sip_cmd_tx: &Sender, +) { + info!( + "Playing extension sound '{}' for call {}", + sound_name, call_id + ); + + // Answer the call first + // NOTE: Previously had 200ms delay here which caused RTP timestamp debt + // and initial burst of packets. Now we start streaming immediately. + let _ = sip_cmd_tx.send(SipCommand::Answer { call_id }); + + // Check if this is a test tone (virtual sound) + if sound_manager.is_test_tone(sound_name) { + info!("Starting 440Hz test tone for call {}", call_id); + let _ = sip_cmd_tx.send(SipCommand::StartTestTone { call_id }); + // Don't hangup - plays until caller hangs up + return; + } + + // Check if this is a streaming sound (large file) + if sound_manager.is_streaming(sound_name) { + if let Some(config) = sound_manager.get_streaming(sound_name) { + info!( + "Starting streaming playback '{}' from {} for call {}", + sound_name, + config.path.display(), + call_id + ); + + // Use the new port-based streaming approach + // The audio thread handles timing and the hangup happens automatically when done + let _ = sip_cmd_tx.send(SipCommand::StartStreaming { + call_id, + path: config.path.clone(), + }); + + // Don't hangup here - the streaming player will hangup when done + // or when the call ends (detected via CALL_CONF_PORTS check) + return; + } + } + + // Preloaded sound - play all at once + if let Some(sound) = sound_manager.get_preloaded(sound_name) { + let _ = sip_cmd_tx.send(SipCommand::PlayDirectToCall { + call_id, + samples: (*sound.samples).clone(), + }); + + // Wait for playback + tokio::time::sleep(Duration::from_millis(sound.duration_ms + 200)).await; + } else { + warn!("Sound '{}' not found", sound_name); + } + + info!("Hanging up call {} after extension sound", call_id); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); +} + +/// Wake up any tasks waiting for a bridge to become ready for the given channel. +/// Also cleans up the Notify entry since it's no longer needed. +fn notify_bridge_ready(notifiers: &DashMap>, channel_id: Snowflake) { + if let Some((_, notify)) = notifiers.remove(&channel_id) { + notify.notify_waiters(); + } +} + +/// Poll a crossbeam channel for the next event, with queue monitoring and periodic logging. +/// +/// Returns `Some(event)` when an event is received, or `None` when the channel is disconnected. +/// Sleeps 10ms when the channel is empty to avoid busy-waiting. +async fn poll_recv(rx: &Receiver, name: &str, event_count: &mut u64) -> Option { + loop { + let queue_len = rx.len(); + if queue_len > 50 && event_count.is_multiple_of(50) { + warn!("{} event queue HIGH: {} events pending", name, queue_len); + } + + match rx.try_recv() { + Ok(event) => { + *event_count += 1; + + if event_count.is_multiple_of(500) { + trace!( + "{} event handler: processed {} events, queue depth: {}", + name, + event_count, + queue_len + ); + } + + return Some(event); + } + Err(crossbeam_channel::TryRecvError::Empty) => { + tokio::time::sleep(Duration::from_millis(10)).await; + } + Err(crossbeam_channel::TryRecvError::Disconnected) => return None, + } + } +} + +/// Fax audio processing task. +/// +/// Runs on a 20ms timer tick (matching the audio frame rate). Each tick: +/// 1. Drains all available RX audio and feeds it to SpanDSP +/// 2. Generates exactly one frame of TX audio from SpanDSP (CED, T.30 signaling) +/// +/// The timer pacing is critical — SpanDSP's fax_tx() advances its internal clock +/// by the number of samples generated. Without pacing, TX runs at >100x real-time +/// and the T.30 state machine expires prematurely. +async fn process_fax_audio( + call_id: CallId, + fax_session: Arc>, + audio_ports: Option, + sip_cmd_tx: Sender, +) { + use crate::transport::sip::CONF_SAMPLE_RATE; + + let samples_per_frame = (CONF_SAMPLE_RATE * 20 / 1000) as usize; // 320 samples = 20ms + let mut read_buf = vec![0i16; samples_per_frame]; + let mut tx_buf = vec![0i16; samples_per_frame]; + + let (mut rx_consumer, mut tx_producer) = match audio_ports { + Some(ports) => (ports.rx_consumer, ports.tx_producer), + None => { + // If we couldn't create the audio port initially, wait and retry + debug!( + "Fax call {} — waiting for audio port to become available...", + call_id + ); + tokio::time::sleep(Duration::from_secs(2)).await; + + match crate::fax::audio_port::create_fax_audio_port(call_id).await { + Some(ports) => (ports.rx_consumer, ports.tx_producer), + None => { + error!( + "Failed to create fax audio port for call {} after retry", + call_id + ); + let mut session = fax_session.lock().await; + session + .post_failure("Failed to establish audio path for fax reception") + .await; + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + } + } + }; + + debug!("Fax audio processing started for call {}", call_id); + + // 20ms interval — matches the conference bridge frame rate. + // This paces TX generation at real-time so SpanDSP's internal clock stays in sync. + let mut interval = tokio::time::interval(Duration::from_millis(20)); + interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); + + let mut tx_audio_frames: u64 = 0; + let mut tx_silent_frames: u64 = 0; + let mut rx_frames: u64 = 0; + let mut tick_count: u64 = 0; + + loop { + interval.tick().await; + tick_count += 1; + + let mut session = fax_session.lock().await; + + // 1. Drain all available RX audio and feed to SpanDSP + loop { + if rx_consumer.slots() < samples_per_frame { + break; + } + match rx_consumer.read_chunk(samples_per_frame) { + Ok(chunk) => { + let (first, second) = chunk.as_slices(); + read_buf[..first.len()].copy_from_slice(first); + if !second.is_empty() { + read_buf[first.len()..first.len() + second.len()].copy_from_slice(second); + } + chunk.commit_all(); + session.feed_audio(&read_buf[..samples_per_frame]); + rx_frames += 1; + } + Err(_) => { + debug!("Fax RX ring buffer closed for call {}", call_id); + drop(session); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + debug!("Fax audio processing ended for call {}", call_id); + return; + } + } + } + + // 2. Generate exactly one frame of TX audio (20ms at 16kHz = 320 samples) + let tx_generated = session.generate_tx_16k(&mut tx_buf); + if tx_generated > 0 { + tx_audio_frames += 1; + if tx_audio_frames == 1 { + debug!( + "Fax {} TX: first audio frame generated (tick {})", + call_id, tick_count + ); + } + let tx_available = tx_producer.slots(); + let to_write = tx_generated.min(tx_available); + if to_write > 0 { + if let Ok(mut chunk) = tx_producer.write_chunk(to_write) { + let (first, second) = chunk.as_mut_slices(); + let first_len = first.len().min(to_write); + first[..first_len].copy_from_slice(&tx_buf[..first_len]); + if first_len < to_write { + second[..to_write - first_len] + .copy_from_slice(&tx_buf[first_len..to_write]); + } + chunk.commit_all(); + } + } + } else { + tx_silent_frames += 1; + } + + // Log diagnostics every 5 seconds (250 ticks) + if tick_count.is_multiple_of(250) { + let rx_drops = crate::fax::audio_port::get_rx_drop_count(call_id); + if rx_drops > 0 { + warn!( + "Fax {} audio: tick={}, rx={} frames, tx={} audio/{} silent, RX DROPS={}", + call_id, tick_count, rx_frames, tx_audio_frames, tx_silent_frames, rx_drops + ); + } else { + debug!( + "Fax {} audio: tick={}, rx={} frames, tx={} audio/{} silent", + call_id, tick_count, rx_frames, tx_audio_frames, tx_silent_frames + ); + } + } + + // 3. Check for completion / errors / timeout + if session.is_finished() { + if matches!( + session.state, + crate::fax::session::FaxState::Received | crate::fax::session::FaxState::Complete + ) { + debug!("Fax {} reception complete, converting and posting", call_id); + if let Err(e) = session.convert_and_post().await { + error!("Failed to convert/post fax for call {}: {}", call_id, e); + session.post_failure("Failed to process received fax").await; + } + } + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + + if session.is_timed_out() { + warn!("Fax {} timed out during processing", call_id); + session.post_failure("Fax reception timed out").await; + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + } + + debug!("Fax audio processing ended for call {}", call_id); +} + +/// Handle switching a fax session from G.711 to T.38. +/// +/// The T.38 re-INVITE has already been answered synchronously in the PJSUA +/// callback. The pre-bound UDPTL socket is in T38_PRESOCKETS. +/// +/// 1. Takes pre-bound socket from T38_PRESOCKETS, converts to tokio +/// 2. Creates FaxT38Receiver +/// 3. Switches the FaxSession from audio to T.38 mode +/// 4. Removes fax audio port (stops audio capture) +/// 5. Spawns UDPTL processing tasks (rx, tx, timer) +async fn handle_t38_switch( + call_id: CallId, + remote_ip: String, + remote_port: u16, + local_port: u16, + fax_session: Arc>, + cancel_token: CancellationToken, + sip_cmd_tx: Sender, +) { + // 1. Take pre-bound socket from the global map (placed there by the PJSUA callback) + let std_socket = match crate::transport::sip::T38_PRESOCKETS.remove(&*call_id) { + Some((_key, socket)) => socket, + None => { + error!( + "No pre-bound UDPTL socket for call {} in T38_PRESOCKETS", + call_id + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + + // Convert std::net::UdpSocket → tokio::net::UdpSocket + std_socket.set_nonblocking(true).ok(); + let tokio_socket = match tokio::net::UdpSocket::from_std(std_socket) { + Ok(s) => s, + Err(e) => { + error!( + "Failed to convert UDPTL socket to tokio for call {}: {}", + call_id, e + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + let udptl_socket = AsyncUdptlSocket::new(tokio_socket); + + // Connect to remote UDPTL endpoint + let remote_addr = match format!("{}:{}", remote_ip, remote_port).parse() { + Ok(addr) => addr, + Err(e) => { + error!( + "Invalid remote UDPTL address {}:{} for call {}: {}", + remote_ip, remote_port, call_id, e + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + }; + udptl_socket.connect(remote_addr); + + // 2. Create T.38 IFP sender channel + let (tx_ifp_sender, tx_ifp_receiver) = tokio::sync::mpsc::unbounded_channel::>(); + + // 3. Create FaxT38Receiver + let t38_receiver = { + let session = fax_session.lock().await; + let tiff_path = session.tiff_dir.join("received.tiff"); + match FaxT38Receiver::new(&tiff_path, tx_ifp_sender) { + Ok(r) => r, + Err(e) => { + error!( + "Failed to create FaxT38Receiver for call {}: {}", + call_id, e + ); + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + return; + } + } + }; + + // 4. Switch the session from audio to T.38 + { + let mut session = fax_session.lock().await; + session.switch_to_t38(t38_receiver); + } + + // 5. Remove fax audio port (stop G.711 audio capture) + crate::fax::audio_port::remove_fax_audio_port(call_id); + + info!( + "T.38 switch complete for call {}: local_port={}, remote={}:{}", + call_id, local_port, remote_ip, remote_port + ); + + // 6. Spawn UDPTL processing task + let udptl_socket = Arc::new(udptl_socket); + process_fax_t38( + call_id, + fax_session, + udptl_socket, + tx_ifp_receiver, + cancel_token, + sip_cmd_tx, + ) + .await; +} + +/// T.38 fax processing task. +/// +/// Runs the UDPTL receive loop, timer loop, and TX loop concurrently. +/// Feeds IFP packets to FaxSession (which feeds SpanDSP T38Terminal), +/// and handles completion/errors. +async fn process_fax_t38( + call_id: CallId, + fax_session: Arc>, + udptl_socket: Arc, + mut tx_ifp_receiver: tokio::sync::mpsc::UnboundedReceiver>, + cancel_token: CancellationToken, + sip_cmd_tx: Sender, +) { + info!("T.38 fax processing started for call {}", call_id); + + // TX task: Send outgoing IFP packets from SpanDSP to the UDPTL socket + let udptl_tx = udptl_socket.clone(); + let tx_call_id = call_id; + let tx_handle = tokio::spawn(async move { + let mut tx_count: u64 = 0; + while let Some(ifp_data) = tx_ifp_receiver.recv().await { + tx_count += 1; + debug!( + "UDPTL TX #{} for call {}: {}B IFP", + tx_count, + tx_call_id, + ifp_data.len() + ); + if let Err(e) = udptl_tx.send_ifp(&ifp_data).await { + warn!("UDPTL TX error for call {}: {}", tx_call_id, e); + break; + } + } + info!( + "UDPTL TX task ended for call {} after {} packets", + tx_call_id, tx_count + ); + }); + + // RX + Timer loop (combined to avoid lock contention) + let udptl_rx = udptl_socket.clone(); + let mut timer_interval = tokio::time::interval(Duration::from_millis(20)); + timer_interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); + + loop { + tokio::select! { + // Cancelled by CallEnded handler — exit cleanly + _ = cancel_token.cancelled() => { + debug!("T.38 task for call {} cancelled by CallEnded", call_id); + break; + } + + // Receive UDPTL packets + result = udptl_rx.recv_packet() => { + match result { + Ok(packet) => { + debug!( + "UDPTL RX seq={} for call {}: {}B primary + {} redundant", + packet.seq_number, call_id, packet.primary_ifp.len(), packet.redundant_ifps().len() + ); + + let mut session = fax_session.lock().await; + + let completed = session.feed_t38_ifp( + &packet.primary_ifp, + packet.seq_number, + ); + + if completed { + debug!("Fax {} T.38 reception complete, converting and posting", call_id); + if let Err(e) = session.convert_and_post().await { + error!("Failed to convert/post fax for call {}: {}", call_id, e); + session.post_failure("Failed to process received fax").await; + } + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + + if session.is_finished() { + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + } + Err(e) => { + warn!("UDPTL RX error for call {}: {}", call_id, e); + // Single packet errors are OK — continue receiving + } + } + } + + // Timer tick: drive T.38 state machine + _ = timer_interval.tick() => { + let mut session = fax_session.lock().await; + + let completed = session.drive_t38_timer(); + + if completed { + debug!("Fax {} T.38 timer-driven completion", call_id); + if let Err(e) = session.convert_and_post().await { + error!("Failed to convert/post fax for call {}: {}", call_id, e); + session.post_failure("Failed to process received fax").await; + } + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + + if session.is_finished() { + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + + if session.is_timed_out() { + warn!("Fax {} T.38 timed out during processing", call_id); + session.post_failure("Fax reception timed out").await; + let _ = sip_cmd_tx.send(SipCommand::Hangup { call_id }); + break; + } + } + } + } + + // Clean up TX task + tx_handle.abort(); + + debug!("T.38 fax processing ended for call {}", call_id); +} diff --git a/sipcord-bridge/src/config.rs b/sipcord-bridge/src/config.rs new file mode 100644 index 0000000..bce6cf5 --- /dev/null +++ b/sipcord-bridge/src/config.rs @@ -0,0 +1,535 @@ +use anyhow::{Context, Result}; +use std::collections::HashMap; +use std::path::{Path, PathBuf}; +use std::sync::OnceLock; + +/// Global application config (loaded from config.toml) +pub static APP_CONFIG: OnceLock = OnceLock::new(); + +/// Global environment config (parsed once at startup via `envy`) +static ENV_CONFIG: OnceLock = OnceLock::new(); + +fn default_data_dir() -> String { + "/var/lib/sipcord".to_string() +} +fn default_config_path() -> String { + "./config.toml".to_string() +} +fn default_bridge_id() -> String { + "br_unknown".to_string() +} +fn default_sounds_dir() -> String { + "./wav".to_string() +} +fn default_sip_port() -> u16 { + 5060 +} +fn default_rtp_port_start() -> u16 { + 10000 +} +fn default_rtp_port_end() -> u16 { + 15000 +} +fn default_tls_port() -> u16 { + 5061 +} +fn default_tls_refresh() -> u64 { + 3600 +} +fn default_dialplan_path() -> String { + "./dialplan.toml".to_string() +} + +/// All environment variables consumed by the bridge, deserialized once at startup. +#[derive(Debug, Clone, serde::Deserialize)] +pub struct EnvConfig { + // Paths & Identity + #[serde(default = "default_data_dir")] + pub data_dir: String, + #[serde(default = "default_config_path")] + pub config_path: String, + #[serde(default = "default_bridge_id")] + pub bridge_id: String, + #[serde(default = "default_sounds_dir")] + pub sounds_dir: String, + + // Mode + #[serde(default)] + pub dev_mode: bool, + + // SIP + pub sip_public_host: Option, + #[serde(default = "default_sip_port")] + pub sip_port: u16, + #[serde(default = "default_rtp_port_start")] + pub rtp_port_start: u16, + #[serde(default = "default_rtp_port_end")] + pub rtp_port_end: u16, + pub rtp_public_ip: Option, + pub sip_local_host: Option, + pub sip_local_cidr: Option, + + // TLS + pub tls_cert_dir: Option, + #[serde(default = "default_tls_port")] + pub tls_port: u16, + #[serde(default = "default_tls_refresh")] + pub tls_refresh_interval: u64, + + // Static router + pub discord_bot_token: Option, + #[serde(default = "default_dialplan_path")] + pub dialplan_path: String, +} + +impl EnvConfig { + /// Parse environment variables (via `envy`) and store in the global `OnceLock`. + /// Call once at the top of `main()`. + pub fn init() -> Result<()> { + dotenvy::dotenv().ok(); + let cfg: EnvConfig = + envy::from_env().context("Failed to parse environment variables into EnvConfig")?; + ENV_CONFIG + .set(cfg) + .ok() + .context("EnvConfig already initialized")?; + Ok(()) + } + + /// Access the global `EnvConfig` (panics if `init()` was not called). + pub fn global() -> &'static EnvConfig { + ENV_CONFIG + .get() + .expect("EnvConfig not initialized — call EnvConfig::init() first") + } + + /// Build a `SipConfig` from the parsed environment. + pub fn to_sip_config(&self) -> Result { + let public_host = self + .sip_public_host + .clone() + .context("SIP_PUBLIC_HOST required")?; + + let local_net = match (&self.sip_local_host, &self.sip_local_cidr) { + (Some(host), Some(cidr)) => Some(LocalNetConfig { + host: host.clone(), + cidr: cidr.clone(), + }), + _ => None, + }; + + Ok(SipConfig { + public_host, + port: self.sip_port, + rtp_port_start: self.rtp_port_start, + rtp_port_end: self.rtp_port_end, + rtp_public_ip: self.rtp_public_ip.clone(), + local_net, + }) + } + + /// Build a `TlsConfig` from the parsed environment. + pub fn to_tls_config(&self) -> TlsConfig { + let cert_dir = self + .tls_cert_dir + .as_ref() + .map(PathBuf::from) + .unwrap_or_else(|| PathBuf::from(&self.data_dir).join("certs")); + + TlsConfig { + cert_dir, + port: self.tls_port, + refresh_interval_secs: self.tls_refresh_interval, + } + } + + /// Return the SIP public host, falling back to `"0.0.0.0"` when unset. + pub fn sip_public_host_or_default(&self) -> &str { + self.sip_public_host.as_deref().unwrap_or("0.0.0.0") + } + + /// Return the resolved DATA_DIR path, applying the smart fallback: + /// if the default `/var/lib/sipcord` doesn't exist on disk, fall back to `.`. + pub fn resolved_data_dir(&self) -> String { + if self.data_dir == "/var/lib/sipcord" && !Path::new(&self.data_dir).exists() { + ".".to_string() + } else { + self.data_dir.clone() + } + } +} + +/// Application-level configuration from config.toml +#[derive(Debug, Clone, serde::Deserialize)] +pub struct AppConfig { + pub sounds: SoundsConfig, + #[serde(default)] + pub bridge: BridgeConfig, + #[serde(default)] + pub audio: AudioConfig, + #[serde(default)] + pub fax: FaxConfig, +} + +/// Bridge operational settings +#[derive(Debug, Clone, serde::Deserialize)] +#[serde(default)] +pub struct BridgeConfig { + /// Seconds without RTP before a call is considered dead + pub rtp_inactivity_timeout_secs: u64, + /// Seconds to wait for the first RTP packet before declaring no audio + /// (faster than rtp_inactivity_timeout for calls that never receive any audio) + pub no_audio_timeout_secs: u64, + /// Seconds before destroying a bridge with no SIP calls + pub empty_bridge_grace_period_secs: u64, + /// Maximum samples buffered per channel (Discord->SIP direction) + pub max_channel_buffer_samples: usize, + /// API request timeout in seconds + pub api_timeout_secs: u64, + /// Health check interval in seconds + pub health_check_interval_secs: u64, + /// Maximum voice join retry attempts + pub voice_join_max_retries: u32, + /// Delay between voice join retries in seconds + pub voice_join_retry_delay_secs: u64, + /// PJSIP internal log level (0-6, filtered via tracing) + pub pjsip_log_level: u32, + /// Maximum reconnection attempts before tearing down the bridge + pub reconnect_max_attempts: u32, + /// Base delay (seconds) for exponential backoff between reconnections + pub reconnect_base_delay_secs: u64, + /// Maximum backoff delay cap (seconds) + pub reconnect_max_delay_secs: u64, + /// Minimum bridge age (seconds) before it can be reconnected (cooldown) + pub reconnect_min_age_secs: u64, + /// Maximum reconnections allowed per health check cycle + pub reconnect_max_per_cycle: usize, +} + +impl Default for BridgeConfig { + fn default() -> Self { + Self { + rtp_inactivity_timeout_secs: 60, + no_audio_timeout_secs: 10, + empty_bridge_grace_period_secs: 30, + max_channel_buffer_samples: 32000, + api_timeout_secs: 10, + health_check_interval_secs: 5, + voice_join_max_retries: 2, + voice_join_retry_delay_secs: 5, + pjsip_log_level: 4, + reconnect_max_attempts: 5, + reconnect_base_delay_secs: 5, + reconnect_max_delay_secs: 300, + reconnect_min_age_secs: 30, + reconnect_max_per_cycle: 3, + } + } +} + +/// Audio pipeline settings +#[derive(Debug, Clone, serde::Deserialize)] +#[serde(default)] +pub struct AudioConfig { + /// Ring buffer size in samples for Discord audio streaming + pub ring_buffer_samples: usize, + /// Pre-buffer samples before starting Discord audio playback + pub pre_buffer_samples: usize, + /// Amplitude threshold above which audio is considered speech + pub vad_silence_threshold: i16, + /// Amplitude threshold below which audio is considered muted + pub vad_mute_threshold: i16, + /// Consecutive silence frames before stopping speaking state + pub vad_silence_frames_before_stop: u32, +} + +impl Default for AudioConfig { + fn default() -> Self { + Self { + ring_buffer_samples: 96000, + pre_buffer_samples: 14400, + vad_silence_threshold: 200, + vad_mute_threshold: 50, + vad_silence_frames_before_stop: 15, + } + } +} + +/// Fax reception settings +#[derive(Debug, Clone, serde::Deserialize)] +#[serde(default)] +pub struct FaxConfig { + /// Directory for temporary fax files. Defaults to system temp dir. + pub tmp_folder: Option, + /// Filename prefix for fax TIFF/output files (e.g. "fax_") + pub prefix: String, + /// Output image format: "png" or "jpg" + pub output_format: String, +} + +impl Default for FaxConfig { + fn default() -> Self { + Self { + tmp_folder: None, + prefix: "fax_".to_string(), + output_format: "png".to_string(), + } + } +} + +/// Sound configuration section +#[derive(Debug, Clone, serde::Deserialize)] +pub struct SoundsConfig { + #[serde(flatten)] + pub entries: HashMap, +} + +/// Individual sound entry configuration +#[derive(Debug, Clone, serde::Deserialize)] +pub struct SoundEntry { + /// Source file path (relative to sounds directory). None for generated tones. + pub src: Option, + /// Whether to preload into memory (true) or stream from disk (false) + #[serde(default)] + pub preload: bool, + /// Optional extension that triggers this sound (for easter eggs) + #[serde(default)] + pub extension: Option, +} + +impl AppConfig { + /// Load configuration from a TOML file + pub fn load(path: &Path) -> Result { + let contents = std::fs::read_to_string(path) + .with_context(|| format!("Failed to read config file: {}", path.display()))?; + toml::from_str(&contents) + .with_context(|| format!("Failed to parse config file: {}", path.display())) + } + + /// Get the global application config (panics if not initialized) + pub fn global() -> &'static AppConfig { + APP_CONFIG + .get() + .expect("AppConfig not initialized - call AppConfig::load() first") + } + + /// Get bridge config (with defaults if not loaded yet) + pub fn bridge() -> &'static BridgeConfig { + APP_CONFIG.get().map(|c| &c.bridge).unwrap_or_else(|| { + static DEFAULT: OnceLock = OnceLock::new(); + DEFAULT.get_or_init(BridgeConfig::default) + }) + } + + /// Get audio config (with defaults if not loaded yet) + pub fn audio() -> &'static AudioConfig { + APP_CONFIG.get().map(|c| &c.audio).unwrap_or_else(|| { + static DEFAULT: OnceLock = OnceLock::new(); + DEFAULT.get_or_init(AudioConfig::default) + }) + } + + /// Get fax config (with defaults if not loaded yet) + pub fn fax() -> &'static FaxConfig { + APP_CONFIG.get().map(|c| &c.fax).unwrap_or_else(|| { + static DEFAULT: OnceLock = OnceLock::new(); + DEFAULT.get_or_init(FaxConfig::default) + }) + } +} + +#[derive(Debug, Clone)] +pub struct TlsConfig { + pub cert_dir: PathBuf, + pub port: u16, + pub refresh_interval_secs: u64, +} + +#[derive(Debug, Clone)] +pub struct SipConfig { + pub public_host: String, + pub port: u16, + pub rtp_port_start: u16, + pub rtp_port_end: u16, + /// Public IP address to advertise in SDP for RTP media (c= line) + /// If not set, pjsua will use the local interface IP which won't work for NAT + pub rtp_public_ip: Option, + /// Local network support: rewrite Contact headers for clients in local_network to use local_host + /// This allows the bridge to serve both public and local clients simultaneously + pub local_net: Option, +} + +#[derive(Debug, Clone)] +pub struct LocalNetConfig { + /// Local host IP to use in Contact headers for local clients (e.g., 192.168.10.1) + pub host: String, + /// Local network CIDR - clients in this range get local_host in Contact (e.g., 192.168.10.0/24) + pub cidr: String, +} + +impl SipConfig { + /// Load SIP configuration from environment variables. + /// Standalone method for backends that don't need the full Config. + pub fn from_env() -> Result { + EnvConfig::global().to_sip_config() + } +} + +impl TlsConfig { + pub fn cert_path(&self) -> PathBuf { + self.cert_dir.join("bridge.crt") + } + + pub fn key_path(&self) -> PathBuf { + self.cert_dir.join("bridge.key") + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_bridge_config_default() { + let c = BridgeConfig::default(); + assert_eq!(c.rtp_inactivity_timeout_secs, 60); + assert_eq!(c.no_audio_timeout_secs, 10); + assert_eq!(c.empty_bridge_grace_period_secs, 30); + assert_eq!(c.max_channel_buffer_samples, 32000); + assert_eq!(c.api_timeout_secs, 10); + assert_eq!(c.pjsip_log_level, 4); + } + + #[test] + fn test_audio_config_default() { + let c = AudioConfig::default(); + assert_eq!(c.ring_buffer_samples, 96000); + assert_eq!(c.pre_buffer_samples, 14400); + assert_eq!(c.vad_silence_threshold, 200); + assert_eq!(c.vad_mute_threshold, 50); + assert_eq!(c.vad_silence_frames_before_stop, 15); + } + + #[test] + fn test_fax_config_default() { + let c = FaxConfig::default(); + assert!(c.tmp_folder.is_none()); + assert_eq!(c.prefix, "fax_"); + assert_eq!(c.output_format, "png"); + } + + #[test] + fn test_resolved_data_dir_default_missing() { + let env = EnvConfig { + data_dir: "/var/lib/sipcord".to_string(), + config_path: "./config.toml".to_string(), + bridge_id: "br_test".to_string(), + sounds_dir: "./wav".to_string(), + dev_mode: false, + sip_public_host: None, + sip_port: 5060, + rtp_port_start: 10000, + rtp_port_end: 15000, + rtp_public_ip: None, + sip_local_host: None, + sip_local_cidr: None, + tls_cert_dir: None, + tls_port: 5061, + tls_refresh_interval: 3600, + discord_bot_token: None, + dialplan_path: "./dialplan.toml".to_string(), + }; + assert_eq!(env.resolved_data_dir(), "."); + } + + #[test] + fn test_resolved_data_dir_custom() { + let env = EnvConfig { + data_dir: "/tmp".to_string(), + config_path: "./config.toml".to_string(), + bridge_id: "br_test".to_string(), + sounds_dir: "./wav".to_string(), + dev_mode: false, + sip_public_host: None, + sip_port: 5060, + rtp_port_start: 10000, + rtp_port_end: 15000, + rtp_public_ip: None, + sip_local_host: None, + sip_local_cidr: None, + tls_cert_dir: None, + tls_port: 5061, + tls_refresh_interval: 3600, + discord_bot_token: None, + dialplan_path: "./dialplan.toml".to_string(), + }; + assert_eq!(env.resolved_data_dir(), "/tmp"); + } + + #[test] + fn test_to_tls_config_cert_dir_fallback() { + let env = EnvConfig { + data_dir: "/data".to_string(), + config_path: "./config.toml".to_string(), + bridge_id: "br_test".to_string(), + sounds_dir: "./wav".to_string(), + dev_mode: false, + sip_public_host: None, + sip_port: 5060, + rtp_port_start: 10000, + rtp_port_end: 15000, + rtp_public_ip: None, + sip_local_host: None, + sip_local_cidr: None, + tls_cert_dir: None, + tls_port: 5061, + tls_refresh_interval: 3600, + discord_bot_token: None, + dialplan_path: "./dialplan.toml".to_string(), + }; + let tls = env.to_tls_config(); + assert_eq!(tls.cert_dir, PathBuf::from("/data/certs")); + assert_eq!(tls.port, 5061); + } + + #[test] + fn test_tls_config_paths() { + let tls = TlsConfig { + cert_dir: PathBuf::from("/etc/ssl/sipcord"), + port: 5061, + refresh_interval_secs: 3600, + }; + assert_eq!( + tls.cert_path(), + PathBuf::from("/etc/ssl/sipcord/bridge.crt") + ); + assert_eq!(tls.key_path(), PathBuf::from("/etc/ssl/sipcord/bridge.key")); + } + + #[test] + fn test_app_config_load_valid_toml() { + let toml_content = r#" +[sounds] +join = { src = "join.wav", preload = true } + +[bridge] +rtp_inactivity_timeout_secs = 120 + +[audio] +ring_buffer_samples = 48000 + +[fax] +prefix = "test_" +"#; + let dir = std::env::temp_dir().join("sipcord_test_config"); + std::fs::create_dir_all(&dir).ok(); + let path = dir.join("test_config.toml"); + std::fs::write(&path, toml_content).unwrap(); + + let config = AppConfig::load(&path).unwrap(); + assert_eq!(config.bridge.rtp_inactivity_timeout_secs, 120); + assert_eq!(config.audio.ring_buffer_samples, 48000); + assert_eq!(config.fax.prefix, "test_"); + assert!(config.sounds.entries.contains_key("join")); + } +} diff --git a/sipcord-bridge/src/fax/audio_port.rs b/sipcord-bridge/src/fax/audio_port.rs new file mode 100644 index 0000000..e3ffd20 --- /dev/null +++ b/sipcord-bridge/src/fax/audio_port.rs @@ -0,0 +1,344 @@ +//! Fax audio port — bidirectional audio between SIP and SpanDSP. +//! +//! For each fax call, we create a custom conference port that: +//! - Receives audio from the SIP call via `put_frame` → RX ring buffer → fax processing task +//! - Sends SpanDSP transmit audio (CED, T.30) via TX ring buffer → `get_frame` → SIP call +//! +//! This is analogous to the channel_audio.rs ports used for Discord↔SIP audio. + +use crate::transport::sip::ffi::types::{ + ConfPort, SendablePool, SendablePort, CALL_CONF_PORTS, CONF_CHANNELS, CONF_SAMPLE_RATE, + SAMPLES_PER_FRAME, +}; +use crate::transport::sip::CallId; +use dashmap::DashMap; +use parking_lot::Mutex; +use pjsua::*; +use rtrb::{Consumer, Producer}; +use std::collections::HashMap; +use std::sync::atomic::{AtomicU64, Ordering}; +use std::sync::OnceLock; +use tracing::{debug, error, warn}; + +/// Ring buffer capacity for fax audio (i16 mono @ 16kHz). +/// 16000 samples = 1 second of audio, generous buffer for fax processing. +const FAX_AUDIO_RING_BUFFER_SIZE: usize = 16000; + +/// Ring buffer capacity for fax TX audio (SpanDSP → SIP). +/// 3200 samples = 200ms — enough for timing jitter. +const FAX_TX_RING_BUFFER_SIZE: usize = 3200; + +/// Map from CallId → RX ring buffer producer (SIP audio → fax processing task). +/// The put_frame callback pushes audio samples here. +static FAX_RX_PRODUCERS: OnceLock>>> = OnceLock::new(); + +fn get_fax_rx_producers() -> &'static DashMap>> { + FAX_RX_PRODUCERS.get_or_init(DashMap::new) +} + +/// Map from CallId → TX ring buffer consumer (fax processing task → SIP caller). +/// The get_frame callback reads SpanDSP transmit audio from here. +static FAX_TX_CONSUMERS: OnceLock>>> = OnceLock::new(); + +fn get_fax_tx_consumers() -> &'static DashMap>> { + FAX_TX_CONSUMERS.get_or_init(DashMap::new) +} + +/// Map from CallId → RX frame drop count (incremented in put_frame when buffer is full). +static FAX_RX_DROP_COUNTS: OnceLock> = OnceLock::new(); + +fn get_fax_rx_drop_counts() -> &'static DashMap { + FAX_RX_DROP_COUNTS.get_or_init(DashMap::new) +} + +/// Get the number of RX audio frames dropped for a call (buffer full). +/// Returns 0 if no drops have been recorded. +pub fn get_rx_drop_count(call_id: CallId) -> u64 { + get_fax_rx_drop_counts() + .get(&(*call_id as i64)) + .map(|c| c.load(Ordering::Relaxed)) + .unwrap_or(0) +} + +/// Map from CallId → conference slot (for cleanup). +static FAX_CONF_SLOTS: OnceLock>> = OnceLock::new(); + +fn get_fax_slots() -> &'static Mutex> { + FAX_CONF_SLOTS.get_or_init(|| Mutex::new(HashMap::new())) +} + +/// Memory pool for fax ports +static FAX_PORT_POOL: OnceLock> = OnceLock::new(); + +/// Bidirectional ring buffer handles for a fax audio port. +pub struct FaxAudioPorts { + /// RX: SIP audio from caller → fax processing task (feeds SpanDSP fax_rx) + pub rx_consumer: Consumer, + /// TX: SpanDSP transmit audio → SIP caller (CED tones, T.30 signaling) + pub tx_producer: Producer, +} + +/// Create a bidirectional fax audio port for a call and connect it to the call's conference slot. +/// +/// Port creation and conference addition happen on the calling thread. +/// The bidirectional `pjmedia_conf_connect_port` calls are queued to the audio thread +/// to avoid racing with `pjmedia_port_get_frame`. +/// +/// Returns `FaxAudioPorts` with: +/// - `rx_consumer`: reads SIP audio (16kHz mono, 320 samples/20ms frames) +/// - `tx_producer`: writes SpanDSP transmit audio back to the caller +pub async fn create_fax_audio_port(call_id: CallId) -> Option { + // Get the call's conference port + let call_conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + ports.get(&call_id).map(|r| *r) + }; + + let call_conf_port: ConfPort = match call_conf_port { + Some(p) if p.is_valid() => p, + _ => { + warn!( + "Cannot create fax audio port for call {} — no valid conference port", + call_id + ); + return None; + } + }; + + // Create RX ring buffer (SIP → fax processing) + let (rx_producer, rx_consumer) = rtrb::RingBuffer::new(FAX_AUDIO_RING_BUFFER_SIZE); + + // Create TX ring buffer (fax processing → SIP) + let (tx_producer, tx_consumer) = rtrb::RingBuffer::new(FAX_TX_RING_BUFFER_SIZE); + + let conf_slot = unsafe { + // Get or create the memory pool for fax ports + let pool = FAX_PORT_POOL.get_or_init(|| { + let pool = pjsua_pool_create(c"fax_ports".as_ptr() as *const _, 4096, 4096); + Mutex::new(SendablePool(pool)) + }); + let pool_ptr = pool.lock().0; + + // Allocate pjmedia_port structure + let port_size = std::mem::size_of::(); + let port = pj_pool_alloc(pool_ptr, port_size) as *mut pjmedia_port; + if port.is_null() { + error!("Failed to allocate fax audio port for call {}", call_id); + return None; + } + std::ptr::write_bytes(port as *mut u8, 0, port_size); + + // Initialize port info + let port_name = format!("fax{}", *call_id); + let port_name_cstr = std::ffi::CString::new(port_name).ok()?; + let signature = 0x4641_5852; // "FAXR" in hex + + pjmedia_port_info_init( + &mut (*port).info, + &pj_str(port_name_cstr.as_ptr() as *mut _), + signature, + CONF_SAMPLE_RATE, + CONF_CHANNELS, + 16, // bits per sample + SAMPLES_PER_FRAME as u32, + ); + + // Set callbacks + (*port).get_frame = Some(fax_port_get_frame); // Sends SpanDSP TX audio back to caller + (*port).put_frame = Some(fax_port_put_frame); // Captures SIP audio for SpanDSP + (*port).on_destroy = Some(fax_port_on_destroy); + + // Store call_id in port_data.ldata for O(1) lookup in callbacks + (*port).port_data.ldata = *call_id as i64; + + // Add to conference bridge + let mut slot: i32 = 0; + let status = pjsua_conf_add_port(pool_ptr, port, &mut slot); + if status != pj_constants__PJ_SUCCESS as i32 { + error!( + "Failed to add fax port to conference for call {}: {}", + call_id, status + ); + return None; + } + + let conf_slot = ConfPort::new(slot); + + // Store ring buffer handles for callbacks + get_fax_rx_producers().insert(*call_id as i64, Mutex::new(rx_producer)); + get_fax_tx_consumers().insert(*call_id as i64, Mutex::new(tx_consumer)); + get_fax_rx_drop_counts().insert(*call_id as i64, AtomicU64::new(0)); + + // Store slot for cleanup + get_fax_slots() + .lock() + .insert(call_id, (SendablePort(port), conf_slot)); + + conf_slot + }; + + // Queue the bidirectional conference connection to the audio thread + // This avoids racing with pjmedia_port_get_frame + let (done_tx, done_rx) = tokio::sync::oneshot::channel(); + use crate::transport::sip::ffi::types::{queue_pjsua_op, PendingPjsuaOp}; + queue_pjsua_op(PendingPjsuaOp::ConnectFaxPort { + call_id, + fax_slot: conf_slot, + call_conf_port, + done_tx, + }); + + match done_rx.await { + Ok(true) => { + debug!( + "Created fax audio port for call {} at slot {} (bidirectional with call conf_port {})", + call_id, conf_slot, call_conf_port + ); + Some(FaxAudioPorts { + rx_consumer, + tx_producer, + }) + } + Ok(false) => { + error!( + "Audio thread failed to connect fax port for call {} — cleaning up", + call_id + ); + remove_fax_audio_port(call_id); + None + } + Err(_) => { + error!( + "Audio thread dropped fax port connection signal for call {} — cleaning up", + call_id + ); + remove_fax_audio_port(call_id); + None + } + } +} + +/// Remove and clean up the fax audio port for a call. +pub fn remove_fax_audio_port(call_id: CallId) { + // Remove ring buffer handles first (stops callbacks from reading/writing) + get_fax_rx_producers().remove(&(*call_id as i64)); + get_fax_tx_consumers().remove(&(*call_id as i64)); + get_fax_rx_drop_counts().remove(&(*call_id as i64)); + + // Remove and clean up the conference port + let removed = get_fax_slots().lock().remove(&call_id); + if let Some((port, slot)) = removed { + unsafe { + // Disconnect from conference + pjsua_conf_remove_port(*slot); + + // Destroy the port + if !port.0.is_null() { + pjmedia_port_destroy(port.0); + } + } + debug!( + "Removed fax audio port for call {} (slot {})", + call_id, slot + ); + } +} + +/// get_frame callback — sends SpanDSP transmit audio (CED, T.30) back to the SIP caller. +/// +/// Reads from the TX ring buffer filled by the fax processing task. +/// Returns silence if no TX audio is available. +unsafe extern "C" fn fax_port_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + if this_port.is_null() || frame.is_null() { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + let call_id_ldata = (*this_port).port_data.ldata; + + if let Some(consumer_entry) = get_fax_tx_consumers().get(&call_id_ldata) { + if let Some(mut consumer) = consumer_entry.try_lock() { + let available = consumer.slots(); + if available >= SAMPLES_PER_FRAME { + if let Ok(chunk) = consumer.read_chunk(SAMPLES_PER_FRAME) { + let (first, second) = chunk.as_slices(); + let buf = (*frame).buf as *mut i16; + let out = std::slice::from_raw_parts_mut(buf, SAMPLES_PER_FRAME); + out[..first.len()].copy_from_slice(first); + if !second.is_empty() { + out[first.len()..first.len() + second.len()].copy_from_slice(second); + } + chunk.commit_all(); + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO; + (*frame).size = SAMPLES_PER_FRAME * 2; + return pj_constants__PJ_SUCCESS as pj_status_t; + } + } + } + } + + // No TX audio available — return silence audio frame (not NONE). + // Returning FRAME_TYPE_NONE can cause PJSIP's conference bridge to + // exclude this port from the audio mix, breaking the TX path. + let buf = (*frame).buf as *mut i16; + let out = std::slice::from_raw_parts_mut(buf, SAMPLES_PER_FRAME); + out.fill(0); + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO; + (*frame).size = SAMPLES_PER_FRAME * 2; + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// on_destroy callback — no-op since cleanup is done in remove_fax_audio_port(). +/// Required by PJSIP to avoid "on_destroy() not found" warning. +unsafe extern "C" fn fax_port_on_destroy(_this_port: *mut pjmedia_port) -> pj_status_t { + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// put_frame callback — captures SIP audio and pushes to RX ring buffer for SpanDSP. +unsafe extern "C" fn fax_port_put_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + if this_port.is_null() || frame.is_null() { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + // Only process audio frames with data + if (*frame).type_ != pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO || (*frame).size == 0 { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + let call_id_ldata = (*this_port).port_data.ldata; + + // View frame buffer as i16 slice + let num_samples = (*frame).size / 2; + let frame_buf = (*frame).buf as *const i16; + let samples = std::slice::from_raw_parts(frame_buf, num_samples); + + // Push to RX ring buffer + if let Some(producer_entry) = get_fax_rx_producers().get(&call_id_ldata) { + if let Some(mut producer) = producer_entry.try_lock() { + let available = producer.slots(); + if available >= samples.len() { + if let Ok(mut chunk) = producer.write_chunk(samples.len()) { + let (first, second) = chunk.as_mut_slices(); + let first_len = first.len().min(samples.len()); + first[..first_len].copy_from_slice(&samples[..first_len]); + if first_len < samples.len() { + second[..samples.len() - first_len].copy_from_slice(&samples[first_len..]); + } + chunk.commit_all(); + } + } else { + // Buffer full — fax processing is falling behind. Track the drop. + if let Some(counter) = get_fax_rx_drop_counts().get(&call_id_ldata) { + counter.fetch_add(1, Ordering::Relaxed); + } + } + } + } + + pj_constants__PJ_SUCCESS as pj_status_t +} diff --git a/sipcord-bridge/src/fax/discord_poster.rs b/sipcord-bridge/src/fax/discord_poster.rs new file mode 100644 index 0000000..63d0111 --- /dev/null +++ b/sipcord-bridge/src/fax/discord_poster.rs @@ -0,0 +1,224 @@ +//! Discord message poster for fax sessions using serenity's HTTP client. +//! +//! Posts embed messages through the fax lifecycle: +//! - "Receiving fax..." (blurple) when negotiation starts +//! - Replaced with "Fax Received" (green) with page image gallery on success +//! - Edited to "Fax Failed" (red) with reason on failure + +use crate::services::snowflake::Snowflake; +use anyhow::{Context, Result}; +use serenity::all::{ChannelId, MessageId, UserId}; +use serenity::builder::{ + CreateAttachment, CreateEmbed, CreateEmbedFooter, CreateMessage, EditMessage, +}; +use serenity::http::Http; +use serenity::secrets::Token; +use std::sync::Arc; +use tracing::{debug, error, warn}; + +const COLOR_RECEIVING: u32 = 0x5865F2; // Discord blurple +const COLOR_COMPLETE: u32 = 0x57F287; // Green +const COLOR_FAILED: u32 = 0xED4245; // Red +const GALLERY_URL: &str = "https://sipcord.net/fax"; + +pub struct DiscordPoster { + http: Arc, + channel_id: ChannelId, + user_id: String, + /// Cached display name, resolved on first use + display_name: Option, +} + +impl DiscordPoster { + pub fn new(bot_token: String, channel_id: Snowflake, user_id: String) -> Self { + let token: Token = bot_token.parse().expect("invalid Discord bot token"); + Self { + http: Arc::new(Http::new(token)), + channel_id: ChannelId::new(*channel_id), + user_id, + display_name: None, + } + } + + /// Resolve and cache the Discord display name for the user. + async fn resolve_display_name(&mut self) { + if self.display_name.is_some() { + return; + } + let name = match self.user_id.parse::() { + Ok(id) => match UserId::new(id).to_user(&self.http).await { + Ok(user) => user + .global_name + .map(|n| n.to_string()) + .unwrap_or_else(|| user.name.to_string()), + Err(e) => { + warn!("Failed to resolve Discord user {}: {}", self.user_id, e); + self.user_id.clone() + } + }, + Err(_) => self.user_id.clone(), + }; + self.display_name = Some(name); + } + + fn footer(&self) -> CreateEmbedFooter<'_> { + let name = self + .display_name + .as_deref() + .unwrap_or(self.user_id.as_str()); + CreateEmbedFooter::new(format!("From: @{}", name)) + } + + /// Post a "Receiving fax..." status message. Returns the message ID for future edits. + pub async fn post_fax_receiving(&mut self) -> Result { + self.resolve_display_name().await; + + let embed = CreateEmbed::new() + .title("Incoming Fax") + .description("Receiving fax...") + .color(COLOR_RECEIVING) + .footer(self.footer()); + + let msg = self + .channel_id + .widen() + .send_message(&self.http, CreateMessage::new().embed(embed)) + .await + .context("Failed to post fax receiving message")?; + + debug!("Posted fax receiving message: {}", msg.id); + Ok(msg.id.get()) + } + + /// Replace the "Receiving fax..." message with the completed fax and image attachments. + /// + /// Deletes the original status message and posts a new one with embeds + images. + /// Uses one embed per page with a shared URL so Discord renders them as a gallery. + /// `file_ext` is the file extension without dot (e.g. "png" or "jpg"). + /// + /// Discord limits messages to 10 embeds. For faxes with >10 pages, the first 10 + /// pages are shown in the embed gallery, and remaining pages are attached as files. + pub async fn edit_fax_complete( + &self, + message_id: u64, + image_pages: Vec>, + page_count: u32, + file_ext: &str, + ) -> Result<()> { + /// Discord's maximum number of embeds per message. + const MAX_EMBEDS: u32 = 10; + + let embed_count = page_count.min(MAX_EMBEDS); + let has_overflow = page_count > MAX_EMBEDS; + + let description = if page_count == 1 { + "Fax received — 1 page".to_string() + } else if has_overflow { + format!( + "Fax received — {} pages (showing first {})", + page_count, MAX_EMBEDS + ) + } else { + format!("Fax received — {} pages", page_count) + }; + + // One embed per page (up to MAX_EMBEDS) with a shared URL for gallery rendering + let mut embeds = Vec::with_capacity(embed_count as usize); + for i in 0..embed_count { + let filename = format!("fax_page_{}.{}", i + 1, file_ext); + let image_url = format!("attachment://{}", filename); + + let embed = if i == 0 { + CreateEmbed::new() + .title("Fax Received") + .description(description.clone()) + .color(COLOR_COMPLETE) + .url(GALLERY_URL) + .image(image_url) + .footer(self.footer()) + } else { + CreateEmbed::new() + .color(COLOR_COMPLETE) + .url(GALLERY_URL) + .image(image_url) + }; + embeds.push(embed); + } + + // All pages are attached as files (embed pages get rendered in gallery, + // overflow pages appear as plain file attachments) + let attachments: Vec = image_pages + .into_iter() + .enumerate() + .map(|(i, data)| { + CreateAttachment::bytes(data, format!("fax_page_{}.{}", i + 1, file_ext)) + }) + .collect(); + + let mut edit = EditMessage::new().embeds(embeds); + for attachment in attachments { + edit = edit.new_attachment(attachment); + } + + if let Err(e) = self + .channel_id + .widen() + .edit_message(&self.http, MessageId::new(message_id), edit) + .await + { + error!( + "Discord API error editing fax complete (msg={}, {} pages): {}", + message_id, page_count, e + ); + anyhow::bail!("Failed to edit fax complete message: {}", e); + } + + Ok(()) + } + + /// Edit the status message to show a failure reason. + pub async fn edit_fax_failed(&self, message_id: u64, reason: &str) -> Result<()> { + let embed = CreateEmbed::new() + .title("Fax Failed") + .description(reason) + .color(COLOR_FAILED) + .footer(self.footer()); + + if let Err(e) = self + .channel_id + .widen() + .edit_message( + &self.http, + MessageId::new(message_id), + EditMessage::new().embed(embed), + ) + .await + { + error!("Discord API error editing fax failed: {}", e); + } + + Ok(()) + } + + /// Post a standalone failure message (when no "receiving" message was posted). + pub async fn post_fax_failed(&mut self, reason: &str) -> Result<()> { + self.resolve_display_name().await; + + let embed = CreateEmbed::new() + .title("Fax Failed") + .description(reason) + .color(COLOR_FAILED) + .footer(self.footer()); + + if let Err(e) = self + .channel_id + .widen() + .send_message(&self.http, CreateMessage::new().embed(embed)) + .await + { + error!("Discord API error posting fax failed: {}", e); + } + + Ok(()) + } +} diff --git a/sipcord-bridge/src/fax/example.tiff b/sipcord-bridge/src/fax/example.tiff new file mode 100644 index 0000000000000000000000000000000000000000..d136f2558cfb4a7619e65bbf7bc22c5966fb7282 GIT binary patch literal 10650 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 F`7hg#;zIxc literal 0 HcmV?d00001 diff --git a/sipcord-bridge/src/fax/mod.rs b/sipcord-bridge/src/fax/mod.rs new file mode 100644 index 0000000..3193140 --- /dev/null +++ b/sipcord-bridge/src/fax/mod.rs @@ -0,0 +1,18 @@ +//! Incoming fax support — receives faxes over SIP and posts images to Discord. +//! +//! Supports two transport modes: +//! - **G.711 passthrough**: Demodulates fax tones from audio samples (SpanDSP FaxState) +//! - **T.38 native**: Receives IFP packets via UDPTL (SpanDSP T38Terminal) +//! +//! Architecture: +//! - FaxSession: State machine managing a single fax reception (audio or T.38) +//! - DiscordPoster: Posts/edits messages in Discord text channels with fax images +//! - SpanDSP wrapper: FFI to SpanDSP for fax demodulation (FaxReceiver + FaxT38Receiver) +//! - audio_port: Conference bridge port for capturing SIP audio (G.711 mode) +//! - UDPTL: UDP transport for T.38 IFP packets + +pub mod audio_port; +pub mod discord_poster; +pub mod session; +pub mod spandsp; +pub mod tiff_decoder; diff --git a/sipcord-bridge/src/fax/session.rs b/sipcord-bridge/src/fax/session.rs new file mode 100644 index 0000000..8c87487 --- /dev/null +++ b/sipcord-bridge/src/fax/session.rs @@ -0,0 +1,649 @@ +//! FaxSession state machine — manages a single incoming fax reception. +//! +//! Lifecycle: +//! 1. Created when a fax call is answered (ConnectFax route decision) +//! 2. Audio frames are fed via `feed_audio()` +//! 3. SpanDSP demodulates the fax tones into a TIFF file +//! 4. On completion, TIFF is converted to PNG and posted to Discord +//! 5. On failure or timeout, an error message is posted to Discord + +use crate::fax::discord_poster::DiscordPoster; +use crate::fax::spandsp::{FaxReceiver, FaxRxStatus, FaxT38Receiver}; +use crate::fax::tiff_decoder; +use crate::services::snowflake::Snowflake; +use crate::transport::sip::CallId; +use anyhow::Result; +use std::io::Cursor; +use std::path::PathBuf; +use std::time::Instant; +use tracing::{debug, error, info, warn}; + +/// Maximum duration for a fax session before timeout (5 minutes) +const FAX_TIMEOUT_SECS: u64 = 300; + +/// How the fax audio is being received +pub enum FaxSource { + /// G.711 audio passthrough + G711Audio, + /// T.38 UDPTL + T38Udptl, +} + +/// The active receiver — either audio-based or T.38 IFP-based. +enum FaxReceiverKind { + /// G.711 audio passthrough (demodulates fax tones from audio samples) + Audio(FaxReceiver), + /// T.38 UDPTL (receives IFP packets directly) + T38(FaxT38Receiver), +} + +/// Current state of the fax reception +pub enum FaxState { + /// Answered, feeding audio to SpanDSP, waiting for fax negotiation + WaitingForData, + /// SpanDSP confirmed fax negotiation started + Receiving { + /// Number of pages received so far + pages_received: u32, + }, + /// SpanDSP signaled fax complete, awaiting conversion and Discord posting + Received, + /// Fax posted to Discord successfully + Complete, + /// Fax reception failed + Failed(String), +} + +/// A single fax reception session +pub struct FaxSession { + /// SIP call ID for this fax + pub call_id: CallId, + /// Discord text channel to post the fax to + pub text_channel_id: Snowflake, + /// Guild ID (for logging) + pub guild_id: Snowflake, + /// User ID who owns this mapping + pub user_id: String, + /// Current state + pub state: FaxState, + /// How we're receiving the fax + pub source: FaxSource, + /// When this session was created + pub created_at: Instant, + /// Discord poster for this session + pub poster: DiscordPoster, + /// SpanDSP fax receiver (audio or T.38 mode) + receiver: FaxReceiverKind, + /// Temp directory for this fax session's TIFF output + pub tiff_dir: PathBuf, + /// Discord message ID for the "Receiving fax..." status message. + /// Stored separately so it survives state transitions to Complete/Failed. + receiving_message_id: Option, +} + +impl FaxSession { + /// Create a new fax session. Initializes SpanDSP in receive mode. + pub fn new( + call_id: CallId, + text_channel_id: Snowflake, + guild_id: Snowflake, + user_id: String, + bot_token: String, + ) -> Result { + let fax_config = crate::config::AppConfig::fax(); + + // Use configured tmp_folder or system temp dir + let base_dir = fax_config + .tmp_folder + .clone() + .unwrap_or_else(std::env::temp_dir); + + // Generate a unique session ID for the filename + let session_id = format!("{:016x}", { + use std::time::{SystemTime, UNIX_EPOCH}; + let t = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap_or_default(); + // Mix timestamp with call_id using a prime constant for a unique session ID + t.as_nanos() as u64 ^ (*call_id as u64).wrapping_mul(0x517cc1b727220a95) + }); + + let tiff_dir = base_dir.join(format!("{}{}", fax_config.prefix, session_id)); + std::fs::create_dir_all(&tiff_dir)?; + let tiff_path = tiff_dir.join(format!("{}{}.tiff", fax_config.prefix, session_id)); + + let receiver = FaxReceiver::new_audio_receiver(&tiff_path)?; + + let poster = DiscordPoster::new(bot_token, text_channel_id, user_id.clone()); + + Ok(Self { + call_id, + text_channel_id, + guild_id, + user_id, + state: FaxState::WaitingForData, + source: FaxSource::G711Audio, + created_at: Instant::now(), + poster, + receiver: FaxReceiverKind::Audio(receiver), + tiff_dir, + receiving_message_id: None, + }) + } + + /// Feed audio samples from the SIP call (16kHz mono i16). + /// Downsamples to 8kHz and feeds to SpanDSP's fax_rx(). + /// Returns true if the fax is complete and ready for post-processing. + /// Only works in Audio mode — logs a warning and returns false if called in T.38 mode. + pub fn feed_audio(&mut self, samples: &[i16]) -> bool { + // Check for timeout + if self.created_at.elapsed().as_secs() > FAX_TIMEOUT_SECS { + warn!( + "Fax session {} timed out after {}s", + self.call_id, + self.created_at.elapsed().as_secs() + ); + self.state = FaxState::Failed("Fax reception timed out".to_string()); + return false; + } + + if self.is_finished() { + return matches!(self.state, FaxState::Received | FaxState::Complete); + } + + let receiver = match &mut self.receiver { + FaxReceiverKind::Audio(r) => r, + FaxReceiverKind::T38(_) => { + warn!("feed_audio called on T.38 session {}", self.call_id); + return false; + } + }; + + let status = receiver.feed_samples_16k(samples); + self.handle_rx_status(status) + } + + /// Feed a T.38 IFP packet from the UDPTL socket to SpanDSP. + /// Returns true if the fax is complete and ready for post-processing. + /// Only works in T.38 mode. + pub fn feed_t38_ifp(&mut self, data: &[u8], seq: u16) -> bool { + if self.is_finished() { + return matches!(self.state, FaxState::Received | FaxState::Complete); + } + + let receiver = match &mut self.receiver { + FaxReceiverKind::T38(r) => r, + FaxReceiverKind::Audio(_) => { + warn!("feed_t38_ifp called on audio session {}", self.call_id); + return false; + } + }; + + let status = receiver.feed_ifp_packet(data, seq); + self.handle_rx_status(status) + } + + /// Drive the T.38 terminal timer (call every 20ms). + /// Returns true if the fax is complete and ready for post-processing. + pub fn drive_t38_timer(&mut self) -> bool { + if self.is_finished() { + return matches!(self.state, FaxState::Received | FaxState::Complete); + } + + let receiver = match &mut self.receiver { + FaxReceiverKind::T38(r) => r, + FaxReceiverKind::Audio(_) => return false, + }; + + let status = receiver.drive_timer(); + self.handle_rx_status(status) + } + + /// Common handler for FaxRxStatus from either audio or T.38 receiver. + fn handle_rx_status(&mut self, status: FaxRxStatus) -> bool { + // Log stats on completion/error before delegating to pure state transition + match &status { + FaxRxStatus::Complete => { + if let Some(stats) = self.get_stats() { + info!( + "Fax {} complete: {} pages, {}bps, {}x{}, ECM={}, bad_rows={}", + self.call_id, + stats.pages_rx, + stats.bit_rate, + stats.image_width, + stats.image_length, + stats.ecm, + stats.bad_rows + ); + } + } + FaxRxStatus::Error(msg) => { + if let Some(stats) = self.get_stats() { + warn!( + "Fax {} failed: {} ({}bps, {}x{}, ECM={}, pages_rx={}, bad_rows={}, audio={:.1}s)", + self.call_id, + msg, + stats.bit_rate, + stats.image_width, + stats.image_length, + stats.ecm, + stats.pages_rx, + stats.bad_rows, + self.audio_duration_secs() + ); + } else { + warn!( + "Fax {} failed: {} (no stats, audio={:.1}s)", + self.call_id, + msg, + self.audio_duration_secs() + ); + } + } + FaxRxStatus::InProgress => {} + } + + let page_count = self.pages_received(); + apply_rx_status(&mut self.state, status, page_count) + } + + /// Number of pages received so far. + pub fn pages_received(&self) -> u32 { + match &self.receiver { + FaxReceiverKind::Audio(r) => r.pages_received(), + FaxReceiverKind::T38(r) => r.pages_received(), + } + } + + /// Get transfer statistics from SpanDSP. + fn get_stats(&self) -> Option { + match &self.receiver { + FaxReceiverKind::Audio(r) => r.get_stats(), + FaxReceiverKind::T38(r) => r.get_stats(), + } + } + + /// Check if this session has timed out + pub fn is_timed_out(&self) -> bool { + self.created_at.elapsed().as_secs() > FAX_TIMEOUT_SECS + } + + /// Check if the session is in a terminal state + pub fn is_finished(&self) -> bool { + matches!( + self.state, + FaxState::Received | FaxState::Complete | FaxState::Failed(_) + ) + } + + /// Post the initial "Receiving fax..." message to Discord. + /// Called when fax negotiation is detected. + pub async fn post_receiving_message(&mut self) -> Result<()> { + match self.poster.post_fax_receiving().await { + Ok(msg_id) => { + debug!( + "Posted 'Receiving fax...' message {} to channel {} (call {})", + msg_id, self.text_channel_id, self.call_id + ); + self.receiving_message_id = Some(msg_id); + self.state = FaxState::Receiving { pages_received: 0 }; + Ok(()) + } + Err(e) => { + error!( + "Failed to post receiving message to channel {}: {}", + self.text_channel_id, e + ); + self.state = FaxState::Failed(format!("Discord error: {}", e)); + Err(e) + } + } + } + + /// Post a failure message to Discord + pub async fn post_failure(&mut self, reason: &str) { + if let Some(discord_msg_id) = self.receiving_message_id { + if let Err(e) = self.poster.edit_fax_failed(discord_msg_id, reason).await { + error!("Failed to edit fax failure message: {}", e); + } + } else { + // No receiving message was posted — post a standalone failure + if let Err(e) = self.poster.post_fax_failed(reason).await { + error!("Failed to post fax failure message: {}", e); + } + } + self.state = FaxState::Failed(reason.to_string()); + } + + /// Convert the received TIFF to images and post to Discord. + /// Called after fax reception is complete. + pub async fn convert_and_post(&mut self) -> Result<()> { + // Guard against double-processing: if we've already posted (Complete) or failed, + // another caller (e.g., CallEnded racing with T.38 completion) already handled it. + // Note: FaxState::Received is NOT skipped — that's the normal entry state. + if matches!(self.state, FaxState::Complete | FaxState::Failed(_)) { + debug!( + "convert_and_post called on already-finished session {} — skipping", + self.call_id + ); + return Ok(()); + } + + let (tiff_path, pages) = match &self.receiver { + FaxReceiverKind::Audio(r) => ( + r.tiff_output_path().to_path_buf(), + r.pages_received().max(1), + ), + FaxReceiverKind::T38(r) => ( + r.tiff_output_path().to_path_buf(), + r.pages_received().max(1), + ), + }; + let tiff_path = &tiff_path; + + let fax_config = crate::config::AppConfig::fax(); + let (output_format, file_ext) = match fax_config.output_format.as_str() { + "jpg" | "jpeg" => (OutputFormat::Jpeg, "jpg"), + _ => (OutputFormat::Png, "png"), + }; + + debug!( + "Converting TIFF to {} for call {}: {} ({} pages)", + output_format.label(), + self.call_id, + tiff_path.display(), + pages + ); + + let gray_images = tiff_decoder::decode_fax_tiff(tiff_path)?; + let image_pages: Vec> = gray_images + .into_iter() + .map(|img| { + let mut buf = Vec::new(); + image::DynamicImage::ImageLuma8(img) + .write_to(&mut Cursor::new(&mut buf), output_format.image_format()) + .map(|_| buf) + }) + .collect::, _>>()?; + + if image_pages.is_empty() { + self.post_failure("No pages in received fax").await; + anyhow::bail!("No pages in received fax"); + } + + let page_count = image_pages.len() as u32; + + if let Some(discord_msg_id) = self.receiving_message_id { + match self + .poster + .edit_fax_complete(discord_msg_id, image_pages, page_count, file_ext) + .await + { + Ok(()) => { + info!( + "Fax complete: {} pages posted to channel {} (call {})", + page_count, self.text_channel_id, self.call_id + ); + self.state = FaxState::Complete; + } + Err(e) => { + error!("Failed to post completed fax: {}", e); + self.state = FaxState::Failed(format!("Discord upload error: {}", e)); + return Err(e); + } + } + } else { + // If we never posted a "receiving" message (e.g., fast fax), post directly + // This shouldn't normally happen since we post receiving message early + warn!("Fax completed without a receiving message — posting directly"); + match self.poster.post_fax_receiving().await { + Ok(msg_id) => { + self.receiving_message_id = Some(msg_id); + self.poster + .edit_fax_complete(msg_id, image_pages, page_count, file_ext) + .await?; + self.state = FaxState::Complete; + } + Err(e) => { + error!("Failed to post fax: {}", e); + self.state = FaxState::Failed(format!("Discord error: {}", e)); + return Err(e); + } + } + } + + Ok(()) + } + + /// Switch from G.711 audio mode to T.38 UDPTL mode. + /// + /// Replaces the audio receiver with a T.38 receiver. The caller must: + /// 1. Stop feeding audio samples (remove fax audio port) + /// 2. Start the UDPTL processing tasks (rx, tx, timer) + pub fn switch_to_t38(&mut self, t38_receiver: FaxT38Receiver) { + debug!("Fax session {} switching from G.711 to T.38", self.call_id); + self.source = FaxSource::T38Udptl; + self.receiver = FaxReceiverKind::T38(t38_receiver); + } + + /// Generate transmit audio from SpanDSP (CED tones, T.30 signaling). + /// + /// Only works in Audio mode — T.38 uses IFP packets, not audio. + /// `out_buf` should be 320 samples (20ms at 16kHz). + /// Returns the number of 16kHz samples written. + pub fn generate_tx_16k(&mut self, out_buf: &mut [i16]) -> usize { + match &mut self.receiver { + FaxReceiverKind::Audio(r) => r.generate_tx_16k(out_buf), + FaxReceiverKind::T38(_) => 0, + } + } + + /// Get the total audio duration received so far (for debugging). + /// Returns 0 in T.38 mode (no audio samples). + pub fn audio_duration_secs(&self) -> f64 { + match &self.receiver { + FaxReceiverKind::Audio(r) => r.audio_duration_secs(), + FaxReceiverKind::T38(_) => 0.0, + } + } +} + +impl Drop for FaxSession { + fn drop(&mut self) { + let status = match &self.state { + FaxState::WaitingForData => "waiting_for_data", + FaxState::Receiving { .. } => "receiving", + FaxState::Received => "received", + FaxState::Complete => "complete", + FaxState::Failed(reason) => { + debug!("Fax failure reason: {}", reason); + "failed" + } + }; + debug!( + "FaxSession dropped: call={}, channel={}, guild={}, user={}, status={}, duration={:.1}s, audio={:.1}s", + self.call_id, + self.text_channel_id, + self.guild_id, + self.user_id, + status, + self.created_at.elapsed().as_secs_f64(), + self.audio_duration_secs() + ); + if let Err(e) = std::fs::remove_dir_all(&self.tiff_dir) { + debug!( + "Failed to clean up fax temp dir {}: {}", + self.tiff_dir.display(), + e + ); + } else { + debug!("Cleaned up fax temp dir: {}", self.tiff_dir.display()); + } + } +} + +// Pure state transition logic (extracted for testability) + +/// Apply a FaxRxStatus to a FaxState, returning whether the fax is complete. +/// This is the core state transition logic used by `FaxSession::handle_rx_status`. +fn apply_rx_status(state: &mut FaxState, status: FaxRxStatus, page_count: u32) -> bool { + match status { + FaxRxStatus::InProgress => { + if let FaxState::Receiving { pages_received, .. } = state { + *pages_received = page_count; + } + false + } + FaxRxStatus::Complete => { + *state = FaxState::Received; + true + } + FaxRxStatus::Error(msg) => { + *state = FaxState::Failed(msg); + false + } + } +} + +// Output format + +#[derive(Debug, Clone, Copy)] +enum OutputFormat { + Png, + Jpeg, +} + +impl OutputFormat { + fn image_format(self) -> image::ImageFormat { + match self { + OutputFormat::Png => image::ImageFormat::Png, + OutputFormat::Jpeg => image::ImageFormat::Jpeg, + } + } + + fn label(self) -> &'static str { + match self { + OutputFormat::Png => "PNG", + OutputFormat::Jpeg => "JPEG", + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + // Helper: check if a FaxState is_finished (mirrors FaxSession::is_finished logic) + fn state_is_finished(state: &FaxState) -> bool { + matches!( + state, + FaxState::Received | FaxState::Complete | FaxState::Failed(_) + ) + } + + // is_finished tests + + #[test] + fn is_finished_waiting_for_data() { + assert!(!state_is_finished(&FaxState::WaitingForData)); + } + + #[test] + fn is_finished_receiving() { + assert!(!state_is_finished(&FaxState::Receiving { + pages_received: 0 + })); + } + + #[test] + fn is_finished_received() { + assert!(state_is_finished(&FaxState::Received)); + } + + #[test] + fn is_finished_complete() { + assert!(state_is_finished(&FaxState::Complete)); + } + + #[test] + fn is_finished_failed() { + assert!(state_is_finished(&FaxState::Failed("err".to_string()))); + } + + // is_timed_out tests + + #[test] + fn is_timed_out_fresh() { + // A fresh Instant should not be timed out + let created_at = Instant::now(); + let elapsed = created_at.elapsed().as_secs(); + assert!(elapsed <= FAX_TIMEOUT_SECS); + } + + #[test] + fn is_timed_out_old() { + // An instant created FAX_TIMEOUT_SECS+1 ago should be timed out + let created_at = Instant::now() - std::time::Duration::from_secs(FAX_TIMEOUT_SECS + 1); + assert!(created_at.elapsed().as_secs() > FAX_TIMEOUT_SECS); + } + + // apply_rx_status tests + + #[test] + fn apply_rx_status_in_progress_on_waiting() { + let mut state = FaxState::WaitingForData; + let result = apply_rx_status(&mut state, FaxRxStatus::InProgress, 0); + assert!(!result); + assert!(matches!(state, FaxState::WaitingForData)); + } + + #[test] + fn apply_rx_status_in_progress_on_receiving_updates_pages() { + let mut state = FaxState::Receiving { pages_received: 0 }; + let result = apply_rx_status(&mut state, FaxRxStatus::InProgress, 3); + assert!(!result); + match state { + FaxState::Receiving { pages_received } => assert_eq!(pages_received, 3), + _ => panic!("Expected Receiving state"), + } + } + + #[test] + fn apply_rx_status_complete_transitions_to_received() { + let mut state = FaxState::Receiving { pages_received: 1 }; + let result = apply_rx_status(&mut state, FaxRxStatus::Complete, 1); + assert!(result); + assert!(matches!(state, FaxState::Received)); + } + + #[test] + fn apply_rx_status_error_transitions_to_failed() { + let mut state = FaxState::WaitingForData; + let result = apply_rx_status(&mut state, FaxRxStatus::Error("timeout".to_string()), 0); + assert!(!result); + match state { + FaxState::Failed(msg) => assert_eq!(msg, "timeout"), + _ => panic!("Expected Failed state"), + } + } + + #[test] + fn apply_rx_status_idempotent_on_terminal_complete() { + // Once in Received, InProgress should not change the state + let mut state = FaxState::Received; + let result = apply_rx_status(&mut state, FaxRxStatus::InProgress, 0); + assert!(!result); + assert!(matches!(state, FaxState::Received)); + } + + #[test] + fn apply_rx_status_idempotent_on_terminal_failed() { + let mut state = FaxState::Failed("original".to_string()); + let result = apply_rx_status(&mut state, FaxRxStatus::InProgress, 0); + assert!(!result); + match state { + FaxState::Failed(msg) => assert_eq!(msg, "original"), + _ => panic!("Expected Failed state"), + } + } +} diff --git a/sipcord-bridge/src/fax/spandsp.rs b/sipcord-bridge/src/fax/spandsp.rs new file mode 100644 index 0000000..cb2c173 --- /dev/null +++ b/sipcord-bridge/src/fax/spandsp.rs @@ -0,0 +1,672 @@ +//! SpanDSP wrapper for fax demodulation. +//! +//! Uses the `spandsp` safe wrapper crate to decode G.711 audio into TIFF images. +//! Audio arrives at 16kHz from PJSUA conference bridge; we downsample to 8kHz for SpanDSP. + +use anyhow::{Context, Result}; +use spandsp::fax::FaxState; +use spandsp::logging::{LogLevel, LogShowFlags}; +use spandsp::spandsp_sys; +use spandsp::t30::T30ModemSupport; +use spandsp::t38_terminal::T38Terminal; +use std::path::{Path, PathBuf}; +use tokio::sync::mpsc; +use tracing::{debug, error, info, trace, warn}; + +// T.4 image compression types (bitmask for t30_set_supported_compressions) +const T4_COMPRESSION_T4_1D: i32 = spandsp_sys::t4_image_compression_t_T4_COMPRESSION_T4_1D as i32; +const T4_COMPRESSION_T4_2D: i32 = spandsp_sys::t4_image_compression_t_T4_COMPRESSION_T4_2D as i32; +const T4_COMPRESSION_T6: i32 = spandsp_sys::t4_image_compression_t_T4_COMPRESSION_T6 as i32; + +// T.4 supported image widths (bitmask for t30_set_supported_image_sizes) +// These are #defines in the C header that bindgen doesn't capture as constants. +// Values from spandsp/t4_rx.h: T4_SUPPORT_WIDTH_215MM=0x01, 255MM=0x02, 303MM=0x04 +const T4_SUPPORT_WIDTH_215MM: i32 = 0x01; +const T4_SUPPORT_WIDTH_255MM: i32 = 0x02; +const T4_SUPPORT_WIDTH_303MM: i32 = 0x04; + +// T.4 supported resolutions (bitmask, OR'd into the same sizes parameter) +// Values from spandsp/t4_rx.h +const T4_RESOLUTION_R8_STANDARD: i32 = 0x01; // 204×98 DPI +const T4_RESOLUTION_R8_FINE: i32 = 0x02; // 204×196 DPI +const T4_RESOLUTION_R8_SUPERFINE: i32 = 0x04; // 204×391 DPI +const T4_RESOLUTION_200_200: i32 = 0x40; // 200×200 DPI + +/// Status returned after processing audio +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum FaxRxStatus { + /// Still processing, no state change + InProgress, + /// Fax reception completed successfully + Complete, + /// Error during reception + Error(String), +} + +/// Callbacks from SpanDSP via the T.30 phase handlers. +/// These track progress but don't drive control flow — FaxSession checks +/// the receiver's state after each feed_samples() call. +struct FaxCallbackState { + /// Whether phase B (negotiation) has been entered + negotiation_started: bool, + /// Number of pages received (phase D count) + pages_received: u32, + /// Final completion code from phase E (-1 = not yet completed) + completion_code: i32, + /// Whether phase E (completion) has fired + completed: bool, +} + +/// Summary statistics from a fax reception. +#[derive(Debug)] +pub struct FaxStats { + pub bit_rate: i32, + pub pages_rx: i32, + pub image_width: i32, + pub image_length: i32, + pub bad_rows: i32, + pub ecm: bool, +} + +// Shared helpers + +/// Configure T.30 session parameters, set output TIFF, and register phase handlers. +fn configure_t30( + t30: &spandsp::t30::T30State, + tiff_path: &str, + callback_state: &mut FaxCallbackState, +) -> Result<()> { + t30.set_rx_file(tiff_path, -1) + .map_err(|e| anyhow::anyhow!("Failed to set rx file: {}", e))?; + + t30.set_supported_modems(T30ModemSupport::default()) + .map_err(|e| anyhow::anyhow!("Failed to set supported modems: {}", e))?; + + t30.set_ecm_capability(true) + .map_err(|e| anyhow::anyhow!("Failed to set ECM: {}", e))?; + + let compressions = T4_COMPRESSION_T4_1D | T4_COMPRESSION_T4_2D | T4_COMPRESSION_T6; + t30.set_supported_compressions(compressions) + .map_err(|e| anyhow::anyhow!("Failed to set compressions: {}", e))?; + + let sizes = T4_SUPPORT_WIDTH_215MM | T4_SUPPORT_WIDTH_255MM | T4_SUPPORT_WIDTH_303MM + | T4_RESOLUTION_R8_STANDARD | T4_RESOLUTION_R8_FINE | T4_RESOLUTION_R8_SUPERFINE + | T4_RESOLUTION_200_200; + t30.set_supported_image_sizes(sizes) + .map_err(|e| anyhow::anyhow!("Failed to set image sizes: {}", e))?; + + let user_data = callback_state as *mut FaxCallbackState as *mut std::ffi::c_void; + unsafe { + t30.set_phase_b_handler_raw(Some(phase_b_handler), user_data); + t30.set_phase_d_handler_raw(Some(phase_d_handler), user_data); + t30.set_phase_e_handler_raw(Some(phase_e_handler), user_data); + } + + Ok(()) +} + +/// Configure a SpanDSP logging state to route messages to tracing. +unsafe fn configure_log_state(log_state: *mut spandsp_sys::logging_state_t) { + if log_state.is_null() { + return; + } + let log_level = LogLevel::Flow as i32 | LogShowFlags::TAG.bits(); + spandsp_sys::span_log_set_level(log_state, log_level); + spandsp_sys::span_log_set_message_handler( + log_state, + Some(spandsp_log_handler), + std::ptr::null_mut(), + ); +} + +/// Check fax reception completion status from callback state. +fn check_completion(state: &FaxCallbackState) -> FaxRxStatus { + if state.completed { + match spandsp::t30::T30State::completion_code(state.completion_code) { + Some(err) if err.is_ok() => FaxRxStatus::Complete, + Some(err) => FaxRxStatus::Error(format!("Fax failed: {}", err)), + None => FaxRxStatus::Error(format!( + "Fax failed with unknown T.30 error code {}", + state.completion_code + )), + } + } else { + FaxRxStatus::InProgress + } +} + +/// Extract transfer statistics from a T.30 state. +fn get_fax_stats(t30: &spandsp::t30::T30State) -> FaxStats { + let stats = t30.get_transfer_statistics(); + FaxStats { + bit_rate: stats.bit_rate, + pages_rx: stats.pages_rx, + image_width: stats.image_width, + image_length: stats.image_length, + bad_rows: stats.bad_rows, + ecm: stats.error_correcting_mode != 0, + } +} + +// Pure resampling helpers (extracted for testability) + +/// Downsample 16kHz→8kHz by averaging consecutive pairs. +/// Appends `samples` to `buf` (accumulator), drains pairs, returns 8kHz samples. +/// Leftover odd samples remain in `buf` for the next call. +fn downsample_16k_to_8k(buf: &mut Vec, samples: &[i16]) -> Vec { + buf.extend_from_slice(samples); + let pairs = buf.len() / 2; + if pairs == 0 { + return Vec::new(); + } + let mut out = Vec::with_capacity(pairs); + for i in 0..pairs { + let a = buf[i * 2] as i32; + let b = buf[i * 2 + 1] as i32; + out.push(((a + b) / 2) as i16); + } + let consumed = pairs * 2; + buf.drain(..consumed); + out +} + +/// Upsample 8kHz→16kHz by duplicating each sample. +/// Writes to `out`, returns number of 16kHz samples written (= input_len * 2). +fn upsample_8k_to_16k(samples_8k: &[i16], out: &mut [i16]) -> usize { + for (i, &s) in samples_8k.iter().enumerate() { + out[i * 2] = s; + out[i * 2 + 1] = s; + } + samples_8k.len() * 2 +} + +// Audio-based fax receiver + +/// SpanDSP fax receiver — wraps `FaxState` for receiving faxes from audio. +pub struct FaxReceiver { + fax: FaxState, + tiff_path: PathBuf, + callback_state: Box, + /// Downsampling buffer: accumulates 16kHz samples, emits 8kHz + downsample_buf: Vec, + /// Total 8kHz samples fed to SpanDSP + samples_fed: usize, +} + +// FaxState is Send (via unsafe impl in the spandsp crate). +// Box and Vec are Send. +// We ensure exclusive access via tokio::sync::Mutex in FaxSession. +unsafe impl Send for FaxReceiver {} + +impl FaxReceiver { + /// Create a new fax receiver in audio mode. + /// + /// Initializes SpanDSP in receive mode and sets the output TIFF path. + pub fn new_audio_receiver(tiff_path: &Path) -> Result { + let tiff_path_str = tiff_path.to_str().context("Invalid TIFF path")?; + + let fax = FaxState::new(false) + .map_err(|e| anyhow::anyhow!("Failed to initialize SpanDSP fax state: {}", e))?; + + let t30 = fax + .get_t30_state() + .map_err(|e| anyhow::anyhow!("Failed to get T.30 state: {}", e))?; + + let mut callback_state = Box::new(FaxCallbackState { + negotiation_started: false, + pages_received: 0, + completion_code: -1, + completed: false, + }); + + configure_t30(&t30, tiff_path_str, &mut callback_state)?; + + // Route SpanDSP log messages to tracing. + // We use raw spandsp_sys functions since LoggingState doesn't + // support borrowed pointers from parent objects safely yet. + unsafe { + configure_log_state(spandsp_sys::fax_get_logging_state(fax.as_ptr())); + configure_log_state(spandsp_sys::t30_get_logging_state(t30.as_ptr())); + } + + debug!( + "SpanDSP fax receiver initialized, output: {}", + tiff_path.display() + ); + + Ok(Self { + fax, + tiff_path: tiff_path.to_path_buf(), + callback_state, + downsample_buf: Vec::with_capacity(640), // 2 frames worth + samples_fed: 0, + }) + } + + /// Feed 16kHz mono i16 audio samples (from PJSUA conference bridge). + /// + /// Downsamples to 8kHz and passes to SpanDSP's `fax_rx()`. + /// Returns the current reception status. + pub fn feed_samples_16k(&mut self, samples: &[i16]) -> FaxRxStatus { + let mut downsampled = downsample_16k_to_8k(&mut self.downsample_buf, samples); + if downsampled.is_empty() { + return self.current_status(); + } + self.feed_samples_8k(&mut downsampled) + } + + /// Feed 8kHz mono i16 audio samples directly to SpanDSP. + fn feed_samples_8k(&mut self, samples: &mut [i16]) -> FaxRxStatus { + if samples.is_empty() { + return self.current_status(); + } + + let _result = self.fax.rx(samples); + self.samples_fed += samples.len(); + + if self.samples_fed.is_multiple_of(80000) { + // Log every 10 seconds of audio + trace!("SpanDSP fed {}s of audio", self.samples_fed as f64 / 8000.0,); + } + + self.current_status() + } + + /// Check the current status based on callback state. + fn current_status(&self) -> FaxRxStatus { + check_completion(&self.callback_state) + } + + /// Number of pages received so far. + pub fn pages_received(&self) -> u32 { + self.callback_state.pages_received + } + + /// Get the output TIFF file path. + pub fn tiff_output_path(&self) -> &Path { + &self.tiff_path + } + + /// Generate transmit audio from SpanDSP (CED tones, T.30 signaling). + /// + /// SpanDSP generates at 8kHz; we upsample to 16kHz for the conference bridge. + /// `out_buf` must be large enough for 16kHz samples (e.g., 320 for 20ms). + /// Returns the number of 16kHz samples written. + pub fn generate_tx_16k(&mut self, out_buf: &mut [i16]) -> usize { + let max_8k_samples = out_buf.len() / 2; + let mut buf_8k = vec![0i16; max_8k_samples]; + let generated = self.fax.tx(&mut buf_8k); + if generated == 0 { + return 0; + } + upsample_8k_to_16k(&buf_8k[..generated], out_buf) + } + + /// Total seconds of audio fed (at 8kHz). + pub fn audio_duration_secs(&self) -> f64 { + self.samples_fed as f64 / 8000.0 + } + + /// Get transfer statistics from SpanDSP (for logging). + pub fn get_stats(&self) -> Option { + let t30 = self.fax.get_t30_state().ok()?; + Some(get_fax_stats(&t30)) + } +} + +// T.38 IFP-based receiver (UDPTL mode) + +/// State passed to the T.38 TX packet handler callback. +/// When SpanDSP wants to send an IFP packet, we push it into the mpsc channel. +struct TxCallbackState { + sender: mpsc::UnboundedSender>, +} + +/// SpanDSP fax receiver using T.38 IFP packets (via T38Terminal). +/// +/// Instead of demodulating audio, this receives IFP packets from the UDPTL +/// socket and feeds them to SpanDSP's T38Terminal, which handles the T.30 +/// protocol directly over T.38. +pub struct FaxT38Receiver { + terminal: T38Terminal, + tiff_path: PathBuf, + callback_state: Box, + _tx_callback_state: Box, +} + +// T38Terminal is Send (via unsafe impl in spandsp-rs crate). +// Box and Box are Send. +// We ensure exclusive access via tokio::sync::Mutex in FaxSession. +unsafe impl Send for FaxT38Receiver {} + +impl FaxT38Receiver { + /// Create a new T.38 fax receiver. + /// + /// `tiff_path`: Where to write the received fax TIFF file. + /// `tx_ifp_sender`: Channel for outgoing IFP packets (sent to UDPTL socket). + pub fn new(tiff_path: &Path, tx_ifp_sender: mpsc::UnboundedSender>) -> Result { + let tiff_path_str = tiff_path.to_str().context("Invalid TIFF path")?; + + let tx_callback_state = Box::new(TxCallbackState { + sender: tx_ifp_sender, + }); + let tx_user_data = &*tx_callback_state as *const TxCallbackState as *mut std::ffi::c_void; + + let terminal = unsafe { + T38Terminal::new_raw(false, Some(tx_packet_handler), tx_user_data) + .map_err(|e| anyhow::anyhow!("Failed to initialize T38Terminal: {}", e))? + }; + + let t30 = terminal + .get_t30_state() + .map_err(|e| anyhow::anyhow!("Failed to get T.30 state from T38Terminal: {}", e))?; + + let mut callback_state = Box::new(FaxCallbackState { + negotiation_started: false, + pages_received: 0, + completion_code: -1, + completed: false, + }); + + configure_t30(&t30, tiff_path_str, &mut callback_state)?; + + unsafe { + configure_log_state(spandsp_sys::t38_terminal_get_logging_state( + terminal.as_ptr(), + )); + configure_log_state(spandsp_sys::t30_get_logging_state(t30.as_ptr())); + + let t38_core = terminal + .get_t38_core_state() + .map_err(|e| anyhow::anyhow!("Failed to get T38Core: {}", e))?; + configure_log_state(spandsp_sys::t38_core_get_logging_state(t38_core.as_ptr())); + } + + debug!( + "T.38 fax receiver initialized, output: {}", + tiff_path.display() + ); + + Ok(Self { + terminal, + tiff_path: tiff_path.to_path_buf(), + callback_state, + _tx_callback_state: tx_callback_state, + }) + } + + /// Feed a received IFP packet from the UDPTL socket to SpanDSP. + pub fn feed_ifp_packet(&self, data: &[u8], seq: u16) -> FaxRxStatus { + let t38_core = match self.terminal.get_t38_core_state() { + Ok(core) => core, + Err(e) => { + error!("Failed to get T38Core for rx: {}", e); + return FaxRxStatus::Error(format!("T38Core error: {}", e)); + } + }; + + if let Err(e) = t38_core.rx_ifp_packet(data, seq) { + warn!("T38Core rx_ifp_packet error: {} (seq={})", e, seq); + // Don't return error — packet loss is expected in UDPTL + } + + self.current_status() + } + + /// Drive the T.38 terminal's timer. Call every 20ms (160 samples at 8kHz). + /// + /// This advances the T.30 state machine. Returns the current reception status. + pub fn drive_timer(&self) -> FaxRxStatus { + // 160 samples = 20ms at 8kHz + let _result = self.terminal.send_timeout(160); + self.current_status() + } + + /// Check current status based on T.30 callback state. + fn current_status(&self) -> FaxRxStatus { + check_completion(&self.callback_state) + } + + /// Number of pages received so far. + pub fn pages_received(&self) -> u32 { + self.callback_state.pages_received + } + + /// Get the output TIFF file path. + pub fn tiff_output_path(&self) -> &Path { + &self.tiff_path + } + + /// Get transfer statistics from SpanDSP. + pub fn get_stats(&self) -> Option { + let t30 = self.terminal.get_t30_state().ok()?; + Some(get_fax_stats(&t30)) + } +} + +// SpanDSP C callbacks + +/// T.38 TX packet handler callback. +/// +/// Called by SpanDSP when it wants to send an IFP packet to the remote endpoint. +/// We push the packet into an mpsc channel, which the UDPTL socket task reads from. +/// +/// Signature matches `t38_tx_packet_handler_t`: +/// `fn(s: *mut t38_core_state_t, user_data: *mut c_void, buf: *const u8, len: i32, count: i32) -> i32` +unsafe extern "C" fn tx_packet_handler( + _s: *mut spandsp_sys::t38_core_state_t, + user_data: *mut std::ffi::c_void, + buf: *const u8, + len: i32, + count: i32, +) -> i32 { + if user_data.is_null() || buf.is_null() || len <= 0 { + return -1; + } + let state = &*(user_data as *const TxCallbackState); + let data = std::slice::from_raw_parts(buf, len as usize); + debug!("SpanDSP TX IFP: {}B (count={})", len, count); + // Send the packet `count` times as SpanDSP requests. + // For indicator packets (CNG, CED, DIS), count is typically 3 — these + // must be sent multiple times because early packets have no UDPTL + // redundancy history for error recovery. + let send_count = count.max(1) as usize; + for _ in 0..send_count { + match state.sender.send(data.to_vec()) { + Ok(()) => {} + Err(_) => { + // Channel closed — UDPTL socket task has ended + warn!("SpanDSP TX IFP channel closed"); + return -1; + } + } + } + 0 +} + +/// Phase B handler: called when T.30 negotiation starts. +unsafe extern "C" fn phase_b_handler(user_data: *mut std::ffi::c_void, result: i32) -> i32 { + if !user_data.is_null() { + let state = &mut *(user_data as *mut FaxCallbackState); + state.negotiation_started = true; + info!( + "SpanDSP phase B: fax negotiation started (result={})", + result + ); + } + 0 // T30_ERR_OK +} + +/// Phase D handler: called when a page is received. +unsafe extern "C" fn phase_d_handler(user_data: *mut std::ffi::c_void, result: i32) -> i32 { + if !user_data.is_null() { + let state = &mut *(user_data as *mut FaxCallbackState); + state.pages_received += 1; + info!( + "SpanDSP phase D: page {} received (result={})", + state.pages_received, result + ); + } + 0 // T30_ERR_OK +} + +/// Phase E handler: called when fax reception completes (success or failure). +unsafe extern "C" fn phase_e_handler(user_data: *mut std::ffi::c_void, completion_code: i32) { + if !user_data.is_null() { + let state = &mut *(user_data as *mut FaxCallbackState); + state.completion_code = completion_code; + state.completed = true; + + let reason = match spandsp::t30::T30State::completion_code(completion_code) { + Some(err) if err.is_ok() => "OK".to_string(), + Some(err) => format!("{}", err), + None => format!("unknown code {}", completion_code), + }; + + if completion_code == 0 { + info!( + "SpanDSP phase E: fax complete, {} pages received", + state.pages_received + ); + } else { + warn!( + "SpanDSP phase E: fax failed after {} pages — T.30 error {}: {}", + state.pages_received, completion_code, reason + ); + } + } +} + +/// SpanDSP log handler: routes SpanDSP log messages to tracing. +unsafe extern "C" fn spandsp_log_handler( + _user_data: *mut std::ffi::c_void, + level: i32, + text: *const std::ffi::c_char, +) { + if text.is_null() { + return; + } + let msg = std::ffi::CStr::from_ptr(text).to_string_lossy(); + let msg = msg.trim_end(); // SpanDSP messages often have trailing newlines + + match level { + l if l <= LogLevel::Error as i32 => error!(target: "spandsp", "{}", msg), + l if l <= LogLevel::Warning as i32 => warn!(target: "spandsp", "{}", msg), + l if l <= LogLevel::Flow as i32 => debug!(target: "spandsp", "{}", msg), + _ => trace!(target: "spandsp", "{}", msg), + } +} + +#[cfg(test)] +mod tests { + use super::*; + + // check_completion tests + + #[test] + fn check_completion_not_completed_returns_in_progress() { + let state = FaxCallbackState { + negotiation_started: false, + pages_received: 0, + completion_code: -1, + completed: false, + }; + assert_eq!(check_completion(&state), FaxRxStatus::InProgress); + } + + #[test] + fn check_completion_completed_code_0_returns_complete() { + let state = FaxCallbackState { + negotiation_started: true, + pages_received: 1, + completion_code: 0, + completed: true, + }; + assert_eq!(check_completion(&state), FaxRxStatus::Complete); + } + + #[test] + fn check_completion_completed_bad_code_returns_error() { + let state = FaxCallbackState { + negotiation_started: true, + pages_received: 0, + completion_code: 42, + completed: true, + }; + match check_completion(&state) { + FaxRxStatus::Error(msg) => assert!( + msg.contains("42") || msg.contains("failed") || msg.contains("Fax"), + "Error message should reference the code: {}", + msg + ), + other => panic!("Expected Error, got {:?}", other), + } + } + + // downsample_16k_to_8k tests + + #[test] + fn downsample_even_count() { + let mut buf = Vec::new(); + let samples: Vec = vec![100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]; + let out = downsample_16k_to_8k(&mut buf, &samples); + assert_eq!(out.len(), 5); + assert_eq!(out[0], 150); // (100+200)/2 + assert_eq!(out[1], 350); // (300+400)/2 + assert_eq!(out[2], 550); + assert_eq!(out[3], 750); + assert_eq!(out[4], 950); + assert!(buf.is_empty()); + } + + #[test] + fn downsample_odd_count_preserves_leftover() { + let mut buf = Vec::new(); + let samples: Vec = vec![100, 200, 300]; + let out = downsample_16k_to_8k(&mut buf, &samples); + assert_eq!(out.len(), 1); + assert_eq!(out[0], 150); + assert_eq!(buf.len(), 1); + assert_eq!(buf[0], 300); + } + + #[test] + fn downsample_sequential_calls_bridge_accumulator() { + let mut buf = Vec::new(); + // First call: 3 samples → 1 output, 1 leftover + let out1 = downsample_16k_to_8k(&mut buf, &[10, 20, 30]); + assert_eq!(out1, vec![15]); + assert_eq!(buf, vec![30]); + + // Second call: leftover 30 + new [40, 50] = [30, 40, 50] → 1 output, 1 leftover + let out2 = downsample_16k_to_8k(&mut buf, &[40, 50]); + assert_eq!(out2, vec![35]); // (30+40)/2 + assert_eq!(buf, vec![50]); + } + + #[test] + fn downsample_single_sample_returns_empty() { + let mut buf = Vec::new(); + let out = downsample_16k_to_8k(&mut buf, &[42]); + assert!(out.is_empty()); + assert_eq!(buf, vec![42]); + } + + // upsample_8k_to_16k tests + + #[test] + fn upsample_basic() { + let input: Vec = vec![100, 200, 300, 400]; + let mut out = vec![0i16; 8]; + let written = upsample_8k_to_16k(&input, &mut out); + assert_eq!(written, 8); + assert_eq!(out, vec![100, 100, 200, 200, 300, 300, 400, 400]); + } + + #[test] + fn upsample_empty_input() { + let mut out = vec![0i16; 8]; + let written = upsample_8k_to_16k(&[], &mut out); + assert_eq!(written, 0); + } +} diff --git a/sipcord-bridge/src/fax/tiff_decoder.rs b/sipcord-bridge/src/fax/tiff_decoder.rs new file mode 100644 index 0000000..a138c08 --- /dev/null +++ b/sipcord-bridge/src/fax/tiff_decoder.rs @@ -0,0 +1,1300 @@ +//! Self-contained fax TIFF decoder. +//! +//! Handles CCITT Group 3 (1D + 2D) and Group 4 compressed TIFFs as written +//! by SpanDSP, including FillOrder=2 (LSB-first) and T4Options with 2D encoding. +//! +//! Huffman table data derived from the ITU-T T.4 standard. +//! Bit-reading approach inspired by the `fax` crate (MIT licensed). + +use anyhow::{bail, Result}; +use image::GrayImage; +use std::path::Path; +use std::sync::OnceLock; +use tracing::debug; + +// Public API + +/// Maximum TIFF file size (50 MB). Well above any reasonable fax output from SpanDSP, +/// but prevents OOM from malformed files. +const MAX_TIFF_SIZE: u64 = 50 * 1024 * 1024; + +/// Decode all pages of a fax TIFF file into grayscale images. +pub fn decode_fax_tiff(path: &Path) -> Result> { + if !path.exists() { + bail!("TIFF file not found: {}", path.display()); + } + let file_size = std::fs::metadata(path)?.len(); + if file_size > MAX_TIFF_SIZE { + bail!( + "TIFF file too large: {} bytes (max {} bytes)", + file_size, + MAX_TIFF_SIZE + ); + } + let data = std::fs::read(path)?; + let pages = parse_tiff_ifds(&data)?; + let mut images = Vec::with_capacity(pages.len()); + + for (i, page) in pages.iter().enumerate() { + debug!( + "TIFF page {}: {}x{}, compression={}, fill_order={}, t4_options={}", + i + 1, + page.width, + page.height, + page.compression, + page.fill_order, + page.t4_options + ); + + let mut strip_data = Vec::new(); + for (off, len) in page.strip_offsets.iter().zip(&page.strip_byte_counts) { + let start = *off as usize; + let end = start + *len as usize; + if end > data.len() { + bail!( + "TIFF strip extends past file: offset={}, count={}, file_len={}", + off, + len, + data.len() + ); + } + strip_data.extend_from_slice(&data[start..end]); + } + + // FillOrder=2: reverse bits in every byte + if page.fill_order == 2 { + for b in strip_data.iter_mut() { + *b = BIT_REVERSE_LUT[*b as usize]; + } + } + + let transitions_per_line = match page.compression { + 3 => decode_group3(&strip_data, page.width, page.height, page.t4_options)?, + 4 => decode_group4(&strip_data, page.width, page.height)?, + other => bail!("Unsupported TIFF compression: {}", other), + }; + + let img = assemble_image( + &transitions_per_line, + page.width, + page.height, + page.photometric, + ); + + // Correct aspect ratio for non-square pixels (e.g., 204×98 DPI standard fax) + let img = correct_aspect_ratio(img, page.x_resolution, page.y_resolution); + images.push(img); + } + + Ok(images) +} + +// TIFF IFD Parser + +struct TiffPage { + width: u32, + height: u32, + compression: u32, + fill_order: u32, + t4_options: u32, + photometric: u32, + strip_offsets: Vec, + strip_byte_counts: Vec, + x_resolution: Option<(u32, u32)>, // numerator, denominator (RATIONAL) + y_resolution: Option<(u32, u32)>, // numerator, denominator (RATIONAL) +} + +fn parse_tiff_ifds(data: &[u8]) -> Result> { + if data.len() < 8 { + bail!("TIFF file too short"); + } + let le = match (data[0], data[1]) { + (0x49, 0x49) => true, + (0x4D, 0x4D) => false, + _ => bail!("Not a TIFF file"), + }; + let magic = read_u16(data, 2, le); + if magic != 42 { + bail!("Bad TIFF magic: {}", magic); + } + + let mut ifd_offset = read_u32(data, 4, le) as usize; + let mut pages = Vec::new(); + + while ifd_offset != 0 { + if ifd_offset + 2 > data.len() { + break; + } + let num_entries = read_u16(data, ifd_offset, le) as usize; + let mut width = 0u32; + let mut height = 0u32; + let mut compression = 1u32; + let mut fill_order = 1u32; + let mut t4_options = 0u32; + let mut photometric = 0u32; + let mut strip_offsets = Vec::new(); + let mut strip_byte_counts = Vec::new(); + let mut x_resolution: Option<(u32, u32)> = None; + let mut y_resolution: Option<(u32, u32)> = None; + + for i in 0..num_entries { + let entry_off = ifd_offset + 2 + i * 12; + if entry_off + 12 > data.len() { + break; + } + let tag = read_u16(data, entry_off, le); + let typ = read_u16(data, entry_off + 2, le); + let count = read_u32(data, entry_off + 4, le); + let val_off = entry_off + 8; + + match tag { + 256 => width = read_ifd_value(data, val_off, typ, le), + 257 => height = read_ifd_value(data, val_off, typ, le), + 259 => compression = read_ifd_value(data, val_off, typ, le), + 262 => photometric = read_ifd_value(data, val_off, typ, le), + 266 => fill_order = read_ifd_value(data, val_off, typ, le), + 273 => strip_offsets = read_ifd_array(data, val_off, typ, count, le), + 278 => { /* rows_per_strip — not needed */ } + 279 => strip_byte_counts = read_ifd_array(data, val_off, typ, count, le), + 282 => x_resolution = read_ifd_rational(data, val_off, le), + 283 => y_resolution = read_ifd_rational(data, val_off, le), + 292 => t4_options = read_ifd_value(data, val_off, typ, le), + _ => {} + } + } + + pages.push(TiffPage { + width, + height, + compression, + fill_order, + t4_options, + photometric, + strip_offsets, + strip_byte_counts, + x_resolution, + y_resolution, + }); + + let next_off_pos = ifd_offset + 2 + num_entries * 12; + if next_off_pos + 4 > data.len() { + break; + } + ifd_offset = read_u32(data, next_off_pos, le) as usize; + } + + if pages.is_empty() { + bail!("No IFDs found in TIFF"); + } + Ok(pages) +} + +fn read_u16(data: &[u8], off: usize, le: bool) -> u16 { + if le { + u16::from_le_bytes([data[off], data[off + 1]]) + } else { + u16::from_be_bytes([data[off], data[off + 1]]) + } +} + +fn read_u32(data: &[u8], off: usize, le: bool) -> u32 { + if le { + u32::from_le_bytes([data[off], data[off + 1], data[off + 2], data[off + 3]]) + } else { + u32::from_be_bytes([data[off], data[off + 1], data[off + 2], data[off + 3]]) + } +} + +fn read_ifd_value(data: &[u8], val_off: usize, typ: u16, le: bool) -> u32 { + match typ { + 1 | 6 => data[val_off] as u32, // BYTE / SBYTE + 3 | 8 => read_u16(data, val_off, le) as u32, // SHORT / SSHORT + 4 | 9 => read_u32(data, val_off, le), // LONG / SLONG + _ => read_u32(data, val_off, le), + } +} + +fn read_ifd_array(data: &[u8], val_off: usize, typ: u16, count: u32, le: bool) -> Vec { + let item_size = match typ { + 1 | 6 => 1, + 3 | 8 => 2, + 4 | 9 => 4, + _ => 4, + }; + let total_bytes = count as usize * item_size; + // If data fits in the 4-byte value field, read inline; otherwise follow the pointer + let base = if total_bytes <= 4 { + val_off + } else { + read_u32(data, val_off, le) as usize + }; + + let mut result = Vec::with_capacity(count as usize); + for i in 0..count as usize { + let off = base + i * item_size; + let v = match typ { + 1 | 6 => data.get(off).copied().unwrap_or(0) as u32, + 3 | 8 => { + if off + 2 <= data.len() { + read_u16(data, off, le) as u32 + } else { + 0 + } + } + _ => { + if off + 4 <= data.len() { + read_u32(data, off, le) + } else { + 0 + } + } + }; + result.push(v); + } + result +} + +/// Read a TIFF RATIONAL value (type=5): two u32s (numerator, denominator) at an offset. +/// The IFD value field contains an offset pointer to the 8-byte rational data. +fn read_ifd_rational(data: &[u8], val_off: usize, le: bool) -> Option<(u32, u32)> { + let offset = read_u32(data, val_off, le) as usize; + if offset + 8 > data.len() { + return None; + } + let numerator = read_u32(data, offset, le); + let denominator = read_u32(data, offset + 4, le); + if denominator == 0 { + return None; + } + Some((numerator, denominator)) +} + +// FillOrder=2 bit-reversal LUT + +const BIT_REVERSE_LUT: [u8; 256] = { + let mut lut = [0u8; 256]; + let mut i = 0u16; + while i < 256 { + let b = i as u8; + lut[i as usize] = ((b & 0x80) >> 7) + | ((b & 0x40) >> 5) + | ((b & 0x20) >> 3) + | ((b & 0x10) >> 1) + | ((b & 0x08) << 1) + | ((b & 0x04) << 3) + | ((b & 0x02) << 5) + | ((b & 0x01) << 7); + i += 1; + } + lut +}; + +// Bit Reader + +struct BitReader<'a> { + data: &'a [u8], + pos: usize, + partial: u32, + valid: u8, +} + +impl<'a> BitReader<'a> { + fn new(data: &'a [u8]) -> Self { + let mut r = BitReader { + data, + pos: 0, + partial: 0, + valid: 0, + }; + r.fill(); + r + } + + fn fill(&mut self) { + while self.valid <= 24 && self.pos < self.data.len() { + self.partial |= (self.data[self.pos] as u32) << (24 - self.valid); + self.valid += 8; + self.pos += 1; + } + } + + /// Look at the next `n` bits (MSB-aligned, returned in lower bits). + fn peek(&self, n: u8) -> Option { + if self.valid >= n { + Some((self.partial >> (32 - n)) as u16) + } else { + None + } + } + + /// Consume `n` bits and refill. + fn consume(&mut self, n: u8) { + self.partial <<= n; + self.valid -= n; + self.fill(); + } + + /// Scan for EOL pattern: at least 11 zero bits followed by a 1 bit. + /// Returns true if found, false if data exhausted. + fn scan_for_eol(&mut self) -> bool { + loop { + match self.peek(12) { + Some(1) => { + self.consume(12); + return true; + } + Some(_) => self.consume(1), + None => { + // Try consuming remaining zeros + if self.valid > 0 { + self.consume(1); + } else { + return false; + } + } + } + } + } +} + +// Huffman Lookup Tables + +/// Entry in a flat LUT: (decoded_value, bits_to_consume). 0xFFFF = invalid. +type LutEntry = (u16, u8); + +const INVALID_ENTRY: LutEntry = (0xFFFF, 0); + +/// White terminating + makeup codes from T.4 standard. +/// Format: (bit_pattern, bit_length, run_length) +const WHITE_CODES: &[(u16, u8, u16)] = &[ + (0b00110101, 8, 0), + (0b000111, 6, 1), + (0b0111, 4, 2), + (0b1000, 4, 3), + (0b1011, 4, 4), + (0b1100, 4, 5), + (0b1110, 4, 6), + (0b1111, 4, 7), + (0b10011, 5, 8), + (0b10100, 5, 9), + (0b00111, 5, 10), + (0b01000, 5, 11), + (0b001000, 6, 12), + (0b000011, 6, 13), + (0b110100, 6, 14), + (0b110101, 6, 15), + (0b101010, 6, 16), + (0b101011, 6, 17), + (0b0100111, 7, 18), + (0b0001100, 7, 19), + (0b0001000, 7, 20), + (0b0010111, 7, 21), + (0b0000011, 7, 22), + (0b0000100, 7, 23), + (0b0101000, 7, 24), + (0b0101011, 7, 25), + (0b0010011, 7, 26), + (0b0100100, 7, 27), + (0b0011000, 7, 28), + (0b00000010, 8, 29), + (0b00000011, 8, 30), + (0b00011010, 8, 31), + (0b00011011, 8, 32), + (0b00010010, 8, 33), + (0b00010011, 8, 34), + (0b00010100, 8, 35), + (0b00010101, 8, 36), + (0b00010110, 8, 37), + (0b00010111, 8, 38), + (0b00101000, 8, 39), + (0b00101001, 8, 40), + (0b00101010, 8, 41), + (0b00101011, 8, 42), + (0b00101100, 8, 43), + (0b00101101, 8, 44), + (0b00000100, 8, 45), + (0b00000101, 8, 46), + (0b00001010, 8, 47), + (0b00001011, 8, 48), + (0b01010010, 8, 49), + (0b01010011, 8, 50), + (0b01010100, 8, 51), + (0b01010101, 8, 52), + (0b00100100, 8, 53), + (0b00100101, 8, 54), + (0b01011000, 8, 55), + (0b01011001, 8, 56), + (0b01011010, 8, 57), + (0b01011011, 8, 58), + (0b01001010, 8, 59), + (0b01001011, 8, 60), + (0b00110010, 8, 61), + (0b00110011, 8, 62), + (0b00110100, 8, 63), + // Makeup codes + (0b11011, 5, 64), + (0b10010, 5, 128), + (0b010111, 6, 192), + (0b0110111, 7, 256), + (0b00110110, 8, 320), + (0b00110111, 8, 384), + (0b01100100, 8, 448), + (0b01100101, 8, 512), + (0b01101000, 8, 576), + (0b01100111, 8, 640), + (0b011001100, 9, 704), + (0b011001101, 9, 768), + (0b011010010, 9, 832), + (0b011010011, 9, 896), + (0b011010100, 9, 960), + (0b011010101, 9, 1024), + (0b011010110, 9, 1088), + (0b011010111, 9, 1152), + (0b011011000, 9, 1216), + (0b011011001, 9, 1280), + (0b011011010, 9, 1344), + (0b011011011, 9, 1408), + (0b010011000, 9, 1472), + (0b010011001, 9, 1536), + (0b010011010, 9, 1600), + (0b011000, 6, 1664), + (0b010011011, 9, 1728), + // Extended makeup (shared with black) + (0b00000001000, 11, 1792), + (0b00000001100, 11, 1856), + (0b00000001101, 11, 1920), + (0b000000010010, 12, 1984), + (0b000000010011, 12, 2048), + (0b000000010100, 12, 2112), + (0b000000010101, 12, 2176), + (0b000000010110, 12, 2240), + (0b000000010111, 12, 2304), + (0b000000011100, 12, 2368), + (0b000000011101, 12, 2432), + (0b000000011110, 12, 2496), + (0b000000011111, 12, 2560), +]; + +const BLACK_CODES: &[(u16, u8, u16)] = &[ + (0b0000110111, 10, 0), + (0b010, 3, 1), + (0b11, 2, 2), + (0b10, 2, 3), + (0b011, 3, 4), + (0b0011, 4, 5), + (0b0010, 4, 6), + (0b00011, 5, 7), + (0b000101, 6, 8), + (0b000100, 6, 9), + (0b0000100, 7, 10), + (0b0000101, 7, 11), + (0b0000111, 7, 12), + (0b00000100, 8, 13), + (0b00000111, 8, 14), + (0b000011000, 9, 15), + (0b0000010111, 10, 16), + (0b0000011000, 10, 17), + (0b0000001000, 10, 18), + (0b00001100111, 11, 19), + (0b00001101000, 11, 20), + (0b00001101100, 11, 21), + (0b00000110111, 11, 22), + (0b00000101000, 11, 23), + (0b00000010111, 11, 24), + (0b00000011000, 11, 25), + (0b000011001010, 12, 26), + (0b000011001011, 12, 27), + (0b000011001100, 12, 28), + (0b000011001101, 12, 29), + (0b000001101000, 12, 30), + (0b000001101001, 12, 31), + (0b000001101010, 12, 32), + (0b000001101011, 12, 33), + (0b000011010010, 12, 34), + (0b000011010011, 12, 35), + (0b000011010100, 12, 36), + (0b000011010101, 12, 37), + (0b000011010110, 12, 38), + (0b000011010111, 12, 39), + (0b000001101100, 12, 40), + (0b000001101101, 12, 41), + (0b000011011010, 12, 42), + (0b000011011011, 12, 43), + (0b000001010100, 12, 44), + (0b000001010101, 12, 45), + (0b000001010110, 12, 46), + (0b000001010111, 12, 47), + (0b000001100100, 12, 48), + (0b000001100101, 12, 49), + (0b000001010010, 12, 50), + (0b000001010011, 12, 51), + (0b000000100100, 12, 52), + (0b000000110111, 12, 53), + (0b000000111000, 12, 54), + (0b000000100111, 12, 55), + (0b000000101000, 12, 56), + (0b000001011000, 12, 57), + (0b000001011001, 12, 58), + (0b000000101011, 12, 59), + (0b000000101100, 12, 60), + (0b000001011010, 12, 61), + (0b000001100110, 12, 62), + (0b000001100111, 12, 63), + // Makeup codes + (0b0000001111, 10, 64), + (0b000011001000, 12, 128), + (0b000011001001, 12, 192), + (0b000001011011, 12, 256), + (0b000000110011, 12, 320), + (0b000000110100, 12, 384), + (0b000000110101, 12, 448), + (0b0000001101100, 13, 512), + (0b0000001101101, 13, 576), + (0b0000001001010, 13, 640), + (0b0000001001011, 13, 704), + (0b0000001001100, 13, 768), + (0b0000001001101, 13, 832), + (0b0000001110010, 13, 896), + (0b0000001110011, 13, 960), + (0b0000001110100, 13, 1024), + (0b0000001110101, 13, 1088), + (0b0000001110110, 13, 1152), + (0b0000001110111, 13, 1216), + (0b0000001010010, 13, 1280), + (0b0000001010011, 13, 1344), + (0b0000001010100, 13, 1408), + (0b0000001010101, 13, 1472), + (0b0000001011010, 13, 1536), + (0b0000001011011, 13, 1600), + (0b0000001100100, 13, 1664), + (0b0000001100101, 13, 1728), + // Extended makeup (shared with white) + (0b00000001000, 11, 1792), + (0b00000001100, 11, 1856), + (0b00000001101, 11, 1920), + (0b000000010010, 12, 1984), + (0b000000010011, 12, 2048), + (0b000000010100, 12, 2112), + (0b000000010101, 12, 2176), + (0b000000010110, 12, 2240), + (0b000000010111, 12, 2304), + (0b000000011100, 12, 2368), + (0b000000011101, 12, 2432), + (0b000000011110, 12, 2496), + (0b000000011111, 12, 2560), +]; + +/// 2D mode codes from T.4 standard. +/// Format: (bit_pattern, bit_length, Mode) +#[derive(Copy, Clone, Debug)] +enum Mode { + Pass, + Horizontal, + Vertical(i8), +} + +const MODE_CODES: &[(u16, u8, Mode)] = &[ + (0b0001, 4, Mode::Pass), + (0b001, 3, Mode::Horizontal), + (0b1, 1, Mode::Vertical(0)), + (0b011, 3, Mode::Vertical(1)), + (0b000011, 6, Mode::Vertical(2)), + (0b0000011, 7, Mode::Vertical(3)), + (0b010, 3, Mode::Vertical(-1)), + (0b000010, 6, Mode::Vertical(-2)), + (0b0000010, 7, Mode::Vertical(-3)), +]; + +const WHITE_LUT_BITS: u8 = 12; +const BLACK_LUT_BITS: u8 = 13; +const MODE_LUT_BITS: u8 = 7; + +fn white_lut() -> &'static [LutEntry] { + static LUT: OnceLock> = OnceLock::new(); + LUT.get_or_init(|| build_lut(WHITE_CODES, WHITE_LUT_BITS)) +} + +fn black_lut() -> &'static [LutEntry] { + static LUT: OnceLock> = OnceLock::new(); + LUT.get_or_init(|| build_lut(BLACK_CODES, BLACK_LUT_BITS)) +} + +fn mode_lut() -> &'static [(u8, Mode)] { + static LUT: OnceLock> = OnceLock::new(); + LUT.get_or_init(|| { + let size = 1usize << MODE_LUT_BITS; + let mut lut = vec![(0u8, Mode::Pass); size]; + // Mark all as invalid first (len=0) + for entry in lut.iter_mut() { + entry.0 = 0; + } + for &(pattern, len, mode) in MODE_CODES { + let shift = MODE_LUT_BITS - len; + let base = (pattern as usize) << shift; + for suffix in 0..(1usize << shift) { + lut[base | suffix] = (len, mode); + } + } + lut + }) +} + +fn build_lut(codes: &[(u16, u8, u16)], lut_bits: u8) -> Vec { + let size = 1usize << lut_bits; + let mut lut = vec![INVALID_ENTRY; size]; + for &(pattern, len, value) in codes { + if len > lut_bits { + continue; + } + let shift = lut_bits - len; + let base = (pattern as usize) << shift; + for suffix in 0..(1usize << shift) { + lut[base | suffix] = (value, len); + } + } + lut +} + +// Huffman Decoders + +#[derive(Copy, Clone, PartialEq)] +enum Color { + White, + Black, +} + +impl Color { + fn flip(self) -> Self { + match self { + Color::White => Color::Black, + Color::Black => Color::White, + } + } +} + +/// Decode a single run-length code (terminating or makeup). +fn decode_run(reader: &mut BitReader, color: Color) -> Option { + match color { + Color::White => { + let bits = reader.peek(WHITE_LUT_BITS)?; + let (val, len) = white_lut()[bits as usize]; + if val == 0xFFFF { + return None; + } + reader.consume(len); + Some(val) + } + Color::Black => { + let bits = reader.peek(BLACK_LUT_BITS)?; + let (val, len) = black_lut()[bits as usize]; + if val == 0xFFFF { + return None; + } + reader.consume(len); + Some(val) + } + } +} + +/// Decode a full run: sum makeup codes until a terminating code (< 64). +fn decode_full_run(reader: &mut BitReader, color: Color) -> Option { + let mut total = 0u16; + loop { + let n = decode_run(reader, color)?; + total += n; + if n < 64 { + return Some(total); + } + } +} + +/// Decode a 2D mode code. +fn decode_mode(reader: &mut BitReader) -> Option { + let bits = reader.peek(MODE_LUT_BITS)?; + let (len, mode) = mode_lut()[bits as usize]; + if len == 0 { + return None; + } + reader.consume(len); + Some(mode) +} + +// Reference Line Helpers (for 2D decoding) + +/// Find b1: the next transition on the reference line of the opposite color, +/// at or after position `a0`. +fn find_b1(reference: &[u16], a0: u16, current_color: Color, width: u16) -> u16 { + // Reference transitions alternate white->black (index 0), black->white (index 1), ... + // We need the first transition in reference that is > a0 and corresponds to the opposite color. + // Color at position 0 is White. Transition at index i flips to: + // i even -> Black (end of white run) + // i odd -> White (end of black run) + // The color AFTER transition[i] is: even=Black, odd=White + // We want opposite of current_color. + // b1 is the first changing element on the reference line to the right of a0 + // whose color is opposite to the current color on the coding line. + + let want_black_transition = current_color == Color::White; + // If want_black_transition, we want an even-indexed transition (white->black) + // If want_white_transition, we want an odd-indexed transition (black->white) + + for (i, &t) in reference.iter().enumerate() { + if t <= a0 { + continue; + } + let is_even = i % 2 == 0; + if is_even == want_black_transition { + return t; + } + } + width +} + +/// Find b2: the next transition after b1 on the reference line. +fn find_b2(reference: &[u16], b1: u16, width: u16) -> u16 { + for &t in reference { + if t > b1 { + return t; + } + } + width +} + +// 1D Line Decoder (Modified Huffman) + +fn decode_line_1d(reader: &mut BitReader, width: u16) -> Option> { + let mut transitions = Vec::new(); + let mut a0 = 0u16; + let mut color = Color::White; + + while a0 < width { + let run = decode_full_run(reader, color)?; + a0 += run; + if a0 < width { + transitions.push(a0); + } + color = color.flip(); + } + Some(transitions) +} + +// 2D Line Decoder (Modified READ) + +fn decode_line_2d(reader: &mut BitReader, reference: &[u16], width: u16) -> Option> { + let mut transitions = Vec::new(); + let mut a0 = 0u16; + let mut color = Color::White; + + loop { + if a0 >= width { + break; + } + + let mode = decode_mode(reader)?; + match mode { + Mode::Pass => { + let b1 = find_b1(reference, a0, color, width); + let b2 = find_b2(reference, b1, width); + a0 = b2; + // Color doesn't change after pass + } + Mode::Vertical(delta) => { + let b1 = find_b1(reference, a0, color, width); + let a1 = (b1 as i32 + delta as i32).max(0) as u16; + if a1 >= width { + // Line ends + break; + } + transitions.push(a1); + a0 = a1; + color = color.flip(); + } + Mode::Horizontal => { + let run1 = decode_full_run(reader, color)?; + let run2 = decode_full_run(reader, color.flip())?; + let a1 = a0 + run1; + let a2 = a1 + run2; + transitions.push(a1); + if a2 >= width { + break; + } + transitions.push(a2); + a0 = a2; + // Color returns to original after horizontal + } + } + } + + Some(transitions) +} + +// Group 3 Image Driver + +fn decode_group3(data: &[u8], width: u32, height: u32, t4_options: u32) -> Result>> { + let w = width as u16; + let is_2d = (t4_options & 1) != 0; + let has_fill_bits = (t4_options & 4) != 0; + let mut reader = BitReader::new(data); + let mut lines: Vec> = Vec::with_capacity(height as usize); + let mut reference: Vec = Vec::new(); + + // Scan for the first EOL + if !reader.scan_for_eol() { + bail!("No EOL found at start of Group 3 data"); + } + + for _ in 0..height { + // After EOL, if 2D, read the tag bit: 1=1D, 0=2D + let use_2d = if is_2d { + match reader.peek(1) { + Some(tag) => { + reader.consume(1); + tag == 0 + } + None => break, + } + } else { + false + }; + + let line = if use_2d { + match decode_line_2d(&mut reader, &reference, w) { + Some(l) => l, + None => break, + } + } else { + match decode_line_1d(&mut reader, w) { + Some(l) => l, + None => break, + } + }; + + reference = line.clone(); + lines.push(line); + + // Skip fill bits (zero-pad to byte boundary before EOL) if enabled + if has_fill_bits { + // Consume zeros until we see the EOL pattern + loop { + match reader.peek(12) { + Some(0x001) => break, // Found EOL (000000000001) + Some(v) if (v >> 11) == 0 => reader.consume(1), // Leading zero + _ => break, + } + } + } + + // Try to read EOL + match reader.peek(12) { + Some(0x001) => { + reader.consume(12); + let mut consecutive_eols = 1u32; + + // Check for RTC (Return To Control): 6 consecutive EOLs + // In 2D mode each EOL has a tag bit, so check EOL+tag sequences + loop { + if is_2d { + // Peek EOL (12 bits) + tag (1 bit) = 13 bits + match reader.peek(13) { + Some(v) if (v >> 1) == 0x001 => { + reader.consume(13); + consecutive_eols += 1; + if consecutive_eols >= 6 { + return Ok(lines); + } + } + _ => break, + } + } else { + match reader.peek(12) { + Some(0x001) => { + reader.consume(12); + consecutive_eols += 1; + if consecutive_eols >= 6 { + return Ok(lines); + } + } + _ => break, + } + } + } + } + _ => { + // No EOL found — might be end of data + } + } + } + + if lines.is_empty() { + bail!("Group 3 decoder produced no lines"); + } + Ok(lines) +} + +// Group 4 Image Driver + +fn decode_group4(data: &[u8], width: u32, height: u32) -> Result>> { + let w = width as u16; + let mut reader = BitReader::new(data); + let mut lines: Vec> = Vec::with_capacity(height as usize); + let mut reference: Vec = Vec::new(); + + for _ in 0..height { + // Check for EOFB (End Of Facsimile Block): two consecutive EOL codes + if let Some(v) = reader.peek(12) { + if v == 0x001 { + // Possible EOFB — check for second EOL + break; + } + } + + let line = match decode_line_2d(&mut reader, &reference, w) { + Some(l) => l, + None => break, + }; + + reference = line.clone(); + lines.push(line); + } + + if lines.is_empty() { + bail!("Group 4 decoder produced no lines"); + } + Ok(lines) +} + +// Pixel Assembly + +/// Scale image to correct for non-square pixel aspect ratios. +/// +/// Fax standard resolution uses 204×98 DPI (non-square pixels). Without correction, +/// the image appears vertically compressed (stretched when rendered at 1:1). +fn correct_aspect_ratio( + img: GrayImage, + x_res: Option<(u32, u32)>, + y_res: Option<(u32, u32)>, +) -> GrayImage { + let (x_num, x_den) = match x_res { + Some(r) => r, + None => return img, + }; + let (y_num, y_den) = match y_res { + Some(r) => r, + None => return img, + }; + + let x_dpi = x_num as f64 / x_den as f64; + let y_dpi = y_num as f64 / y_den as f64; + let ratio = x_dpi / y_dpi; + + // Skip scaling if pixels are approximately square (within 5%) + if ratio > 0.95 && ratio < 1.05 { + return img; + } + + let (w, h) = img.dimensions(); + if ratio > 1.0 { + // X resolution higher than Y — scale height up to match + let new_height = (h as f64 * ratio).round() as u32; + debug!( + "Correcting fax aspect ratio: {:.0}×{:.0} DPI, scaling {}×{} → {}×{}", + x_dpi, y_dpi, w, h, w, new_height + ); + image::imageops::resize(&img, w, new_height, image::imageops::FilterType::Lanczos3) + } else { + // Y resolution higher than X — scale width up to match + let new_width = (w as f64 / ratio).round() as u32; + debug!( + "Correcting fax aspect ratio: {:.0}×{:.0} DPI, scaling {}×{} → {}×{}", + x_dpi, y_dpi, w, h, new_width, h + ); + image::imageops::resize(&img, new_width, h, image::imageops::FilterType::Lanczos3) + } +} + +fn assemble_image(lines: &[Vec], width: u32, height: u32, photometric: u32) -> GrayImage { + // photometric 0 = WhiteIsZero (normal for fax: 0=white, 1=black) + // photometric 1 = BlackIsZero + let invert = photometric == 1; + + let actual_height = lines.len().min(height as usize); + let white = if invert { 0u8 } else { 255u8 }; + let mut img = GrayImage::from_pixel(width, actual_height as u32, image::Luma([white])); + let w = width as usize; + + for (y, transitions) in lines.iter().enumerate().take(actual_height) { + let row_start = y * w; + let row = &mut img.as_mut()[row_start..row_start + w]; + let mut color = white; + let mut x = 0usize; + for &t in transitions { + let t = (t as usize).min(w); + if t > x { + row[x..t].fill(color); + x = t; + } + color = if color == 255 { 0 } else { 255 }; + } + if x < w { + row[x..].fill(color); + } + } + + img +} + +#[cfg(test)] +mod tests { + use super::*; + + /// Test against the example fax TIFF bundled in src/fax/. + /// This is a real SpanDSP-produced TIFF: compression=3, FillOrder=2, T4Options=5 (2D + fill bits). + #[test] + fn test_decode_example_tiff() { + let path = Path::new(env!("CARGO_MANIFEST_DIR")).join("src/fax/example.tiff"); + let images = decode_fax_tiff(&path).expect("Failed to decode example.tiff"); + + assert_eq!(images.len(), 1, "Expected 1 page"); + let img = &images[0]; + + // Width stays at standard fax width; height may be scaled by aspect ratio correction + assert_eq!(img.width(), 1728, "Standard fax width"); + // Original pixel height is 2199. If resolution tags indicate non-square pixels + // (e.g., 204×98 DPI), the image will be scaled up vertically. + assert!( + img.height() >= 2199, + "Height should be >= original 2199 (may be scaled for aspect ratio), got {}", + img.height() + ); + + // Spot-check: top-left area should be mostly white (header region) + let white_count: usize = (0..100) + .flat_map(|y| (0..100).map(move |x| (x, y))) + .filter(|&(x, y)| img.get_pixel(x, y).0[0] == 255) + .count(); + assert!( + white_count > 9000, + "Top-left 100x100 should be mostly white, got {} white pixels", + white_count + ); + + // There should be some black pixels (the fax has content) + let total_black: usize = img.pixels().filter(|p| p.0[0] == 0).count(); + assert!( + total_black > 1000, + "Image should contain black pixels (fax content), got {}", + total_black + ); + } + + /// Verify that resolution tags are parsed from example.tiff. + #[test] + fn test_parse_resolution_tags() { + let path = Path::new(env!("CARGO_MANIFEST_DIR")).join("src/fax/example.tiff"); + let data = std::fs::read(&path).expect("Failed to read example.tiff"); + let pages = parse_tiff_ifds(&data).expect("Failed to parse IFDs"); + + assert_eq!(pages.len(), 1); + let page = &pages[0]; + + // SpanDSP writes resolution tags for fax TIFFs + assert!( + page.x_resolution.is_some(), + "Expected XResolution tag in example.tiff" + ); + assert!( + page.y_resolution.is_some(), + "Expected YResolution tag in example.tiff" + ); + + let (x_num, x_den) = page.x_resolution.unwrap(); + let (y_num, y_den) = page.y_resolution.unwrap(); + let x_dpi = x_num as f64 / x_den as f64; + let y_dpi = y_num as f64 / y_den as f64; + + // Standard fax resolutions: 204 or 200 DPI horizontal, 98 or 196 or 200 DPI vertical + assert!( + x_dpi > 100.0 && x_dpi < 300.0, + "XResolution {:.1} DPI out of expected range", + x_dpi + ); + assert!( + y_dpi > 50.0 && y_dpi < 400.0, + "YResolution {:.1} DPI out of expected range", + y_dpi + ); + } + + // BIT_REVERSE_LUT tests + + #[test] + fn bit_reverse_lut_spot_checks() { + assert_eq!(BIT_REVERSE_LUT[0x00], 0x00); + assert_eq!(BIT_REVERSE_LUT[0xFF], 0xFF); + assert_eq!(BIT_REVERSE_LUT[0x80], 0x01); + assert_eq!(BIT_REVERSE_LUT[0x01], 0x80); + assert_eq!(BIT_REVERSE_LUT[0xAA], 0x55); + assert_eq!(BIT_REVERSE_LUT[0x55], 0xAA); + } + + #[test] + fn bit_reverse_lut_double_reverse_is_identity() { + for i in 0..=255u8 { + assert_eq!( + BIT_REVERSE_LUT[BIT_REVERSE_LUT[i as usize] as usize], i, + "Double reverse should be identity for {}", + i + ); + } + } + + // BitReader tests + + #[test] + fn bit_reader_peek_and_consume() { + // 0xA5 = 10100101 + let data = [0xA5]; + let mut reader = BitReader::new(&data); + + // Peek first 4 bits: 1010 = 10 + assert_eq!(reader.peek(4), Some(0b1010)); + + // Consume 4, then peek next 4: 0101 = 5 + reader.consume(4); + assert_eq!(reader.peek(4), Some(0b0101)); + } + + #[test] + fn bit_reader_peek_more_than_available() { + let data = [0xFF]; // 8 bits + let reader = BitReader::new(&data); + // 8 bits available, asking for 9 should fail + assert!(reader.peek(9).is_none()); + } + + #[test] + fn bit_reader_scan_for_eol_found() { + // EOL = 000000000001 (11 zeros + 1) + // Byte-aligned: 0x00 0x01 = 00000000 00000001 + // That's 15 zeros then 1 — contains the 11+1 EOL pattern + let data = [0x00, 0x01]; + let mut reader = BitReader::new(&data); + assert!(reader.scan_for_eol()); + } + + #[test] + fn bit_reader_scan_for_eol_not_found() { + // All ones — no EOL pattern + let data = [0xFF, 0xFF]; + let mut reader = BitReader::new(&data); + assert!(!reader.scan_for_eol()); + } + + #[test] + fn bit_reader_scan_for_eol_empty() { + let data: [u8; 0] = []; + let mut reader = BitReader::new(&data); + assert!(!reader.scan_for_eol()); + } + + // assemble_image tests + + #[test] + fn assemble_image_white_is_zero_transitions() { + // photometric=0 (WhiteIsZero): white=255, black=0 + // Width 300, transitions at [100, 200]: white 0-99, black 100-199, white 200-299 + let lines = vec![vec![100u16, 200u16]]; + let img = assemble_image(&lines, 300, 1, 0); + + assert_eq!(img.width(), 300); + assert_eq!(img.height(), 1); + + // White region: 0-99 + assert_eq!(img.get_pixel(0, 0).0[0], 255); + assert_eq!(img.get_pixel(99, 0).0[0], 255); + // Black region: 100-199 + assert_eq!(img.get_pixel(100, 0).0[0], 0); + assert_eq!(img.get_pixel(199, 0).0[0], 0); + // White region: 200-299 + assert_eq!(img.get_pixel(200, 0).0[0], 255); + assert_eq!(img.get_pixel(299, 0).0[0], 255); + } + + #[test] + fn assemble_image_black_is_zero_inverted() { + // photometric=1 (BlackIsZero): white=0, black=255 + // Same transitions — colors should be inverted + let lines = vec![vec![100u16, 200u16]]; + let img = assemble_image(&lines, 300, 1, 1); + + // "White" region (value 0): 0-99 + assert_eq!(img.get_pixel(0, 0).0[0], 0); + assert_eq!(img.get_pixel(99, 0).0[0], 0); + // "Black" region (value 255): 100-199 + assert_eq!(img.get_pixel(100, 0).0[0], 255); + assert_eq!(img.get_pixel(199, 0).0[0], 255); + // "White" region (value 0): 200-299 + assert_eq!(img.get_pixel(200, 0).0[0], 0); + assert_eq!(img.get_pixel(299, 0).0[0], 0); + } + + #[test] + fn assemble_image_empty_transitions_all_white() { + // No transitions = entire row is white + let lines = vec![vec![]]; + let img = assemble_image(&lines, 100, 1, 0); + + for x in 0..100 { + assert_eq!(img.get_pixel(x, 0).0[0], 255, "Pixel {} should be white", x); + } + } + + // decode_fax_tiff error cases + + #[test] + fn decode_fax_tiff_missing_file() { + let path = Path::new("/tmp/nonexistent_fax_test_file_12345.tiff"); + let result = decode_fax_tiff(path); + assert!(result.is_err()); + let err = result.unwrap_err().to_string(); + assert!( + err.contains("not found"), + "Error should mention file not found: {}", + err + ); + } + + #[test] + fn test_assemble_image_uses_actual_height_not_declared() { + // Simulate a short fax: declared height is 100, but only 30 lines decoded + let width = 10u32; + let declared_height = 100u32; + let lines: Vec> = (0..30) + .map(|_| vec![5, 10]) // each line: 5 white pixels, 5 black pixels + .collect(); + + let img = assemble_image(&lines, width, declared_height, 0); + + // Image height should be the actual line count, not the declared height + assert_eq!( + img.height(), + 30, + "Image height should match actual decoded lines (30), not declared height (100)" + ); + assert_eq!(img.width(), width); + } + + #[test] + fn test_assemble_image_full_page_unchanged() { + // When lines.len() == declared height, nothing changes + let width = 10u32; + let height = 50u32; + let lines: Vec> = (0..50) + .map(|_| vec![5, 10]) + .collect(); + + let img = assemble_image(&lines, width, height, 0); + assert_eq!(img.height(), 50); + assert_eq!(img.width(), width); + } +} diff --git a/sipcord-bridge/src/lib.rs b/sipcord-bridge/src/lib.rs new file mode 100644 index 0000000..bded370 --- /dev/null +++ b/sipcord-bridge/src/lib.rs @@ -0,0 +1,18 @@ +//! Sipcord Bridge - SIP to Discord Voice Bridge +//! +//! A generic SIP-to-Discord voice bridge library. Provides all the core +//! functionality for bridging SIP phone calls to Discord voice channels, +//! including fax (G.711 and T.38) support. +//! +//! Backends implement the `routing::Backend` trait to control call routing +//! and authentication. A built-in `StaticBackend` (TOML dialplan) is included. + +#![feature(portable_simd)] + +pub mod audio; +pub mod call; +pub mod config; +pub mod fax; +pub mod routing; +pub mod services; +pub mod transport; diff --git a/sipcord-bridge/src/main.rs b/sipcord-bridge/src/main.rs new file mode 100644 index 0000000..bc3edd1 --- /dev/null +++ b/sipcord-bridge/src/main.rs @@ -0,0 +1,126 @@ +//! Sipcord Bridge - Static Router Binary +//! +//! Standalone SIP-to-Discord voice bridge using a TOML dialplan. + +#![feature(portable_simd)] + +use std::path::PathBuf; +use std::sync::Arc; + +use anyhow::{Context, Result}; +use tracing::{error, info}; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; + +use sipcord_bridge::call::BridgeCoordinator; +use sipcord_bridge::config::{AppConfig, EnvConfig, SipConfig, APP_CONFIG}; +use sipcord_bridge::routing::static_router::StaticBackend; +use sipcord_bridge::transport::discord::SharedDiscordClient; +use sipcord_bridge::transport::sip::SipTransport; + +#[tokio::main] +async fn main() -> Result<()> { + rustls::crypto::ring::default_provider() + .install_default() + .expect("Failed to install rustls crypto provider"); + + tracing_subscriber::registry() + .with( + tracing_subscriber::EnvFilter::try_from_default_env() + .unwrap_or_else(|_| "sipcord_bridge=info,pjsip=warn".into()), + ) + .with(tracing_subscriber::fmt::layer()) + .init(); + + info!("Starting Sipcord Bridge v{}", env!("CARGO_PKG_VERSION")); + + EnvConfig::init()?; + + let config_path = PathBuf::from(&EnvConfig::global().config_path); + let app_config = AppConfig::load(&config_path)?; + APP_CONFIG + .set(app_config) + .expect("AppConfig already initialized"); + info!("Loaded config from {}", config_path.display()); + + run_static_router().await +} + +async fn run_static_router() -> Result<()> { + let bot_token = EnvConfig::global() + .discord_bot_token + .clone() + .context("DISCORD_BOT_TOKEN required")?; + let sip_config = SipConfig::from_env()?; + + // Load dialplan + let dialplan_path = PathBuf::from(&EnvConfig::global().dialplan_path); + let backend = Arc::new(StaticBackend::load(&dialplan_path, bot_token.clone())?); + + // Create SIP transport (no TLS for static router) + let sip_transport = SipTransport::new(sip_config.clone(), None); + let sip_event_tx = sip_transport.event_sender(); + + // Create channel for outbound call events (SIP callbacks still emit these) + let (outbound_event_tx, mut outbound_event_rx) = tokio::sync::mpsc::channel(100); + sipcord_bridge::transport::sip::set_outbound_event_sender(outbound_event_tx); + + // Forward outbound call events to the main SIP event channel + let sip_event_tx_for_outbound = sip_event_tx.clone(); + tokio::spawn(async move { + while let Some(event) = outbound_event_rx.recv().await { + let _ = sip_event_tx_for_outbound.send(event); + } + }); + + // Create shared Discord client + let shared_discord = SharedDiscordClient::new(&bot_token) + .await + .expect("Failed to create shared Discord client"); + info!("Shared Discord client initialized"); + + let bridge = BridgeCoordinator::new( + backend, + sip_transport.commands(), + sip_transport.events(), + shared_discord, + ); + + info!("Starting components..."); + + let mut sip_handle = tokio::spawn(async move { + if let Err(e) = sip_transport.run().await { + error!("SIP server error: {}", e); + } + }); + + let mut bridge_handle = tokio::spawn(async move { + if let Err(e) = bridge.run().await { + error!("Bridge coordinator error: {}", e); + } + }); + + info!( + "Static router running on {}:{}", + sip_config.public_host, sip_config.port + ); + + tokio::select! { + _ = tokio::signal::ctrl_c() => info!("Shutdown signal received"), + sip_res = &mut sip_handle => { if let Err(e) = sip_res { error!("SIP task failed: {}", e); } }, + bridge_res = &mut bridge_handle => { if let Err(e) = bridge_res { error!("Bridge task failed: {}", e); } }, + } + + info!("Shutting down..."); + + std::thread::spawn(|| { + std::thread::sleep(std::time::Duration::from_secs(2)); + std::process::exit(0); + }); + + sip_handle.abort(); + bridge_handle.abort(); + sipcord_bridge::transport::sip::shutdown_pjsua(); + + info!("Shutdown complete"); + Ok(()) +} diff --git a/sipcord-bridge/src/routing/mod.rs b/sipcord-bridge/src/routing/mod.rs new file mode 100644 index 0000000..3e4f708 --- /dev/null +++ b/sipcord-bridge/src/routing/mod.rs @@ -0,0 +1,101 @@ +pub mod static_router; + +use crate::services::snowflake::Snowflake; +use crate::transport::sip::DigestAuthParams; +use async_trait::async_trait; + +/// Outbound call request from the backend (e.g., Discord /call command) +#[derive(Debug, Clone)] +pub struct OutboundCallRequest { + pub call_id: String, + pub discord_username: String, + pub guild_id: String, + pub channel_id: String, + pub bot_token: String, + pub caller_username: String, + pub created_at: std::time::Instant, +} + +/// Result of routing an incoming SIP call +pub enum RouteDecision { + /// Connect to this Discord voice channel + Connect { + channel_id: Snowflake, + guild_id: Snowflake, + user_id: String, + bot_token: String, + }, + /// Handle as incoming fax — post to a Discord text channel + ConnectFax { + text_channel_id: Snowflake, + guild_id: Snowflake, + user_id: String, + bot_token: String, + }, + /// Redirect to another bridge server + Redirect { domain: String, extension: String }, + /// Reject with invalid credentials (no error sound, just hangup) + RejectInvalidCredentials, + /// Play an error sound and hangup + RejectWithError { error: CallError }, +} + +/// Errors that trigger audio playback before hangup +#[derive(Debug, Clone, Copy)] +pub enum CallError { + NoChannelMapping, + NoPermissions, + DiscordApiError, + ServerBusy, + Unknown, +} + +impl CallError { + /// Get the sound name for this error type + pub fn sound_name(&self) -> &'static str { + match self { + CallError::NoChannelMapping => "no_channel_mapping", + CallError::NoPermissions => "no_permissions", + CallError::DiscordApiError => "server_is_busy", + CallError::ServerBusy => "server_is_busy", + CallError::Unknown => "unknown_error", + } + } +} + +/// Info about a call that just started (for backend tracking) +pub struct CallStartedInfo { + pub sip_call_id: String, + pub user_id: String, + pub guild_id: String, + pub channel_id: String, + pub extension: String, +} + +/// The routing backend — tells the bridge who to connect and when. +/// +/// This is the open-source boundary: the core bridge knows how to connect +/// SIP <-> Discord audio. The Backend tells it *who* to connect and *when*. +#[async_trait] +pub trait Backend: Send + Sync { + /// Get the Discord bot token + fn bot_token(&self) -> &str; + + /// Route an incoming SIP call (authenticate + get destination) + async fn route_call(&self, digest_auth: &DigestAuthParams, extension: &str) -> RouteDecision; + + /// Notify that a call has started + async fn on_call_started(&self, info: &CallStartedInfo); + + /// Notify that a call has ended + async fn on_call_ended(&self, sip_call_id: &str); + + /// Send heartbeat for active channels + async fn heartbeat(&self, active_channel_ids: &[String]); + + /// Report outbound call status back to the backend + fn report_call_status(&self, call_id: &str, status: &str); + + /// Get the next outbound call request (None if backend doesn't support outbound) + async fn next_outbound_request(&self) -> Option; +} diff --git a/sipcord-bridge/src/routing/static_router.rs b/sipcord-bridge/src/routing/static_router.rs new file mode 100644 index 0000000..44afcc5 --- /dev/null +++ b/sipcord-bridge/src/routing/static_router.rs @@ -0,0 +1,208 @@ +//! Static dialplan router — routes calls based on a TOML file. +//! +//! This is the open-source-friendly backend that doesn't require the SIPcord API. +//! It reads a `dialplan.toml` file mapping extensions to Discord voice channels. +//! +//! Required env var: `DISCORD_BOT_TOKEN` +//! +//! Example `dialplan.toml`: +//! ```toml +//! [extensions] +//! 1000 = { guild = 123456789012345678, channel = 987654321012345678 } +//! 2000 = { guild = 123456789012345678, channel = 111222333444555666 } +//! ``` + +use std::collections::HashMap; +use std::path::Path; + +use async_trait::async_trait; +use serde::Deserialize; +use tracing::info; + +use crate::routing::{Backend, CallError, CallStartedInfo, OutboundCallRequest, RouteDecision}; +use crate::services::snowflake::Snowflake; +use crate::transport::sip::DigestAuthParams; + +#[derive(Deserialize, Clone)] +struct ExtensionTarget { + guild: Snowflake, + channel: Snowflake, +} + +#[derive(Deserialize)] +struct Dialplan { + extensions: HashMap, +} + +/// Static file-based routing backend. +/// +/// Routes calls by looking up the dialed extension in a TOML dialplan file. +/// No authentication is performed — any caller dialing a known extension is connected. +/// Outbound calls are not supported. +pub struct StaticBackend { + bot_token: String, + extensions: HashMap, +} + +impl StaticBackend { + /// Load the dialplan from a TOML file. `bot_token` comes from the environment. + pub fn load(path: &Path, bot_token: String) -> anyhow::Result { + let content = std::fs::read_to_string(path) + .map_err(|e| anyhow::anyhow!("Failed to read {}: {}", path.display(), e))?; + let dialplan: Dialplan = toml::from_str(&content) + .map_err(|e| anyhow::anyhow!("Failed to parse {}: {}", path.display(), e))?; + + info!( + "Loaded dialplan from {} ({} extensions)", + path.display(), + dialplan.extensions.len(), + ); + for (ext, target) in &dialplan.extensions { + info!( + " ext {} -> guild {} channel {}", + ext, target.guild, target.channel + ); + } + + Ok(Self { + bot_token, + extensions: dialplan.extensions, + }) + } +} + +#[async_trait] +impl Backend for StaticBackend { + fn bot_token(&self) -> &str { + &self.bot_token + } + + async fn route_call(&self, _digest_auth: &DigestAuthParams, extension: &str) -> RouteDecision { + match self.extensions.get(extension) { + Some(target) => RouteDecision::Connect { + channel_id: target.channel, + guild_id: target.guild, + user_id: "static".to_string(), + bot_token: self.bot_token.clone(), + }, + None => { + tracing::warn!("Extension {} not found in dialplan", extension); + RouteDecision::RejectWithError { + error: CallError::NoChannelMapping, + } + } + } + } + + async fn on_call_started(&self, info: &CallStartedInfo) { + info!( + "Call started: {} -> channel {} (ext {})", + info.sip_call_id, info.channel_id, info.extension + ); + } + + async fn on_call_ended(&self, sip_call_id: &str) { + info!("Call ended: {}", sip_call_id); + } + + async fn heartbeat(&self, _active_channel_ids: &[String]) {} + + fn report_call_status(&self, _call_id: &str, _status: &str) {} + + async fn next_outbound_request(&self) -> Option { + // Static router doesn't support outbound calls — block forever + std::future::pending().await + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_load_valid_dialplan() { + let toml_content = r#" +[extensions] +1000 = { guild = 123456789012345678, channel = 987654321012345678 } +2000 = { guild = 123456789012345678, channel = 111222333444555666 } +"#; + let dir = std::env::temp_dir().join("sipcord_test_dialplan"); + std::fs::create_dir_all(&dir).ok(); + let path = dir.join("test_dialplan.toml"); + std::fs::write(&path, toml_content).unwrap(); + + let backend = StaticBackend::load(&path, "test_token".to_string()).unwrap(); + assert_eq!(backend.extensions.len(), 2); + assert!(backend.extensions.contains_key("1000")); + assert!(backend.extensions.contains_key("2000")); + } + + #[test] + fn test_route_known_extension() { + let toml_content = r#" +[extensions] +1000 = { guild = 111, channel = 222 } +"#; + let dir = std::env::temp_dir().join("sipcord_test_dialplan"); + std::fs::create_dir_all(&dir).ok(); + let path = dir.join("test_route.toml"); + std::fs::write(&path, toml_content).unwrap(); + + let backend = StaticBackend::load(&path, "tok".to_string()).unwrap(); + + let rt = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap(); + rt.block_on(async { + let decision = backend + .route_call(&DigestAuthParams::default(), "1000") + .await; + match decision { + RouteDecision::Connect { channel_id, .. } => { + assert_eq!(channel_id, Snowflake::new(222)); + } + _ => panic!("Expected Connect"), + } + }); + } + + #[test] + fn test_route_unknown_extension() { + let toml_content = r#" +[extensions] +1000 = { guild = 111, channel = 222 } +"#; + let dir = std::env::temp_dir().join("sipcord_test_dialplan"); + std::fs::create_dir_all(&dir).ok(); + let path = dir.join("test_route_unknown.toml"); + std::fs::write(&path, toml_content).unwrap(); + + let backend = StaticBackend::load(&path, "tok".to_string()).unwrap(); + + let rt = tokio::runtime::Builder::new_current_thread() + .build() + .unwrap(); + rt.block_on(async { + let decision = backend + .route_call(&DigestAuthParams::default(), "9999") + .await; + match decision { + RouteDecision::RejectWithError { error } => { + assert!(matches!(error, CallError::NoChannelMapping)); + } + _ => panic!("Expected RejectWithError"), + } + }); + } + + #[test] + fn test_load_malformed_toml() { + let dir = std::env::temp_dir().join("sipcord_test_dialplan"); + std::fs::create_dir_all(&dir).ok(); + let path = dir.join("test_bad.toml"); + std::fs::write(&path, "this is not valid toml [[[").unwrap(); + + let result = StaticBackend::load(&path, "tok".to_string()); + assert!(result.is_err()); + } +} diff --git a/sipcord-bridge/src/services/auth_cache.rs b/sipcord-bridge/src/services/auth_cache.rs new file mode 100644 index 0000000..e22fc8c --- /dev/null +++ b/sipcord-bridge/src/services/auth_cache.rs @@ -0,0 +1,274 @@ +//! SIP credential cache for local digest auth verification +//! +//! Caches HA1 hashes returned by the API so that repeat REGISTER requests +//! can be verified locally without an API round-trip. On cache miss or +//! verification failure, falls through to the API. +//! +//! Also tracks consecutive auth failures per username to rate-limit +//! users with bad credentials (429 cooldown after N failures). + +use md5::{Digest, Md5}; +use moka::sync::Cache; +use std::sync::{Arc, OnceLock}; +use std::time::Duration; + +use crate::transport::sip::DigestAuthParams; + +/// Global auth cache instance accessible from C callbacks +static AUTH_CACHE: OnceLock> = OnceLock::new(); + +/// Result of checking digest auth against the cache +pub enum VerifyResult { + /// Cache hit and credentials verified successfully + Verified, + /// Cache had an entry but credentials didn't match (wrong password or stale cache) + Mismatch, + /// No cache entry for this username + Miss, +} + +/// Data returned from a successful REGISTER authentication +#[derive(Clone, Debug)] +pub struct RegisterData { + pub sip_username: String, + /// None if user has allow_inbound_calls disabled + pub discord_username: Option, + /// Pre-computed HA1 hash for caching + pub ha1: Option, +} + +/// Cached credential entry for a SIP user +#[derive(Clone, Debug)] +pub struct CachedAuth { + /// Pre-computed MD5(username:sipcord:password) + pub ha1: String, + /// Cached registration data + pub register_data: RegisterData, +} + +/// In-memory credential cache with TTL +pub struct AuthCache { + cache: Cache, + /// Consecutive auth failure count per username (TTL = cooldown period) + failures: Cache, + /// Number of failures before cooldown kicks in + max_failures: u32, +} + +impl AuthCache { + /// Create a new cache with the given TTL for entries + pub fn new(ttl: Duration, failure_cooldown: Duration, max_failures: u32) -> Self { + Self { + cache: Cache::builder() + .time_to_live(ttl) + .max_capacity(10_000) + .build(), + failures: Cache::builder() + .time_to_live(failure_cooldown) + .max_capacity(10_000) + .build(), + max_failures, + } + } + + /// Set this cache as the global instance + pub fn set_global(cache: Arc) { + let _ = AUTH_CACHE.set(cache); + } + + /// Get the global auth cache instance + pub fn global() -> Option<&'static Arc> { + AUTH_CACHE.get() + } + + /// Record a failed auth attempt, returns the new failure count + pub fn record_failure(&self, username: &str) -> u32 { + let count = self.failures.get(username).unwrap_or(0) + 1; + self.failures.insert(username.to_string(), count); + count + } + + /// Clear failure count on successful auth + pub fn clear_failures(&self, username: &str) { + self.failures.invalidate(username); + } + + /// Check if a username is in auth cooldown (too many failures) + pub fn is_in_cooldown(&self, username: &str) -> bool { + self.failures.get(username).unwrap_or(0) >= self.max_failures + } + + /// Try to verify digest auth locally using cached HA1. + /// Returns Some(cached_data) on success, None on miss or mismatch. + pub fn verify(&self, digest: &DigestAuthParams) -> Option { + let cached = self.cache.get(&digest.username)?; + + if verify_digest_with_ha1(&cached.ha1, digest) { + Some(cached) + } else { + // Mismatch - password may have changed, evict stale entry + self.cache.invalidate(&digest.username); + None + } + } + + /// Check digest auth against the cache, distinguishing miss from mismatch. + pub fn check(&self, digest: &DigestAuthParams) -> VerifyResult { + match self.cache.get(&digest.username) { + Some(cached) => { + if verify_digest_with_ha1(&cached.ha1, digest) { + VerifyResult::Verified + } else { + self.cache.invalidate(&digest.username); + VerifyResult::Mismatch + } + } + None => VerifyResult::Miss, + } + } + + /// Store a successful auth result in the cache + pub fn insert(&self, username: &str, ha1: &str, register_data: RegisterData) { + self.cache.insert( + username.to_string(), + CachedAuth { + ha1: ha1.to_string(), + register_data, + }, + ); + } +} + +/// Compute MD5 hex digest of a string +fn md5_hex(input: &str) -> String { + let mut hasher = Md5::new(); + hasher.update(input.as_bytes()); + format!("{:x}", hasher.finalize()) +} + +/// Verify SIP digest auth using a pre-computed HA1 hash +fn verify_digest_with_ha1(ha1: &str, params: &DigestAuthParams) -> bool { + let ha2 = md5_hex(&format!("{}:{}", params.method, params.uri)); + + let expected = match (¶ms.qop, ¶ms.nc, ¶ms.cnonce) { + (Some(qop), Some(nc), Some(cnonce)) if qop == "auth" => md5_hex(&format!( + "{}:{}:{}:{}:{}:{}", + ha1, params.nonce, nc, cnonce, qop, ha2 + )), + _ => md5_hex(&format!("{}:{}:{}", ha1, params.nonce, ha2)), + }; + + params.response.eq_ignore_ascii_case(&expected) +} + +#[cfg(test)] +mod tests { + use super::*; + use std::time::Duration; + + + #[test] + fn test_md5_hex_empty() { + assert_eq!(md5_hex(""), "d41d8cd98f00b204e9800998ecf8427e"); + } + + #[test] + fn test_md5_hex_hello() { + assert_eq!(md5_hex("hello"), "5d41402abc4b2a76b9719d911017c592"); + } + + + #[test] + fn test_verify_digest_without_qop() { + // Compute expected values manually + let ha1 = md5_hex("alice:sipcord:password123"); + let ha2 = md5_hex("REGISTER:sip:sipcord"); + let nonce = "dcd98b7102dd2f0e8b11d0f600bfb0c093"; + let response = md5_hex(&format!("{}:{}:{}", ha1, nonce, ha2)); + + let params = DigestAuthParams { + username: "alice".to_string(), + realm: "sipcord".to_string(), + nonce: nonce.to_string(), + uri: "sip:sipcord".to_string(), + response, + method: "REGISTER".to_string(), + qop: None, + nc: None, + cnonce: None, + }; + + assert!(verify_digest_with_ha1(&ha1, ¶ms)); + } + + #[test] + fn test_verify_digest_with_qop_auth() { + let ha1 = md5_hex("bob:sipcord:secret"); + let ha2 = md5_hex("REGISTER:sip:sipcord"); + let nonce = "abc123"; + let nc = "00000001"; + let cnonce = "0a4f113b"; + let response = md5_hex(&format!("{}:{}:{}:{}:auth:{}", ha1, nonce, nc, cnonce, ha2)); + + let params = DigestAuthParams { + username: "bob".to_string(), + realm: "sipcord".to_string(), + nonce: nonce.to_string(), + uri: "sip:sipcord".to_string(), + response, + method: "REGISTER".to_string(), + qop: Some("auth".to_string()), + nc: Some(nc.to_string()), + cnonce: Some(cnonce.to_string()), + }; + + assert!(verify_digest_with_ha1(&ha1, ¶ms)); + } + + #[test] + fn test_verify_digest_wrong_response() { + let ha1 = md5_hex("alice:sipcord:password123"); + let params = DigestAuthParams { + username: "alice".to_string(), + realm: "sipcord".to_string(), + nonce: "nonce".to_string(), + uri: "sip:sipcord".to_string(), + response: "0000000000000000000000000000dead".to_string(), + method: "REGISTER".to_string(), + qop: None, + nc: None, + cnonce: None, + }; + + assert!(!verify_digest_with_ha1(&ha1, ¶ms)); + } + + + #[test] + fn test_auth_cache_record_failure() { + let cache = AuthCache::new(Duration::from_secs(300), Duration::from_secs(60), 3); + assert_eq!(cache.record_failure("user1"), 1); + assert_eq!(cache.record_failure("user1"), 2); + assert_eq!(cache.record_failure("user1"), 3); + } + + #[test] + fn test_auth_cache_clear_failures() { + let cache = AuthCache::new(Duration::from_secs(300), Duration::from_secs(60), 3); + cache.record_failure("user1"); + cache.record_failure("user1"); + cache.clear_failures("user1"); + assert!(!cache.is_in_cooldown("user1")); + } + + #[test] + fn test_auth_cache_cooldown_threshold() { + let cache = AuthCache::new(Duration::from_secs(300), Duration::from_secs(60), 3); + assert!(!cache.is_in_cooldown("user1")); + cache.record_failure("user1"); + cache.record_failure("user1"); + assert!(!cache.is_in_cooldown("user1")); + cache.record_failure("user1"); + assert!(cache.is_in_cooldown("user1")); + } +} diff --git a/sipcord-bridge/src/services/ban.rs b/sipcord-bridge/src/services/ban.rs new file mode 100644 index 0000000..2e8ecaa --- /dev/null +++ b/sipcord-bridge/src/services/ban.rs @@ -0,0 +1,58 @@ +//! Ban system trait definition +//! +//! The trait is defined here so FFI callbacks in the library can call ban checks. +//! When no implementation is registered (e.g. standalone/static-router mode), +//! ban checks are simply skipped. + +use std::net::IpAddr; +use std::sync::{Arc, OnceLock}; + +/// Result of checking/recording a ban +#[derive(Debug, Clone, Copy)] +pub struct BanCheckResult { + /// Current offense level for this IP (progressive timeout key) + pub offense_level: u32, + /// Whether the IP is currently timed out or banned + pub is_banned: bool, + /// Whether this is a permanent ban (vs progressive timeout) + pub is_permanent: bool, + /// Timeout duration in seconds (0 if not timed out) + pub timeout_secs: u64, + /// Whether we should log this attempt + pub should_log: bool, +} + +/// Result of clearing all ban data +#[derive(Debug)] +pub struct ClearResult { + pub bans_cleared: u64, + pub registers_cleared: u64, +} + +/// Trait for ban checking — implemented by the adapter, consumed by FFI callbacks +pub trait BanCheck: Send + Sync { + fn is_enabled(&self) -> bool; + fn is_whitelisted(&self, ip: &IpAddr) -> bool; + fn check_banned(&self, ip: &IpAddr) -> BanCheckResult; + fn record_offense(&self, ip: IpAddr, reason: &str) -> BanCheckResult; + fn record_permanent_ban(&self, ip: IpAddr, reason: &str) -> BanCheckResult; + /// Record a REGISTER request from an IP. Returns true if rate limited. + fn record_register(&self, ip: IpAddr) -> bool; + fn clear_all(&self) -> Result>; + /// Config accessors for extension-length checks in callbacks + fn suspicious_extension_min_length(&self) -> usize; + fn suspicious_extension_max_length(&self) -> usize; + fn permaban_extension_min_length(&self) -> usize; +} + +static GLOBAL_BAN_CHECK: OnceLock> = OnceLock::new(); + +/// Register a global ban checker (called by the adapter at init time) +pub fn set_global(checker: Arc) { + let _ = GLOBAL_BAN_CHECK.set(checker); +} + +/// Get the global ban checker (None if not registered) +pub fn global() -> Option<&'static Arc> { + GLOBAL_BAN_CHECK.get() +} diff --git a/sipcord-bridge/src/services/mod.rs b/sipcord-bridge/src/services/mod.rs new file mode 100644 index 0000000..2a55d28 --- /dev/null +++ b/sipcord-bridge/src/services/mod.rs @@ -0,0 +1,5 @@ +pub mod auth_cache; +pub mod ban; +pub mod registrar; +pub mod snowflake; +pub mod sound; diff --git a/sipcord-bridge/src/services/registrar.rs b/sipcord-bridge/src/services/registrar.rs new file mode 100644 index 0000000..ab1a3b9 --- /dev/null +++ b/sipcord-bridge/src/services/registrar.rs @@ -0,0 +1,321 @@ +//! SIP Registration Storage +//! +//! Tracks SIP REGISTER'ed users so we know which phones are online +//! and can route inbound calls (Discord -> SIP) to them. + +use dashmap::DashMap; +use std::net::SocketAddr; +use std::sync::{Arc, OnceLock}; +use std::time::{Duration, Instant}; +use tracing::debug; + +/// Global registrar instance (set during initialization) +pub static GLOBAL_REGISTRAR: OnceLock> = OnceLock::new(); + +/// Transport protocol used for a SIP registration +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum SipTransport { + Udp, + Tcp, + Tls, +} + +/// A single SIP registration (one phone/device) +#[derive(Debug, Clone)] +pub struct Registration { + pub sip_username: String, + /// None if user has allow_inbound_calls disabled + pub discord_username: Option, + /// From Contact header (client-advertised URI) + pub contact_uri: String, + /// Actual transport source (for NAT traversal) + pub source_addr: SocketAddr, + /// Transport protocol used to register + pub transport: SipTransport, + /// When this registration expires + pub expires_at: Instant, + /// When this registration was created/refreshed + pub registered_at: Instant, +} + +/// Manages SIP registrations for all users +pub struct Registrar { + /// SIP username -> list of registrations (multiple phones per user) + registrations: DashMap>, + /// Discord username -> SIP username (reverse lookup for inbound calls) + discord_to_sip: DashMap, +} + +impl Registrar { + pub fn new() -> Self { + Self { + registrations: DashMap::new(), + discord_to_sip: DashMap::new(), + } + } + + /// Add or update a registration. + pub fn add_registration(&self, reg: Registration) { + let sip_username = reg.sip_username.clone(); + let discord_username = reg.discord_username.clone(); + + // Update or insert into registrations + let mut regs = self.registrations.entry(sip_username.clone()).or_default(); + + // Check if this source_addr already has a registration - update it + if let Some(existing) = regs + .iter_mut() + .find(|r| r.source_addr == reg.source_addr && r.contact_uri == reg.contact_uri) + { + // If discord_username changed, remove the old reverse mapping + if existing.discord_username != reg.discord_username { + if let Some(ref old_du) = existing.discord_username { + self.discord_to_sip.remove(old_du); + } + } + + existing.expires_at = reg.expires_at; + existing.registered_at = reg.registered_at; + existing.contact_uri = reg.contact_uri.clone(); + existing.discord_username = reg.discord_username.clone(); + + // Update reverse lookup if discord_username is set + if let Some(ref du) = discord_username { + self.discord_to_sip.insert(du.clone(), sip_username.clone()); + } + + return; + } + + regs.push(reg); + drop(regs); + + // Update reverse lookup + if let Some(ref du) = discord_username { + self.discord_to_sip.insert(du.clone(), sip_username.clone()); + } + } + + /// Remove expired registrations. + pub fn remove_expired(&self) { + let now = Instant::now(); + + let mut to_clean = Vec::new(); + for entry in self.registrations.iter() { + let sip_username = entry.key().clone(); + let has_expired = entry.value().iter().any(|r| r.expires_at <= now); + if has_expired { + to_clean.push(sip_username); + } + } + + for sip_username in to_clean { + if let Some(mut regs) = self.registrations.get_mut(&sip_username) { + let discord_username_before = regs.iter().find_map(|r| r.discord_username.clone()); + + regs.retain(|r| r.expires_at > now); + + if regs.is_empty() { + drop(regs); + self.registrations.remove(&sip_username); + + // Clean up reverse lookup + if let Some(du) = discord_username_before { + self.discord_to_sip.remove(&du); + } + } + } + } + } + + /// Get source addresses for a SIP user (for debug capture) + pub fn get_source_addrs_for_sip_user(&self, sip_username: &str) -> Vec { + let now = Instant::now(); + match self.registrations.get(sip_username) { + Some(regs) => regs + .iter() + .filter(|r| r.expires_at > now) + .map(|r| r.source_addr) + .collect(), + None => Vec::new(), + } + } + + /// Get contacts for a Discord user (for inbound calling) + pub fn get_contacts_for_discord_user( + &self, + discord_username: &str, + ) -> Vec<(String, SocketAddr, SipTransport)> { + let sip_username = match self.discord_to_sip.get(discord_username) { + Some(entry) => entry.value().clone(), + None => return Vec::new(), + }; + + let now = Instant::now(); + match self.registrations.get(&sip_username) { + Some(regs) => regs + .iter() + .filter(|r| r.expires_at > now) + .map(|r| (r.contact_uri.clone(), r.source_addr, r.transport)) + .collect(), + None => Vec::new(), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::net::SocketAddr; + + fn make_reg( + sip_user: &str, + discord_user: Option<&str>, + addr: &str, + contact: &str, + expires_secs: u64, + ) -> Registration { + Registration { + sip_username: sip_user.to_string(), + discord_username: discord_user.map(|s| s.to_string()), + contact_uri: contact.to_string(), + source_addr: addr.parse::().unwrap(), + transport: SipTransport::Udp, + expires_at: Instant::now() + Duration::from_secs(expires_secs), + registered_at: Instant::now(), + } + } + + #[test] + fn test_add_and_lookup() { + let reg = Registrar::new(); + reg.add_registration(make_reg( + "alice", + None, + "1.2.3.4:5060", + "sip:alice@1.2.3.4", + 300, + )); + let addrs = reg.get_source_addrs_for_sip_user("alice"); + assert_eq!(addrs.len(), 1); + assert_eq!(addrs[0], "1.2.3.4:5060".parse::().unwrap()); + } + + #[test] + fn test_discord_reverse_lookup() { + let reg = Registrar::new(); + reg.add_registration(make_reg( + "bob", + Some("bob#1234"), + "5.6.7.8:5060", + "sip:bob@5.6.7.8", + 300, + )); + let contacts = reg.get_contacts_for_discord_user("bob#1234"); + assert_eq!(contacts.len(), 1); + assert_eq!(contacts[0].0, "sip:bob@5.6.7.8"); + } + + #[test] + fn test_update_existing_registration() { + let reg = Registrar::new(); + reg.add_registration(make_reg( + "alice", + None, + "1.2.3.4:5060", + "sip:alice@1.2.3.4", + 300, + )); + // Same source_addr + contact_uri -> update in place + reg.add_registration(make_reg( + "alice", + None, + "1.2.3.4:5060", + "sip:alice@1.2.3.4", + 600, + )); + let addrs = reg.get_source_addrs_for_sip_user("alice"); + assert_eq!(addrs.len(), 1); // Should not duplicate + } + + #[test] + fn test_multiple_registrations_per_user() { + let reg = Registrar::new(); + reg.add_registration(make_reg( + "alice", + None, + "1.2.3.4:5060", + "sip:alice@1.2.3.4", + 300, + )); + reg.add_registration(make_reg( + "alice", + None, + "5.6.7.8:5060", + "sip:alice@5.6.7.8", + 300, + )); + let addrs = reg.get_source_addrs_for_sip_user("alice"); + assert_eq!(addrs.len(), 2); + } + + #[test] + fn test_remove_expired() { + let reg = Registrar::new(); + // Add one that expires immediately + let mut expired_reg = make_reg("alice", None, "1.2.3.4:5060", "sip:alice@1.2.3.4", 0); + expired_reg.expires_at = Instant::now() - Duration::from_secs(1); + reg.add_registration(expired_reg); + // Add one that's still valid + reg.add_registration(make_reg( + "alice", + None, + "5.6.7.8:5060", + "sip:alice@5.6.7.8", + 300, + )); + + reg.remove_expired(); + let addrs = reg.get_source_addrs_for_sip_user("alice"); + assert_eq!(addrs.len(), 1); + assert_eq!(addrs[0], "5.6.7.8:5060".parse::().unwrap()); + } + + #[test] + fn test_get_contacts_for_discord_user_expired_filtered() { + let reg = Registrar::new(); + let mut expired_reg = make_reg( + "charlie", + Some("charlie#0001"), + "1.2.3.4:5060", + "sip:charlie@1.2.3.4", + 0, + ); + expired_reg.expires_at = Instant::now() - Duration::from_secs(1); + reg.add_registration(expired_reg); + + reg.add_registration(make_reg( + "charlie", + Some("charlie#0001"), + "5.6.7.8:5060", + "sip:charlie@5.6.7.8", + 300, + )); + + let contacts = reg.get_contacts_for_discord_user("charlie#0001"); + assert_eq!(contacts.len(), 1); + assert_eq!(contacts[0].0, "sip:charlie@5.6.7.8"); + } +} + +/// Start the periodic cleanup task +pub fn spawn_cleanup_task(registrar: Arc) { + tokio::spawn(async move { + let mut interval = tokio::time::interval(Duration::from_secs(30)); + loop { + interval.tick().await; + registrar.remove_expired(); + debug!("Registrar cleanup complete"); + } + }); +} diff --git a/sipcord-bridge/src/services/snowflake.rs b/sipcord-bridge/src/services/snowflake.rs new file mode 100644 index 0000000..c98cfc8 --- /dev/null +++ b/sipcord-bridge/src/services/snowflake.rs @@ -0,0 +1,181 @@ +//! Discord Snowflake ID — type-safe wrapper around u64. +//! +//! Snowflakes encode a millisecond timestamp (bits 22+) relative to the +//! Discord epoch (2015-01-01T00:00:00.000Z), plus worker/process/sequence +//! metadata in the lower 22 bits. + +use std::fmt; +use std::ops::Deref; + +/// Discord epoch: 2015-01-01T00:00:00.000Z in Unix millis +const DISCORD_EPOCH_MS: u64 = 1_420_070_400_000; + +/// Smallest plausible snowflake (~17 digits). +/// Corresponds to roughly mid-2015, shortly after Discord launched. +/// 21_154_535_154_122_752 = (1433289600000 - DISCORD_EPOCH_MS) << 22 (2015-06-03) +const MIN_SNOWFLAKE: u64 = 21_154_535_154_122_752; + +/// Largest plausible snowflake — year 2100 relative to Discord epoch. +/// (2_682_288_000_000 << 22) ≈ 11.2e18, still well within u64. +const MAX_SNOWFLAKE: u64 = 2_682_288_000_000 << 22; + +/// A Discord Snowflake ID. +#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Default)] +pub struct Snowflake(u64); + +impl Snowflake { + /// Wrap a raw u64 as a Snowflake (no validation). + pub const fn new(value: u64) -> Self { + Self(value) + } + + /// The raw u64 value. + pub const fn get(self) -> u64 { + self.0 + } + + /// Whether this is a plausible Discord snowflake. + /// + /// Checks that the value is at least 17 digits (all real Discord IDs are) + /// and that the embedded timestamp falls between Discord's launch (~mid 2015) + /// and the year 2100. + pub const fn is_valid(self) -> bool { + self.0 >= MIN_SNOWFLAKE && self.0 <= MAX_SNOWFLAKE + } + + /// Milliseconds since Unix epoch encoded in this snowflake. + pub const fn timestamp_ms(self) -> u64 { + (self.0 >> 22) + DISCORD_EPOCH_MS + } +} + +// Transparent access as u64 + +impl Deref for Snowflake { + type Target = u64; + fn deref(&self) -> &u64 { + &self.0 + } +} + +impl From for Snowflake { + fn from(v: u64) -> Self { + Self(v) + } +} + +impl From for u64 { + fn from(s: Snowflake) -> u64 { + s.0 + } +} + +impl std::str::FromStr for Snowflake { + type Err = std::num::ParseIntError; + fn from_str(s: &str) -> Result { + s.parse::().map(Self) + } +} + +// Display / Debug + +impl fmt::Display for Snowflake { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +impl fmt::Debug for Snowflake { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "Snowflake({})", self.0) + } +} + +// Serde — deserialise from integer OR string (Discord uses both) + +impl serde::Serialize for Snowflake { + fn serialize(&self, serializer: S) -> Result { + self.0.serialize(serializer) + } +} + +impl<'de> serde::Deserialize<'de> for Snowflake { + fn deserialize>(deserializer: D) -> Result { + struct Visitor; + + impl<'de> serde::de::Visitor<'de> for Visitor { + type Value = Snowflake; + + fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("a snowflake as integer or string") + } + + fn visit_u64(self, v: u64) -> Result { + Ok(Snowflake(v)) + } + + fn visit_str(self, v: &str) -> Result { + v.parse::().map(Snowflake).map_err(E::custom) + } + } + + deserializer.deserialize_any(Visitor) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn zero_is_invalid() { + assert!(!Snowflake::new(0).is_valid()); + } + + #[test] + fn too_short_is_invalid() { + // 9 digits — way too small to be a Discord snowflake + assert!(!Snowflake::new(123_456_789).is_valid()); + // 16 digits — still too short + assert!(!Snowflake::new(1_000_000_000_000_000).is_valid()); + } + + #[test] + fn real_snowflakes_are_valid() { + // Discord's own system messages channel + assert!(Snowflake::new(80_351_110_224_678_912).is_valid()); + // A typical modern channel ID + assert!(Snowflake::new(1_098_765_432_101_234_567).is_valid()); + } + + #[test] + fn timestamp_decodes() { + let s = Snowflake::new(80_351_110_224_678_912); + assert!(s.timestamp_ms() > DISCORD_EPOCH_MS); + // Should be sometime in 2015 + let year_2016 = 1_451_606_400_000u64; // 2016-01-01 Unix ms + assert!(s.timestamp_ms() < year_2016); + } + + #[test] + fn deref_to_u64() { + let s = Snowflake::new(80_351_110_224_678_912); + let v: u64 = *s; + assert_eq!(v, 80_351_110_224_678_912); + } + + #[test] + fn serde_roundtrip_integer() { + let s = Snowflake::new(80_351_110_224_678_912); + let json = serde_json::to_string(&s).unwrap(); + assert_eq!(json, "80351110224678912"); + let back: Snowflake = serde_json::from_str(&json).unwrap(); + assert_eq!(back, s); + } + + #[test] + fn serde_from_string() { + let back: Snowflake = serde_json::from_str("\"80351110224678912\"").unwrap(); + assert_eq!(back.get(), 80_351_110_224_678_912); + } +} diff --git a/sipcord-bridge/src/services/sound/mod.rs b/sipcord-bridge/src/services/sound/mod.rs new file mode 100644 index 0000000..59ec9c9 --- /dev/null +++ b/sipcord-bridge/src/services/sound/mod.rs @@ -0,0 +1,236 @@ +//! Sound management for SIP call audio +//! +//! Provides a SoundManager that loads sounds from config.toml with two modes: +//! - Preloaded: Loaded into memory at startup for fast playback (system sounds) +//! - Streaming: Loaded on-demand from disk for large files (easter eggs) +//! +//! All audio files must be pre-resampled to 16kHz mono - no runtime resampling. + +mod streaming; + +use crate::audio::{flac, wav}; +use crate::config::{AppConfig, SoundEntry}; +use crate::transport::sip::CONF_SAMPLE_RATE; +use anyhow::{Context, Result}; +use std::collections::HashMap; +use std::path::{Path, PathBuf}; +use std::sync::Arc; +use tracing::{debug, info, warn}; + +pub use streaming::StreamingPlayer; + +/// A preloaded sound ready for immediate playback +#[derive(Debug, Clone)] +pub struct PreloadedSound { + /// PCM samples at 16kHz mono - NO RESAMPLING at runtime + pub samples: Arc>, + /// Duration in milliseconds + pub duration_ms: u64, +} + +/// Configuration for a streaming sound (loaded on-demand) +#[derive(Debug, Clone)] +pub struct StreamingConfig { + /// Full path to the audio file + pub path: PathBuf, +} + +/// Sound manager for loading and playing audio files +pub struct SoundManager { + /// Preloaded sounds (preload=true) - in memory, ready for playback + preloaded: HashMap, + /// Streaming configs (preload=false) - path only, loaded on demand + streaming: HashMap, + /// Extension -> sound name mapping for easter eggs + pub extension_map: HashMap, + /// Base directory for sound files + sounds_dir: PathBuf, +} + +impl SoundManager { + /// Create a new SoundManager and load sounds from config + pub fn new(sounds_dir: PathBuf) -> Result { + let config = AppConfig::global(); + let mut manager = Self { + preloaded: HashMap::new(), + streaming: HashMap::new(), + extension_map: HashMap::new(), + sounds_dir, + }; + + manager.load_sounds(&config.sounds.entries)?; + Ok(manager) + } + + /// Load all sounds from config entries + fn load_sounds(&mut self, entries: &HashMap) -> Result<()> { + let mut preloaded_count = 0; + let mut streaming_count = 0; + let mut virtual_count = 0; + + for (name, entry) in entries { + // Build extension map for easter eggs and test tones + if let Some(ext) = entry.extension { + self.extension_map.insert(ext, name.clone()); + debug!("Registered extension {} -> sound '{}'", ext, name); + } + + // Handle virtual sounds (no src file - generated dynamically) + let Some(ref src) = entry.src else { + virtual_count += 1; + info!("Registered virtual sound '{}' (no file, generated)", name); + continue; + }; + + let file_path = self.sounds_dir.join(src); + + if entry.preload { + // Load and store in memory + match self.load_preloaded_sound(&file_path, name) { + Ok(sound) => { + info!( + "Preloaded sound '{}': {} samples ({} ms) from {}", + name, + sound.samples.len(), + sound.duration_ms, + src + ); + self.preloaded.insert(name.clone(), sound); + preloaded_count += 1; + } + Err(e) => { + warn!("Failed to preload sound '{}' from {}: {}", name, src, e); + } + } + } else { + // Just store path for streaming + if file_path.exists() { + self.streaming.insert( + name.clone(), + StreamingConfig { + path: file_path.clone(), + }, + ); + streaming_count += 1; + info!("Registered streaming sound '{}' from {}", name, src); + } else { + warn!( + "Streaming sound '{}' file not found: {}", + name, + file_path.display() + ); + } + } + } + + info!( + "SoundManager loaded {} preloaded, {} streaming, {} virtual sounds, {} extensions", + preloaded_count, + streaming_count, + virtual_count, + self.extension_map.len() + ); + + Ok(()) + } + + /// Load a preloaded sound from a file + fn load_preloaded_sound(&self, path: &Path, name: &str) -> Result { + let data = std::fs::read(path) + .with_context(|| format!("Failed to read sound file: {}", path.display()))?; + + let samples = self.parse_audio(&data, name)?; + + let duration_ms = (samples.len() as u64 * 1000) / CONF_SAMPLE_RATE as u64; + + Ok(PreloadedSound { + samples: Arc::new(samples), + duration_ms, + }) + } + + /// Parse audio data (auto-detect WAV or FLAC format) + /// Expects 16kHz mono - panics if wrong sample rate + fn parse_audio(&self, data: &[u8], name: &str) -> Result> { + // Check for FLAC magic number: "fLaC" + if data.len() >= 4 && &data[0..4] == b"fLaC" { + debug!("Detected FLAC format for '{}'", name); + let (samples, rate) = flac::parse_flac(data) + .with_context(|| format!("Failed to parse FLAC for sound '{}'", name))?; + if rate != CONF_SAMPLE_RATE { + anyhow::bail!( + "Sound '{}' has wrong sample rate: {} Hz (expected {} Hz). Pre-resample the file.", + name, rate, CONF_SAMPLE_RATE + ); + } + return Ok(samples); + } + + // Check for WAV magic number: "RIFF" + if data.len() >= 4 && &data[0..4] == b"RIFF" { + debug!("Detected WAV format for '{}'", name); + let (samples, rate) = wav::parse_wav(data) + .with_context(|| format!("Failed to parse WAV for sound '{}'", name))?; + if rate != CONF_SAMPLE_RATE { + anyhow::bail!( + "Sound '{}' has wrong sample rate: {} Hz (expected {} Hz). Pre-resample the file.", + name, rate, CONF_SAMPLE_RATE + ); + } + return Ok(samples); + } + + anyhow::bail!( + "Unknown audio format for '{}': header bytes {:?}", + name, + &data[..4.min(data.len())] + ) + } + + /// Get a preloaded sound by name + pub fn get_preloaded(&self, name: &str) -> Option<&PreloadedSound> { + self.preloaded.get(name) + } + + /// Get a streaming config by name + pub fn get_streaming(&self, name: &str) -> Option<&StreamingConfig> { + self.streaming.get(name) + } + + /// Check if a sound is configured for streaming + pub fn is_streaming(&self, name: &str) -> bool { + self.streaming.contains_key(name) + } + + /// Check if a sound is a virtual sound (test tone) + pub fn is_test_tone(&self, name: &str) -> bool { + name == "test_tone" + } + + /// Get the sound name for an extension (if configured) + pub fn get_extension_sound(&self, extension: u32) -> Option<&str> { + self.extension_map.get(&extension).map(|s| s.as_str()) + } + + /// Get the connecting sound samples (used for early media loop) + pub fn get_connecting_samples(&self) -> Option>> { + self.preloaded.get("connecting").map(|s| s.samples.clone()) + } + + /// Get the discord_join sound samples + pub fn get_discord_join_samples(&self) -> Option>> { + self.preloaded + .get("discord_join") + .map(|s| s.samples.clone()) + } + + /// Get error sound samples by error type + pub fn get_error_samples(&self, error_type: &str) -> Option>> { + self.preloaded.get(error_type).map(|s| s.samples.clone()) + } +} + +/// Create an Arc-wrapped SoundManager for sharing across async tasks +pub fn create_sound_manager(sounds_dir: PathBuf) -> Result> { + Ok(Arc::new(SoundManager::new(sounds_dir)?)) +} diff --git a/sipcord-bridge/src/services/sound/streaming.rs b/sipcord-bridge/src/services/sound/streaming.rs new file mode 100644 index 0000000..326139a --- /dev/null +++ b/sipcord-bridge/src/services/sound/streaming.rs @@ -0,0 +1,273 @@ +//! Streaming audio player for large files +//! +//! Provides a file-backed streaming player that reads audio from disk +//! on-demand rather than loading the entire file into memory. +//! +//! Uses Symphonia for FLAC decoding (pure Rust). + +use crate::transport::sip::CONF_SAMPLE_RATE; +use anyhow::{Context, Result}; +use std::collections::VecDeque; +use std::fs::File; +use std::path::Path; +use symphonia::core::audio::{AudioBufferRef, Signal}; +use symphonia::core::codecs::{DecoderOptions, CODEC_TYPE_NULL}; +use symphonia::core::formats::FormatOptions; +use symphonia::core::io::MediaSourceStream; +use symphonia::core::meta::MetadataOptions; +use symphonia::core::probe::Hint; + +/// Streaming player for large audio files +/// +/// Reads FLAC frames on-demand to avoid loading entire file into memory. +pub struct StreamingPlayer { + /// Symphonia format reader + format: Box, + /// Symphonia decoder + decoder: Box, + /// Track ID we're decoding + track_id: u32, + /// Buffer of decoded samples ready for playback + samples_buffer: VecDeque, + /// Whether we've reached end of file + eof: bool, + /// Total samples read from file (for debugging) + total_samples_read: u64, + /// Total samples delivered via get_frame (for debugging) + total_samples_delivered: u64, +} + +impl StreamingPlayer { + /// Create a new streaming player for a FLAC file + pub fn new(path: &Path) -> Result { + let file = File::open(path) + .with_context(|| format!("Failed to open streaming file: {}", path.display()))?; + + let mss = MediaSourceStream::new(Box::new(file), Default::default()); + + let mut hint = Hint::new(); + if let Some(ext) = path.extension().and_then(|e| e.to_str()) { + hint.with_extension(ext); + } + + let probed = symphonia::default::get_probe() + .format( + &hint, + mss, + &FormatOptions::default(), + &MetadataOptions::default(), + ) + .with_context(|| format!("Failed to probe format: {}", path.display()))?; + + let format = probed.format; + + // Find the first audio track + let track = format + .tracks() + .iter() + .find(|t| t.codec_params.codec != CODEC_TYPE_NULL) + .ok_or_else(|| anyhow::anyhow!("No audio track found in {}", path.display()))?; + + let track_id = track.id; + + // Verify sample rate + let sample_rate = track + .codec_params + .sample_rate + .ok_or_else(|| anyhow::anyhow!("No sample rate in track"))?; + + if sample_rate != CONF_SAMPLE_RATE { + anyhow::bail!( + "Streaming file {} has wrong sample rate: {} Hz (expected {} Hz)", + path.display(), + sample_rate, + CONF_SAMPLE_RATE + ); + } + + let channels = track.codec_params.channels.map(|c| c.count()).unwrap_or(1); + + let n_frames = track.codec_params.n_frames; + + tracing::info!( + "Created Symphonia streaming player for {}: {}Hz, {} channels, n_frames={:?}", + path.display(), + sample_rate, + channels, + n_frames + ); + + let decoder = symphonia::default::get_codecs() + .make(&track.codec_params, &DecoderOptions::default()) + .with_context(|| "Failed to create decoder")?; + + Ok(Self { + format, + decoder, + track_id, + samples_buffer: VecDeque::with_capacity(4096), + eof: false, + total_samples_read: 0, + total_samples_delivered: 0, + }) + } + + /// Get the next frame of samples (320 samples for 20ms at 16kHz) + /// + /// Returns None when the file is finished. + pub fn get_frame(&mut self, frame_size: usize) -> Option> { + // Fill buffer if needed + while self.samples_buffer.len() < frame_size && !self.eof { + if !self.read_more_samples() { + self.eof = true; + } + } + + // Return None if no samples available + if self.samples_buffer.is_empty() { + return None; + } + + // Drain requested samples (or all remaining) + let count = frame_size.min(self.samples_buffer.len()); + let samples: Vec = self.samples_buffer.drain(..count).collect(); + self.total_samples_delivered += samples.len() as u64; + + // Pad with silence if we got fewer than requested + if samples.len() < frame_size { + let mut padded = samples; + padded.resize(frame_size, 0); + return Some(padded); + } + + Some(samples) + } + + /// Check if playback is complete + pub fn is_finished(&self) -> bool { + let finished = self.eof && self.samples_buffer.is_empty(); + if finished { + tracing::info!( + "StreamingPlayer finished: read {} samples, delivered {} samples", + self.total_samples_read, + self.total_samples_delivered, + ); + } + finished + } + + /// Read more samples from the file into the buffer + /// Returns false when EOF is reached + fn read_more_samples(&mut self) -> bool { + loop { + let packet = match self.format.next_packet() { + Ok(packet) => packet, + Err(symphonia::core::errors::Error::IoError(e)) + if e.kind() == std::io::ErrorKind::UnexpectedEof => + { + return false; + } + Err(e) => { + tracing::debug!("Error reading packet: {}", e); + return false; + } + }; + + // Skip packets from other tracks + if packet.track_id() != self.track_id { + continue; + } + + match self.decoder.decode(&packet) { + Ok(decoded) => { + // Convert to i16 samples + let samples_added = convert_audio_buffer(&decoded, &mut self.samples_buffer); + self.total_samples_read += samples_added as u64; + return true; + } + Err(symphonia::core::errors::Error::DecodeError(e)) => { + tracing::debug!("Decode error: {}", e); + continue; + } + Err(e) => { + tracing::debug!("Fatal decode error: {}", e); + return false; + } + } + } + } +} + +/// Convert Symphonia audio buffer to i16 samples and add to buffer +fn convert_audio_buffer(audio: &AudioBufferRef, samples_buffer: &mut VecDeque) -> usize { + let mut count = 0; + + match audio { + AudioBufferRef::S16(buf) => { + let channels = buf.spec().channels.count(); + let frames = buf.frames(); + + for frame_idx in 0..frames { + if channels == 1 { + let sample = buf.chan(0)[frame_idx]; + samples_buffer.push_back(sample); + count += 1; + } else { + // Stereo to mono: average channels + let mut sum: i32 = 0; + for ch in 0..channels { + sum += buf.chan(ch)[frame_idx] as i32; + } + let mono = (sum / channels as i32) as i16; + samples_buffer.push_back(mono); + count += 1; + } + } + } + AudioBufferRef::S32(buf) => { + let channels = buf.spec().channels.count(); + let frames = buf.frames(); + + for frame_idx in 0..frames { + if channels == 1 { + let sample = (buf.chan(0)[frame_idx] >> 16) as i16; + samples_buffer.push_back(sample); + count += 1; + } else { + let mut sum: i64 = 0; + for ch in 0..channels { + sum += buf.chan(ch)[frame_idx] as i64; + } + let mono = ((sum / channels as i64) >> 16) as i16; + samples_buffer.push_back(mono); + count += 1; + } + } + } + AudioBufferRef::F32(buf) => { + let channels = buf.spec().channels.count(); + let frames = buf.frames(); + + for frame_idx in 0..frames { + if channels == 1 { + let sample = (buf.chan(0)[frame_idx] * 32767.0) as i16; + samples_buffer.push_back(sample); + count += 1; + } else { + let mut sum: f32 = 0.0; + for ch in 0..channels { + sum += buf.chan(ch)[frame_idx]; + } + let mono = ((sum / channels as f32) * 32767.0) as i16; + samples_buffer.push_back(mono); + count += 1; + } + } + } + _ => { + tracing::warn!("Unsupported audio buffer format"); + } + } + + count +} diff --git a/sipcord-bridge/src/transport/discord/mod.rs b/sipcord-bridge/src/transport/discord/mod.rs new file mode 100644 index 0000000..1251978 --- /dev/null +++ b/sipcord-bridge/src/transport/discord/mod.rs @@ -0,0 +1,1264 @@ +mod voice; + +use crate::audio::simd; +use crate::services::snowflake::Snowflake; +use anyhow::Result; +use audioadapter::Adapter; +use audioadapter_buffers::direct::SequentialSliceOfVecs; +use crossbeam_channel::Sender; +use dashmap::DashMap; +use parking_lot::Mutex; +use rtrb::Producer; +use rubato::{ + Async, FixedAsync, Resampler, SincInterpolationParameters, SincInterpolationType, + WindowFunction, +}; +use serenity::all::{ChannelId, Client, Context, EventHandler, FullEvent, GatewayIntents, GuildId}; +use serenity::async_trait; +use serenity::secrets::Token; +use songbird::driver::DecodeMode; +use songbird::tracks::PlayMode; +use songbird::{ + Config, CoreEvent, Event, EventContext, EventHandler as VoiceEventHandler, Songbird, TrackEvent, +}; +use std::collections::HashMap; +use std::sync::atomic::{AtomicBool, AtomicU32, AtomicU64, Ordering}; +use std::sync::Arc; +use std::sync::OnceLock; +use std::time::{SystemTime, UNIX_EPOCH}; +use tokio::sync::oneshot; +use tracing::{debug, error, info, trace, warn}; + +// Direct audio path: SIP audio thread → Discord +// Uses lock-free ring buffer for real-time audio streaming + +/// Global registry of channel_id → audio sender for direct SIP→Discord audio path. +/// This allows the pjsua audio thread to send directly to Discord without going through tokio. +static DISCORD_AUDIO_SENDERS: OnceLock> = OnceLock::new(); + +// Discord→SIP direct path: Discord VoiceTick → ring buffer → SIP audio thread +// Uses lock-free ring buffer to bypass tokio/crossbeam async round-trip + +/// Per-channel ring buffer producers for Discord→SIP audio. +/// VoiceReceiver writes resampled i16 mono @ 16kHz here. +/// channel_port_get_frame reads from the consumer side (in transport/sip/channel_audio.rs). +static DISCORD_TO_SIP_PRODUCERS: OnceLock>>> = + OnceLock::new(); + +fn get_discord_to_sip_producers() -> &'static DashMap>> { + DISCORD_TO_SIP_PRODUCERS.get_or_init(DashMap::new) +} + +/// Register a ring buffer producer for Discord→SIP audio on a channel. +pub fn register_discord_to_sip_producer(channel_id: Snowflake, producer: rtrb::Producer) { + debug!( + "Registering Discord→SIP ring buffer producer for channel {}", + channel_id + ); + get_discord_to_sip_producers().insert(channel_id, Mutex::new(producer)); +} + +/// Unregister the ring buffer producer for a channel. +pub fn unregister_discord_to_sip_producer(channel_id: Snowflake) { + debug!( + "Unregistering Discord→SIP ring buffer producer for channel {}", + channel_id + ); + get_discord_to_sip_producers().remove(&channel_id); +} + +/// Write resampled audio directly to the Discord→SIP ring buffer. +/// Called from VoiceReceiver on the Songbird event loop. +/// Returns true if audio was written, false if no producer registered or buffer full. +fn write_discord_to_sip(channel_id: Snowflake, samples_16k: &[i16]) -> bool { + let Some(producer_entry) = get_discord_to_sip_producers().get(&channel_id) else { + return false; + }; + let Some(mut producer) = producer_entry.try_lock() else { + return false; + }; + let slots = producer.slots(); + if slots >= samples_16k.len() { + if let Ok(mut chunk) = producer.write_chunk(samples_16k.len()) { + let (first, second) = chunk.as_mut_slices(); + let first_len = first.len(); + first.copy_from_slice(&samples_16k[..first_len]); + if !second.is_empty() { + second.copy_from_slice(&samples_16k[first_len..]); + } + chunk.commit_all(); + } + true + } else { + // Ring buffer full - drop this frame + trace!( + "Discord→SIP ring buffer full for channel {} (need {}, have {})", + channel_id, + samples_16k.len(), + slots + ); + false + } +} + +fn get_audio_senders() -> &'static DashMap { + DISCORD_AUDIO_SENDERS.get_or_init(DashMap::new) +} + +/// Combined resampler + ring buffer producer, locked together (always accessed together) +struct AudioPipeline { + resampler: ResamplerState, + producer: Producer, +} + +/// Cached VAD config values (read once at creation, never change at runtime) +struct CachedVadConfig { + silence_threshold: i16, + mute_threshold: i16, + silence_frames_before_stop: u32, +} + +/// Wrapper for the audio sender with resampler state and ring buffer producer +struct DirectAudioSender { + /// Resampler + ring buffer producer locked together (one lock instead of two per frame) + pipeline: Mutex, + /// Cached VAD config (avoids AppConfig::audio() call every 20ms frame) + vad_config: CachedVadConfig, + /// VAD: Counter for consecutive silent frames + silence_frame_count: AtomicU32, + /// VAD: Whether we're currently sending speech + is_speaking: AtomicBool, + /// Health tracking: consecutive overflow errors + consecutive_overflows: AtomicU64, +} + +/// Consolidated resampler state with pre-allocated buffers +struct ResamplerState { + resampler: Async, + /// Pre-allocated buffer for i16→f64 conversion (capacity: 320) + input_f64: Vec, + /// Pre-allocated buffer for mono→stereo f32 output (capacity: 1920) + stereo_f32: Vec, +} + +impl ResamplerState { + fn new() -> Self { + Self { + resampler: create_resampler(), + input_f64: Vec::with_capacity(320), + stereo_f32: Vec::with_capacity(1920), + } + } +} + +/// Create a high-quality sinc resampler for 16kHz → 48kHz +fn create_resampler() -> Async { + let params = SincInterpolationParameters { + sinc_len: 256, + f_cutoff: 0.95, + interpolation: SincInterpolationType::Linear, + oversampling_factor: 256, + window: WindowFunction::BlackmanHarris2, + }; + + // 16kHz to 48kHz = ratio of 3.0, mono input, 320 samples per chunk (20ms at 16kHz) + Async::new_sinc( + 48000.0 / 16000.0, // resample ratio (3.0x) + 1.1, // max relative ratio (allow slight variation) + ¶ms, + 320, // chunk size (samples per frame at 16kHz) + 1, // mono channel + FixedAsync::Input, // fixed input size + ) + .expect("Failed to create resampler") +} + +/// RAII guard for a registered Discord audio sender. +/// Automatically unregisters the sender when dropped. +pub struct RegisteredAudioSender { + channel_id: Snowflake, +} + +impl RegisteredAudioSender { + /// Register a Discord audio sender for direct SIP→Discord audio path. + pub fn new(channel_id: Snowflake, producer: Producer) -> Self { + debug!("Registering direct audio sender for channel {}", channel_id); + let audio_cfg = crate::config::AppConfig::audio(); + get_audio_senders().insert( + channel_id, + DirectAudioSender { + pipeline: Mutex::new(AudioPipeline { + resampler: ResamplerState::new(), + producer, + }), + vad_config: CachedVadConfig { + silence_threshold: audio_cfg.vad_silence_threshold, + mute_threshold: audio_cfg.vad_mute_threshold, + silence_frames_before_stop: audio_cfg.vad_silence_frames_before_stop, + }, + silence_frame_count: AtomicU32::new(0), + is_speaking: AtomicBool::new(false), + consecutive_overflows: AtomicU64::new(0), + }, + ); + Self { channel_id } + } +} + +impl Drop for RegisteredAudioSender { + fn drop(&mut self) { + debug!( + "Unregistering direct audio sender for channel {}", + self.channel_id + ); + get_audio_senders().remove(&self.channel_id); + } +} + +/// Send audio directly from SIP to Discord, bypassing tokio. +/// This is called from the pjsua audio thread. +/// +/// samples: PCM i16 mono at sample_rate (typically 16kHz from pjsua) +/// Returns true if audio was sent, false if no sender registered for this channel. +pub fn send_audio_to_discord_direct( + channel_id: Snowflake, + samples: &[i16], + sample_rate: u32, +) -> bool { + use std::sync::atomic::AtomicU64; + static SEND_COUNT: AtomicU64 = AtomicU64::new(0); + let count = SEND_COUNT.fetch_add(1, Ordering::Relaxed); + + let Some(sender) = get_audio_senders().get(&channel_id) else { + return false; + }; + + // VAD constants from cached config (no per-frame AppConfig lookup) + let silence_threshold = sender.vad_config.silence_threshold; + let mute_threshold = sender.vad_config.mute_threshold; + let silence_frames_before_stop = sender.vad_config.silence_frames_before_stop; + + // SIMD-accelerated amplitude detection for VAD + let input_max_amp = simd::max_abs_i16(samples); + + // Check for muted audio + let is_muted = input_max_amp < mute_threshold; + let has_speech = input_max_amp > silence_threshold; + let was_speaking = sender.is_speaking.load(Ordering::Relaxed); + let prev_silence_count = sender.silence_frame_count.load(Ordering::Relaxed); + + // Update VAD state (for diagnostics) + if is_muted { + sender + .silence_frame_count + .store(silence_frames_before_stop, Ordering::Relaxed); + sender.is_speaking.store(false, Ordering::Relaxed); + } else if has_speech { + sender.silence_frame_count.store(0, Ordering::Relaxed); + sender.is_speaking.store(true, Ordering::Relaxed); + } else { + let new_count = prev_silence_count.saturating_add(1); + sender + .silence_frame_count + .store(new_count, Ordering::Relaxed); + if new_count >= silence_frames_before_stop || !was_speaking { + sender.is_speaking.store(false, Ordering::Relaxed); + } + } + + // Lock the audio pipeline once for both resampling and ring buffer push + // (previously two separate Mutex acquisitions per frame) + let mut pipeline = sender.pipeline.lock(); + // Destructure to allow simultaneous borrows of resampler and producer + let AudioPipeline { + ref mut resampler, + ref mut producer, + } = *pipeline; + let rs = resampler; + + let f32_samples_len; + + if sample_rate != DISCORD_SAMPLE_RATE { + // Convert i16 to f64 for rubato, reusing pre-allocated buffer + rs.input_f64.clear(); + rs.input_f64 + .extend(samples.iter().map(|&s| s as f64 / 32768.0)); + + let input_len = rs.input_f64.len(); + + // Process through sinc resampler (maintains state across calls) + // rubato 1.0 uses audioadapter traits - wrap our mono Vec in a sequential slice of vecs + let input_channels = vec![std::mem::take(&mut rs.input_f64)]; + let input_adapter = match SequentialSliceOfVecs::new(&input_channels, 1, input_len) { + Ok(a) => a, + Err(e) => { + warn!( + "Failed to create input adapter for channel {}: {:?}", + channel_id, e + ); + let resampled_i16 = resample_audio(samples, sample_rate, DISCORD_SAMPLE_RATE); + rs.stereo_f32.clear(); + for &s in &resampled_i16 { + let f = s as f32 / 32768.0; + rs.stereo_f32.push(f); + rs.stereo_f32.push(f); + } + f32_samples_len = rs.stereo_f32.len(); + let ring_slots = producer.slots(); + if ring_slots >= f32_samples_len { + if let Ok(mut chunk) = producer.write_chunk(f32_samples_len) { + let (first, second) = chunk.as_mut_slices(); + let first_len = first.len(); + first.copy_from_slice(&rs.stereo_f32[..first_len]); + if !second.is_empty() { + second.copy_from_slice(&rs.stereo_f32[first_len..]); + } + chunk.commit_all(); + } + sender.consecutive_overflows.store(0, Ordering::Relaxed); + } + return !rs.stereo_f32.is_empty(); + } + }; + match rs.resampler.process(&input_adapter, 0, None) { + Ok(output_buffer) => { + let out_frames = output_buffer.frames(); + let out_channels = output_buffer.channels(); + if out_frames == 0 { + // Resampler buffering - send silence to keep timing + if count.is_multiple_of(50) { + warn!( + "Resampler returned empty output (buffering?) input={}", + input_len + ); + } + rs.stereo_f32.clear(); + rs.stereo_f32.resize(1920, 0.0f32); // 20ms of stereo silence at 48kHz + } else { + // Extract the mono channel data from the interleaved buffer + let data = output_buffer.take_data(); + let output_mono_len; + // Convert mono f64 to stereo f32, reusing pre-allocated buffer + rs.stereo_f32.clear(); + if out_channels == 1 { + output_mono_len = data.len(); + for sample in &data { + let s = *sample as f32; + rs.stereo_f32.push(s); + rs.stereo_f32.push(s); + } + } else { + // Extract first channel from interleaved data + output_mono_len = data.len() / out_channels; + for sample in data.iter().step_by(out_channels) { + let s = *sample as f32; + rs.stereo_f32.push(s); + rs.stereo_f32.push(s); + } + } + // Log resampler input/output ratio + if count.is_multiple_of(50) { + debug!( + "Resampler: input={} samples, output={} samples (ratio={:.2}, expected=3.0)", + input_len, output_mono_len, output_mono_len as f64 / input_len as f64 + ); + debug!( + "SIP→Discord #{}: mono_out={}, stereo_out={} samples ({} bytes as f32)", + count, + output_mono_len, + rs.stereo_f32.len(), + rs.stereo_f32.len() * 4 + ); + } + } + } + Err(e) => { + warn!( + "Resampler error for channel {}: {:?} (falling back to linear)", + channel_id, e + ); + // Fallback to simple linear interpolation, reusing buffer + let resampled_i16 = resample_audio(samples, sample_rate, DISCORD_SAMPLE_RATE); + rs.stereo_f32.clear(); + for &s in &resampled_i16 { + let f = s as f32 / 32768.0; + rs.stereo_f32.push(f); + rs.stereo_f32.push(f); + } + } + } + } else { + // Already at 48kHz - just convert to stereo f32, reusing buffer + rs.stereo_f32.clear(); + for &sample in samples { + let s = sample as f32 / 32768.0; + rs.stereo_f32.push(s); + rs.stereo_f32.push(s); + } + } + + f32_samples_len = rs.stereo_f32.len(); + + // Push samples to the ring buffer (same lock, no second acquisition) + let ring_slots = producer.slots(); + let samples_to_push = f32_samples_len; + + // Log every 50 packets (1 second at 20ms/packet) + if count.is_multiple_of(50) { + let ring_total = voice::ring_buffer_samples(); + let buffer_fill = ring_total - ring_slots; + let fill_ms = buffer_fill as f64 / 48000.0 / 2.0 * 1000.0; + debug!( + "SIP→Discord direct #{}: channel={}, pushing {} samples, ring buffer: {}/{} ({:.0}ms), input_amp={}", + count, channel_id, samples_to_push, buffer_fill, ring_total, fill_ms, input_max_amp + ); + } + + if ring_slots >= samples_to_push { + // Enough space - push all samples + if let Ok(mut chunk) = producer.write_chunk(samples_to_push) { + let (first, second) = chunk.as_mut_slices(); + let first_len = first.len(); + first.copy_from_slice(&rs.stereo_f32[..first_len]); + if !second.is_empty() { + second.copy_from_slice(&rs.stereo_f32[first_len..]); + } + chunk.commit_all(); + } + sender.consecutive_overflows.store(0, Ordering::Relaxed); + } else { + // Ring buffer full - drop samples (overflow) + let consecutive = sender.consecutive_overflows.fetch_add(1, Ordering::Relaxed) + 1; + if consecutive <= 10 || consecutive % 50 == 0 { + warn!( + "Ring buffer overflow for channel {} (consecutive: {}, need {} slots, have {})", + channel_id, consecutive, samples_to_push, ring_slots + ); + } + } + + true +} + +fn silence_threshold() -> i16 { + use std::sync::OnceLock; + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::audio().vad_silence_threshold) +} + +pub use voice::{resample_audio, resample_audio_into, StreamingAudioSource, DISCORD_SAMPLE_RATE}; + +/// Events emitted by the Discord module +#[derive(Debug, Clone)] +pub enum DiscordEvent { + /// Successfully connected to a voice channel + VoiceConnected { + bridge_id: String, + guild_id: Snowflake, + channel_id: Snowflake, + }, + /// Disconnected from voice channel + VoiceDisconnected { bridge_id: String }, +} + +/// Shared Discord client that maintains a single gateway connection. +/// +/// Instead of creating a new Serenity Client per SIP call (which opens a new +/// gateway WebSocket each time), we create ONE client at startup and reuse its +/// Songbird manager to join/leave voice channels. This reduces gateway connections +/// from N-per-call to exactly 1. +pub struct SharedDiscordClient { + songbird: Arc, + bot_user_id: AtomicU64, + _client_handle: tokio::task::JoinHandle<()>, +} + +impl SharedDiscordClient { + /// Create the shared Discord client. Call once at bridge startup. + /// + /// This opens a single gateway WebSocket connection that stays alive for + /// the bridge's lifetime. The returned Songbird manager is used by all + /// voice connections to join/leave channels. + pub async fn new(bot_token: &str) -> Result> { + info!("Creating shared Discord client (single gateway connection)"); + + let intents = GatewayIntents::GUILDS | GatewayIntents::GUILD_VOICE_STATES; + + let songbird_config = Config::default().decode_mode(DecodeMode::Decode(Default::default())); + let songbird = Songbird::serenity_from_config(songbird_config); + + let (ready_tx, ready_rx) = oneshot::channel::(); + let ready_tx = Arc::new(tokio::sync::Mutex::new(Some(ready_tx))); + + let token: Token = bot_token + .parse() + .map_err(|e| anyhow::anyhow!("Invalid bot token: {}", e))?; + + let mut client = Client::builder(token, intents) + .event_handler(Arc::new(SharedClientEventHandler { ready_tx })) + .voice_manager(songbird.clone()) + .await?; + + let client_handle = tokio::spawn(async move { + if let Err(e) = client.start().await { + error!("Shared Discord client error: {}", e); + } + }); + + // Wait for gateway Ready event to get the bot's user ID + let bot_user_id = + match tokio::time::timeout(std::time::Duration::from_secs(15), ready_rx).await { + Ok(Ok(id)) => { + info!("Shared Discord client ready, bot user ID: {}", id); + id + } + _ => { + error!( + "Failed to get bot user ID from shared client, feedback filtering may not work" + ); + 0 + } + }; + + // Let gateway stabilize + tokio::time::sleep(std::time::Duration::from_millis(500)).await; + + Ok(Arc::new(Self { + songbird, + bot_user_id: AtomicU64::new(bot_user_id), + _client_handle: client_handle, + })) + } + + /// Get the shared Songbird manager for joining/leaving voice channels. + pub fn songbird(&self) -> &Arc { + &self.songbird + } + + /// Get the bot's user ID (for filtering own audio in VoiceTick). + pub fn bot_user_id(&self) -> Snowflake { + Snowflake::new(self.bot_user_id.load(Ordering::Relaxed)) + } +} + +/// Serenity event handler for the shared client +struct SharedClientEventHandler { + ready_tx: Arc>>>, +} + +#[async_trait] +impl EventHandler for SharedClientEventHandler { + async fn dispatch(&self, _ctx: &Context, event: &FullEvent) { + if let FullEvent::Ready { data_about_bot, .. } = event { + info!( + "Shared Discord bot connected as {} (ID: {})", + data_about_bot.user.name, data_about_bot.user.id + ); + if let Some(tx) = self.ready_tx.lock().await.take() { + let _ = tx.send(data_about_bot.user.id.get()); + } + } + } +} + +/// Inner state for Discord voice connection +struct DiscordVoiceConnectionInner { + bridge_id: String, + guild_id: Snowflake, + channel_id: Snowflake, + songbird: Arc, + event_tx: Sender, + /// Health tracking: timestamp (ms since epoch) of last audio received from Discord (VoiceTick) + last_audio_received: Arc, + /// RAII guard: auto-unregisters the audio sender on drop + _audio_sender: RegisteredAudioSender, + /// Shared flag to deactivate VoiceReceiver handlers on disconnect + voice_receiver_active: Arc, + /// Set by VoiceReceiver when an unexpected DriverDisconnect event fires. + /// Checked by is_healthy() so the health check can react immediately. + driver_disconnected: Arc, +} + +/// A voice connection to a single Discord voice channel. +/// +/// Uses the shared Discord client's Songbird manager to join/leave channels +/// without creating new gateway connections. Each connection manages its own +/// audio pipeline (ring buffer, resampler, event handlers). +/// +/// This type is Clone-able (uses Arc internally) to allow sharing across async tasks. +#[derive(Clone)] +pub struct DiscordVoiceConnection { + inner: Arc, +} + +impl DiscordVoiceConnection { + /// Join a Discord voice channel using the shared client's Songbird manager. + /// + /// This does NOT create a new gateway connection — it reuses the single + /// shared client established at startup. Only the voice channel join/leave + /// is per-call. + pub async fn connect( + bridge_id: String, + shared_client: &Arc, + guild_id: Snowflake, + channel_id: Snowflake, + event_tx: Sender, + health_check_notify: Arc, + ) -> Result { + info!( + "Joining voice channel {} in guild {} for bridge {} (using shared client)", + channel_id, guild_id, bridge_id + ); + + let songbird = shared_client.songbird().clone(); + let bot_user_id = shared_client.bot_user_id(); + + // Join the voice channel with retry logic + let guild = GuildId::new(*guild_id); + let channel = ChannelId::new(*channel_id); + + let bridge_cfg = crate::config::AppConfig::bridge(); + let max_retries = bridge_cfg.voice_join_max_retries; + let retry_delay_secs = bridge_cfg.voice_join_retry_delay_secs; + + let mut last_error = None; + for attempt in 1..=max_retries { + if attempt > 1 { + info!( + "Retry attempt {} for joining voice channel {} (bridge {})", + attempt, channel_id, bridge_id + ); + } + + match songbird.join(guild, channel).await { + Ok(handler_lock) => { + info!( + "Joined voice channel {} in guild {} for bridge {}{}", + channel_id, + guild_id, + bridge_id, + if attempt > 1 { + format!(" (attempt {})", attempt) + } else { + String::new() + } + ); + + // Create the streaming audio source with ring buffer for sending audio to Discord + let (streaming_source, producer) = StreamingAudioSource::new(); + + // Register the ring buffer producer for direct SIP→Discord audio path + // This allows the pjsua audio thread to bypass tokio entirely + let audio_sender = RegisteredAudioSender::new(channel_id, producer); + + // Create shared timestamp for health tracking + let now_ms = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() as u64; + let last_audio_received = Arc::new(AtomicU64::new(now_ms)); + + // Set up audio receiver for incoming Discord voice + // and start the streaming audio source for outgoing audio + let voice_receiver_active = Arc::new(AtomicBool::new(true)); + let driver_disconnected = Arc::new(AtomicBool::new(false)); + { + let mut handler = handler_lock.lock().await; + + // CRITICAL: Clear any stale event handlers from previous bridges + // that may have accumulated on this guild's Call handler. + // Without this, each connect() adds 5 more handlers that never + // get removed, causing N duplicate audio processing per VoiceTick. + handler.remove_all_global_events(); + + // Register for VoiceTick events (decoded audio every 20ms) + // Also register for SpeakingStateUpdate to track SSRC-to-user mappings + // And driver events to monitor connection health + let receiver = VoiceReceiver::new( + bridge_id.clone(), + channel_id, + bot_user_id, + last_audio_received.clone(), + voice_receiver_active.clone(), + driver_disconnected.clone(), + health_check_notify, + ); + handler.add_global_event( + Event::Core(CoreEvent::SpeakingStateUpdate), + receiver.clone(), + ); + handler + .add_global_event(Event::Core(CoreEvent::VoiceTick), receiver.clone()); + handler.add_global_event( + Event::Core(CoreEvent::DriverConnect), + receiver.clone(), + ); + handler.add_global_event( + Event::Core(CoreEvent::DriverDisconnect), + receiver.clone(), + ); + handler.add_global_event(Event::Core(CoreEvent::DriverReconnect), receiver); + + // Start playing the streaming audio source immediately + // Track stays playing so Songbird always reads from the queue, + // preventing overflow. VAD filters which frames we push to the queue. + let input = streaming_source.into_input(); + let track_handle = handler.play_input(input); + + // Register track event handlers to monitor playback state + // This helps diagnose why Songbird might stop consuming audio + let track_handler = TrackEventHandler { + bridge_id: bridge_id.clone(), + }; + // Listen for track state changes (only End and Error are concerning) + track_handle + .add_event(Event::Track(TrackEvent::Play), track_handler.clone()) + .ok(); + track_handle + .add_event(Event::Track(TrackEvent::Pause), track_handler.clone()) + .ok(); + track_handle + .add_event(Event::Track(TrackEvent::End), track_handler.clone()) + .ok(); + track_handle + .add_event(Event::Track(TrackEvent::Error), track_handler) + .ok(); + + // Track stays playing - never pause it to avoid buffer underruns. + // Songbird needs to continuously read from the queue. + info!("Started streaming audio source for bridge {}", bridge_id); + + let _ = event_tx.send(DiscordEvent::VoiceConnected { + bridge_id: bridge_id.clone(), + guild_id, + channel_id, + }); + + // We don't need the track_handle anymore - track always plays + drop(track_handle); + + return Ok(Self { + inner: Arc::new(DiscordVoiceConnectionInner { + bridge_id, + guild_id, + channel_id, + songbird, + event_tx, + last_audio_received, + _audio_sender: audio_sender, + voice_receiver_active, + driver_disconnected, + }), + }); + } + } + Err(e) => { + error!( + "Failed to join voice channel (attempt {}/{}): {:?}", + attempt, max_retries, e + ); + last_error = Some(e); + + if attempt < max_retries { + info!( + "Waiting {} seconds before retry for bridge {}", + retry_delay_secs, bridge_id + ); + tokio::time::sleep(std::time::Duration::from_secs(retry_delay_secs)).await; + } + } + } + } + + // All retries failed + anyhow::bail!( + "Failed to join voice channel after {} attempts: {:?}", + max_retries, + last_error + ) + } + + /// Send audio to the Discord voice channel + /// + /// The samples should be PCM i16 at the given sample_rate (mono). + /// This function handles resampling to Discord's 48kHz stereo format. + /// Implements VAD (Voice Activity Detection) to only send audio when speech is detected. + /// Note: This is synchronous to minimize latency - no async overhead. + /// Check if the Discord connection is healthy. + /// + /// Returns true if VoiceTick events have been received within the last 5 seconds. + /// This indicates that Songbird is actively processing audio from Discord. + pub fn is_healthy(&self) -> bool { + // Immediate fail if the Songbird driver disconnected unexpectedly + if self.inner.driver_disconnected.load(Ordering::Relaxed) { + return false; + } + + let now_ms = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() as u64; + + let last_recv = self.inner.last_audio_received.load(Ordering::Relaxed); + let recv_age_ms = now_ms.saturating_sub(last_recv); + + // Consider unhealthy if no VoiceTick for 5 seconds + recv_age_ms < 5000 + } + + /// Get the current audio ring buffer fill percentage (0-100). + /// + /// High values (>80%) indicate backpressure - Discord consumer is falling behind. + pub fn queue_fill_percent(&self) -> u8 { + // Read from the direct audio sender registry + get_audio_senders() + .get(&self.inner.channel_id) + .map(|s| { + let pipeline = s.pipeline.lock(); + let slots_free = pipeline.producer.slots(); + let total = voice::ring_buffer_samples(); + let filled = total.saturating_sub(slots_free); + ((filled * 100) / total).min(100) as u8 + }) + .unwrap_or(0) + } + + /// Get the number of consecutive overflow errors. + /// + /// High values indicate the Discord audio consumer has stopped reading. + pub fn consecutive_overflows(&self) -> u64 { + // Read from the direct audio sender registry + get_audio_senders() + .get(&self.inner.channel_id) + .map(|s| s.consecutive_overflows.load(Ordering::Relaxed)) + .unwrap_or(0) + } + + /// Get the bridge ID for this connection. + pub fn bridge_id(&self) -> &str { + &self.inner.bridge_id + } + + /// Leave the voice channel and disconnect. + /// + /// This only leaves the voice channel — it does NOT shut down the shared + /// Discord client, which stays alive for other connections. + pub async fn disconnect(self) { + info!("Disconnecting bridge {} from Discord", self.inner.bridge_id); + + // Deactivate the VoiceReceiver to prevent stale event processing. + // This is a safety net: even if remove_all_global_events misses something + // (e.g. race with reconnect), the old handler becomes a no-op. + self.inner + .voice_receiver_active + .store(false, Ordering::Relaxed); + + // Audio sender is auto-unregistered when DiscordVoiceConnectionInner is dropped + + let guild = GuildId::new(*self.inner.guild_id); + + // Stop all tracks and clear event handlers before leaving. + // This ensures old StreamingAudioSource instances stop being polled + // and no stale VoiceReceiver handlers survive on the Call handler. + if let Some(handler_lock) = self.inner.songbird.get(guild) { + let mut handler = handler_lock.lock().await; + handler.remove_all_global_events(); + handler.stop(); + } + + let _ = self.inner.songbird.leave(guild).await; + + // Small delay to let Songbird fully release resources before any reconnection + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + + let _ = self.inner.event_tx.send(DiscordEvent::VoiceDisconnected { + bridge_id: self.inner.bridge_id.clone(), + }); + } +} + +/// Track event handler to monitor audio playback state +/// This helps diagnose why Songbird might stop consuming audio +#[derive(Clone)] +struct TrackEventHandler { + bridge_id: String, +} + +#[async_trait] +impl VoiceEventHandler for TrackEventHandler { + async fn act(&self, ctx: &EventContext<'_>) -> Option { + if let EventContext::Track(track_list) = ctx { + for (state, _handle) in track_list.iter() { + // Only log concerning states at warn/error level + match state.playing { + PlayMode::Stop => { + error!( + "TRACK STOPPED for bridge {} - this will cause queue overflow!", + self.bridge_id + ); + } + PlayMode::End => { + error!( + "TRACK ENDED for bridge {} - this will cause queue overflow!", + self.bridge_id + ); + } + PlayMode::Play | PlayMode::Pause => { + // Normal state changes - log at trace level + trace!( + "Track event for bridge {}: mode={:?}, position={:?}", + self.bridge_id, + state.playing, + state.position, + ); + } + _ => { + trace!( + "Track event for bridge {}: mode={:?}", + self.bridge_id, + state.playing, + ); + } + } + } + } + None + } +} + +/// Pre-allocated buffers for audio mixing to avoid per-tick allocations +struct MixingBuffer { + /// Mixed audio in i32 for headroom (1920 samples = 20ms @ 48kHz stereo) + mixed: Vec, + /// Stereo output after clamping to i16 (1920 samples) + stereo_out: Vec, + /// Mono output for SIP (960 samples = 20ms @ 48kHz mono) + mono_out: Vec, + /// Pre-allocated buffer for 48kHz→16kHz resampled output (avoids per-tick Vec allocation) + resample_buf: Vec, +} + +impl MixingBuffer { + fn new() -> Self { + Self { + mixed: vec![0i32; 1920], + stereo_out: vec![0i16; 1920], + mono_out: vec![0i16; 960], + // 960 mono samples at 48kHz → ~320 at 16kHz (ratio 3:1) + resample_buf: Vec::with_capacity(960), + } + } +} + +/// Voice event receiver for capturing audio +#[derive(Clone)] +struct VoiceReceiver { + bridge_id: String, + /// Discord channel ID for direct ring buffer writes + channel_id: Snowflake, + /// The bot's own user ID - used to filter out our own audio from VoiceTick + bot_user_id: Snowflake, + /// Map from SSRC to user ID - populated from SpeakingStateUpdate events + ssrc_to_user: Arc>>, + /// Shared timestamp for health tracking - updated when audio is received + last_audio_received: Arc, + /// Pre-allocated mixing buffers to avoid allocations in hot path + mixing_buffer: Arc>, + /// Safety flag: set to false on disconnect to make stale handlers no-op. + /// Prevents accumulated handlers from processing audio after their bridge disconnects. + active: Arc, + /// Set when an unexpected DriverDisconnect fires, so is_healthy() returns false immediately. + driver_disconnected: Arc, + /// Notify the health check loop to wake up immediately on driver disconnect. + health_check_notify: Arc, +} + +impl VoiceReceiver { + fn new( + bridge_id: String, + channel_id: Snowflake, + bot_user_id: Snowflake, + last_audio_received: Arc, + active: Arc, + driver_disconnected: Arc, + health_check_notify: Arc, + ) -> Self { + Self { + bridge_id, + channel_id, + bot_user_id, + ssrc_to_user: Arc::new(Mutex::new(HashMap::new())), + last_audio_received, + mixing_buffer: Arc::new(Mutex::new(MixingBuffer::new())), + active, + driver_disconnected, + health_check_notify, + } + } +} + +#[async_trait] +impl VoiceEventHandler for VoiceReceiver { + async fn act(&self, ctx: &EventContext<'_>) -> Option { + // Safety net: if this receiver has been deactivated (bridge disconnected), + // skip all processing to prevent stale handlers from corrupting audio. + if !self.active.load(Ordering::Relaxed) { + return None; + } + + match ctx { + EventContext::SpeakingStateUpdate(speaking) => { + // Track SSRC-to-user mappings for filtering out bot's own audio + if let Some(user_id) = speaking.user_id { + let user_id_snowflake = Snowflake::new(user_id.0); + let mut map = self.ssrc_to_user.lock(); + map.insert(speaking.ssrc, user_id_snowflake); + if user_id_snowflake == self.bot_user_id { + debug!( + "Recorded bot's own SSRC {} for bridge {}", + speaking.ssrc, self.bridge_id + ); + } else { + trace!( + "Recorded SSRC {} -> user {} for bridge {}", + speaking.ssrc, + user_id_snowflake, + self.bridge_id + ); + } + } + debug!("Speaking state update: {:?}", speaking); + } + EventContext::DriverConnect(info) => { + info!( + "Songbird DRIVER CONNECTED for bridge {}: channel={:?}, ssrc={:?}, session_id={:?}", + self.bridge_id, info.channel_id, info.ssrc, info.session_id + ); + } + EventContext::DriverDisconnect(info) => { + // Check if this was a requested disconnect (normal) or unexpected + let is_requested = info + .reason + .as_ref() + .map(|r| format!("{:?}", r).contains("Requested")) + .unwrap_or(false); + if is_requested { + debug!( + "Songbird driver disconnected (requested) for bridge {}: channel={:?}", + self.bridge_id, info.channel_id + ); + } else { + // Unexpected disconnect - this is a problem! + error!( + "Songbird DRIVER DISCONNECTED unexpectedly for bridge {}: channel={:?}, reason={:?}", + self.bridge_id, info.channel_id, info.reason + ); + // Signal unhealthy immediately so the health check can react + // within ~1s instead of waiting for the next 5s tick. + self.driver_disconnected.store(true, Ordering::Relaxed); + self.health_check_notify.notify_one(); + } + } + EventContext::DriverReconnect(info) => { + warn!( + "Songbird DRIVER RECONNECTING for bridge {}: channel={:?}, ssrc={:?}", + self.bridge_id, info.channel_id, info.ssrc + ); + } + EventContext::VoiceTick(tick) => { + static TICK_COUNT: AtomicU64 = AtomicU64::new(0); + let count = TICK_COUNT.fetch_add(1, Ordering::Relaxed); + + // Update health tracking timestamp - VoiceTick arriving means Discord is alive + let now_ms = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() as u64; + self.last_audio_received.store(now_ms, Ordering::Relaxed); + + // Log every 250 ticks (5 seconds at 20ms per tick) + let should_log = count.is_multiple_of(250); + + // Use try_lock to avoid blocking on the event loop - skip tick if contended + let ssrc_map = self.ssrc_to_user.try_lock(); + + // Try to get mixing buffer - skip tick if contended (shouldn't happen normally) + let mut mixing_buf = match self.mixing_buffer.try_lock() { + Some(buf) => buf, + None => { + if should_log { + trace!("VoiceTick: Skipping tick due to mixing buffer contention"); + } + return None; + } + }; + + let speaker_count = tick.speaking.len(); + let silent_count = tick.silent.len(); + let mut skipped_self = false; + let mut has_audio = false; + let mut max_len: usize = 0; + + if should_log { + trace!( + "VoiceTick #{}: {} speaking, {} silent users", + count, + speaker_count, + silent_count + ); + } + + // Reset the mixing buffer for this tick + // Only clear as much as we'll use (optimization for fewer speakers) + let buffer_capacity = mixing_buf.mixed.len(); + + for (ssrc, voice_data) in tick.speaking.iter() { + // CRITICAL: Skip our own SSRC to prevent feedback loop + // When we send audio to Discord, it comes back in VoiceTick. + // If we don't filter it out, we get: SIP -> Discord -> SIP -> Discord -> ... + if let Some(ref map) = ssrc_map { + if let Some(&user_id) = map.get(ssrc) { + if user_id == self.bot_user_id { + skipped_self = true; + if should_log { + trace!( + "VoiceTick: Skipping bot's own SSRC {} to prevent feedback", + ssrc + ); + } + continue; + } + } + } + + if let Some(ref decoded) = voice_data.decoded_voice { + if decoded.is_empty() { + if should_log { + trace!("VoiceTick: SSRC {} has empty decoded_voice", ssrc); + } + continue; + } + + if should_log || count < 10 { + trace!( + "VoiceTick: SSRC {} has {} decoded samples", + ssrc, + decoded.len() + ); + } + + let len = decoded.len().min(buffer_capacity); + + if !has_audio { + // First speaker - widen i16 to i32 using SIMD + simd::widen_i16_to_i32(&decoded[..len], &mut mixing_buf.mixed[..len]); + max_len = len; + has_audio = true; + } else { + // Mix in additional speakers using SIMD accumulate + let mix_len = len.min(max_len); + simd::accumulate_i16_to_i32( + &decoded[..mix_len], + &mut mixing_buf.mixed[..mix_len], + ); + // Handle case where this speaker has more samples + if len > max_len { + simd::widen_i16_to_i32( + &decoded[max_len..len], + &mut mixing_buf.mixed[max_len..len], + ); + max_len = len; + } + } + } else if should_log { + trace!( + "VoiceTick: SSRC {} has no decoded_voice (decode mode not enabled?)", + ssrc + ); + } + } + + // Log when we filtered out our own audio + if skipped_self && should_log { + trace!("VoiceTick: Filtered out bot's own audio to prevent feedback loop"); + } + + // Diagnostic: Log when there are speakers but no decoded audio + // This helps identify when Discord is sending data but decode isn't working + let other_speaker_count = if skipped_self { + speaker_count.saturating_sub(1) + } else { + speaker_count + }; + if !has_audio && other_speaker_count > 0 { + // Count speakers without decoded audio + static NO_DECODE_COUNT: AtomicU64 = AtomicU64::new(0); + let no_decode = NO_DECODE_COUNT.fetch_add(1, Ordering::Relaxed) + 1; + if no_decode <= 10 || no_decode.is_multiple_of(50) { + warn!( + "VoiceTick #{}: {} speakers but no decoded audio! (no_decode_count={})", + count, other_speaker_count, no_decode + ); + } + } + + // If we have audio, convert and send it using pre-allocated buffers + if has_audio && max_len > 0 { + // Destructure to allow simultaneous borrows of different fields + let MixingBuffer { + ref mixed, + ref mut stereo_out, + ref mut mono_out, + ref mut resample_buf, + } = *mixing_buf; + + // Convert i32 -> i16 with saturation using SIMD + let stereo_len = max_len.min(stereo_out.len()); + simd::clamp_i32_to_i16(&mixed[..stereo_len], &mut stereo_out[..stereo_len]); + + // Convert stereo to mono for SIP using SIMD + let mono_len = (stereo_len / 2).min(mono_out.len()); + simd::stereo_to_mono_i16(&stereo_out[..stereo_len], &mut mono_out[..mono_len]); + + // Check max amplitude for VAD using SIMD + let max_amp = simd::max_abs_i16(&mono_out[..mono_len]); + + // VAD: Only send audio if it's above the silence threshold + // This prevents feedback loops and reduces unnecessary traffic + // Use same threshold as SIP→Discord for consistency + if max_amp < silence_threshold() { + if should_log { + trace!( + "VoiceTick: VAD filtering silence (max_amp={} < threshold={})", + max_amp, + silence_threshold() + ); + } + } else if mono_len > 0 { + trace!( + "VoiceTick: {} speakers, {} mono samples, max amp: {}", + speaker_count, + mono_len, + max_amp + ); + + // Direct ring buffer path: resample 48kHz→16kHz and write to ring buffer + // This bypasses the entire tokio async round-trip through call/mod.rs + // Uses pre-allocated resample_buf to avoid per-tick Vec allocation + resample_audio_into( + &mono_out[..mono_len], + DISCORD_SAMPLE_RATE, + 16000, // CONF_SAMPLE_RATE + resample_buf, + ); + if !resample_buf.is_empty() { + write_discord_to_sip(self.channel_id, resample_buf); + } + } + } + } + _ => {} + } + None + } +} diff --git a/sipcord-bridge/src/transport/discord/voice.rs b/sipcord-bridge/src/transport/discord/voice.rs new file mode 100644 index 0000000..f1ed71f --- /dev/null +++ b/sipcord-bridge/src/transport/discord/voice.rs @@ -0,0 +1,239 @@ +//! Voice/audio utilities for Discord + +use parking_lot::Mutex; +use rtrb::Consumer; +use songbird::input::{Input, RawAdapter}; +use std::io::{Read, Seek, SeekFrom}; +use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; +use symphonia_core::io::MediaSource; + +/// Discord expects 48kHz stereo audio +pub const DISCORD_SAMPLE_RATE: u32 = 48000; +const DISCORD_CHANNELS: u16 = 2; + +/// Ring buffer capacity in samples (f32 stereo pairs) +pub fn ring_buffer_samples() -> usize { + use std::sync::OnceLock; + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::audio().ring_buffer_samples) +} + +/// Pre-buffer threshold in samples before we start outputting +fn pre_buffer_samples() -> usize { + use std::sync::OnceLock; + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::audio().pre_buffer_samples) +} + +/// Resample audio from one sample rate to another using linear interpolation. +/// This is a fallback - prefer using the rubato sinc resampler for quality. +pub fn resample_audio(samples: &[i16], from_rate: u32, to_rate: u32) -> Vec { + let mut output = Vec::new(); + resample_audio_into(samples, from_rate, to_rate, &mut output); + output +} + +/// Resample audio into a pre-allocated buffer (avoids per-call Vec allocation). +/// Clears `output` and fills it with resampled data. +pub fn resample_audio_into(samples: &[i16], from_rate: u32, to_rate: u32, output: &mut Vec) { + output.clear(); + + if from_rate == to_rate { + output.extend_from_slice(samples); + return; + } + + if samples.is_empty() { + return; + } + + let ratio = from_rate as f64 / to_rate as f64; + let output_len = ((samples.len() as f64) / ratio).ceil() as usize; + output.reserve(output_len.saturating_sub(output.capacity())); + + for i in 0..output_len { + let src_pos = i as f64 * ratio; + let src_idx = src_pos as usize; + let frac = src_pos - src_idx as f64; + + let sample = if src_idx + 1 < samples.len() { + let s0 = samples[src_idx] as f64; + let s1 = samples[src_idx + 1] as f64; + (s0 + (s1 - s0) * frac) as i16 + } else if src_idx < samples.len() { + samples[src_idx] + } else { + 0 + }; + + output.push(sample); + } +} + +/// Streaming audio source using a lock-free ring buffer. +/// +/// This implements Symphonia's MediaSource trait and provides raw f32 PCM data. +/// Uses rtrb for lock-free, wait-free audio streaming - no spinning or blocking. +/// +/// The Mutex around Consumer is required to satisfy MediaSource's Sync bound, +/// but since only one thread (Songbird's audio thread) ever accesses it, +/// there's never any contention - it's essentially just satisfying the type system. +pub struct StreamingAudioSource { + /// Ring buffer consumer for audio samples (f32) + /// Wrapped in Mutex to satisfy Sync bound (no actual contention) + consumer: Mutex>, + /// Read count for logging (atomic — single reader, no contention) + read_count: AtomicU64, + /// Whether we've pre-buffered enough to start output (atomic — single reader) + pre_buffered: AtomicBool, + /// Underrun count for diagnostics (atomic — single reader) + underrun_count: AtomicU64, +} + +impl StreamingAudioSource { + /// Create a new streaming audio source with ring buffer. + /// + /// Returns the source and the rtrb Producer to push audio samples. + /// Samples should be f32 interleaved stereo at 48kHz, normalized to [-1.0, 1.0]. + pub fn new() -> (Self, rtrb::Producer) { + let (producer, consumer) = rtrb::RingBuffer::new(ring_buffer_samples()); + + ( + Self { + consumer: Mutex::new(consumer), + read_count: AtomicU64::new(0), + pre_buffered: AtomicBool::new(false), + underrun_count: AtomicU64::new(0), + }, + producer, + ) + } + + /// Create a Songbird Input from this streaming source + pub fn into_input(self) -> Input { + RawAdapter::new(self, DISCORD_SAMPLE_RATE, DISCORD_CHANNELS as u32).into() + } +} + +impl Read for StreamingAudioSource { + fn read(&mut self, buf: &mut [u8]) -> std::io::Result { + let count = self.read_count.fetch_add(1, Ordering::Relaxed) + 1; + + // How many f32 samples can we fit in the output buffer? + let samples_requested = buf.len() / 4; // 4 bytes per f32 + + let mut consumer = self.consumer.lock(); + let samples_available = consumer.slots(); + + // Pre-buffering: wait until ring buffer has enough before starting + if !self.pre_buffered.load(Ordering::Relaxed) { + if samples_available >= pre_buffer_samples() { + self.pre_buffered.store(true, Ordering::Relaxed); + let ms_buffered = samples_available as f64 / 48000.0 / 2.0 * 1000.0; + tracing::info!( + "StreamingAudioSource: Pre-buffer complete ({} samples, {:.0}ms), starting output", + samples_available, ms_buffered + ); + } else { + // Still pre-buffering - return silence + if count.is_multiple_of(50) { + let ms_buffered = samples_available as f64 / 48000.0 / 2.0 * 1000.0; + let ms_target = pre_buffer_samples() as f64 / 48000.0 / 2.0 * 1000.0; + tracing::debug!( + "StreamingAudioSource: Pre-buffering {}/{} samples ({:.0}ms / {:.0}ms)", + samples_available, + pre_buffer_samples(), + ms_buffered, + ms_target + ); + } + buf.fill(0); + return Ok(buf.len()); + } + } + + // Log buffer status periodically + if count.is_multiple_of(50) { + let ms_buffered = samples_available as f64 / 48000.0 / 2.0 * 1000.0; + tracing::debug!( + "StreamingAudioSource #{}: ring buffer has {} samples ({:.1}ms), Songbird wants {} samples", + count, samples_available, ms_buffered, samples_requested + ); + } + + // Read as many samples as we can from ring buffer + let samples_to_read = samples_requested.min(samples_available); + + if samples_to_read == 0 { + // Buffer empty - underrun + let underruns = self.underrun_count.fetch_add(1, Ordering::Relaxed) + 1; + if underruns <= 5 || underruns.is_multiple_of(100) { + tracing::warn!( + "StreamingAudioSource: Ring buffer empty, filling with silence (underruns: {})", + underruns + ); + } + buf.fill(0); + return Ok(buf.len()); + } + + // Read samples from ring buffer directly into output buffer + let chunk = consumer.read_chunk(samples_to_read).unwrap(); + let (first, second) = chunk.as_slices(); + + // Bulk copy f32 samples as raw bytes (memcpy instead of per-sample loop) + let first_bytes = + unsafe { std::slice::from_raw_parts(first.as_ptr() as *const u8, first.len() * 4) }; + buf[..first_bytes.len()].copy_from_slice(first_bytes); + if !second.is_empty() { + let second_bytes = unsafe { + std::slice::from_raw_parts(second.as_ptr() as *const u8, second.len() * 4) + }; + buf[first_bytes.len()..first_bytes.len() + second_bytes.len()] + .copy_from_slice(second_bytes); + } + chunk.commit_all(); + + // Fill remainder with silence if we didn't have enough + let bytes_written = samples_to_read * 4; + if bytes_written < buf.len() { + buf[bytes_written..].fill(0); + if count.is_multiple_of(50) || count < 10 { + let silence_samples = (buf.len() - bytes_written) / 4; + tracing::debug!( + "StreamingAudioSource #{}: Partial read, filled {} samples with silence", + count, + silence_samples + ); + } + } + + Ok(buf.len()) + } +} + +impl Seek for StreamingAudioSource { + fn seek(&mut self, _pos: SeekFrom) -> std::io::Result { + // Live streams are not seekable + Err(std::io::Error::new( + std::io::ErrorKind::Unsupported, + "Live streams are not seekable", + )) + } +} + +impl MediaSource for StreamingAudioSource { + fn is_seekable(&self) -> bool { + false + } + + fn byte_len(&self) -> Option { + None // Unknown length for live streams + } +} + +impl Drop for StreamingAudioSource { + fn drop(&mut self) { + tracing::debug!("StreamingAudioSource dropped (call ending)"); + } +} diff --git a/sipcord-bridge/src/transport/mod.rs b/sipcord-bridge/src/transport/mod.rs new file mode 100644 index 0000000..c736288 --- /dev/null +++ b/sipcord-bridge/src/transport/mod.rs @@ -0,0 +1,2 @@ +pub mod discord; +pub mod sip; diff --git a/sipcord-bridge/src/transport/sip/audio_thread.rs b/sipcord-bridge/src/transport/sip/audio_thread.rs new file mode 100644 index 0000000..027e516 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/audio_thread.rs @@ -0,0 +1,863 @@ +//! Audio processing thread and RTP activity tracking +//! +//! This module handles: +//! - Audio thread lifecycle (start/stop) +//! - Per-frame audio processing for SIP <-> Discord +//! - RTP inactivity timeout detection + +use super::channel_audio::{complete_pending_channel_registration, get_active_channels_into}; +use super::ffi::types::*; +use crate::audio::simd; +use crate::services::snowflake::Snowflake; +use crossbeam_channel::Sender; +use crossbeam_queue::SegQueue; +use parking_lot::Mutex; +use pjsua::*; +use std::mem::MaybeUninit; +use std::sync::atomic::{AtomicU64, Ordering}; +use std::time::Instant; + +/// Frame counter for when we first see active channels (for debug logging) +/// This is reset when the audio thread starts to prevent subtraction overflow +static FIRST_ACTIVE_CHANNEL_FRAME: AtomicU64 = AtomicU64::new(0); + +fn drain_queue(queue: &SegQueue, name: &str) { + let mut count = 0; + while queue.pop().is_some() { + count += 1; + } + if count > 0 { + tracing::warn!("Drained {} stale {} from previous audio thread", count, name); + } +} + +/// Start the audio processing thread +/// +/// This thread periodically: +/// - Gets audio frames from the conference (SIP -> callback) +/// - Puts audio frames to the conference (from AUDIO_OUT_BUFFERS -> SIP) +pub fn start_audio_thread() { + if AUDIO_THREAD_RUNNING.swap(true, Ordering::SeqCst) { + tracing::warn!("Audio thread already running"); + return; + } + + // Reset the "ready" flag - we'll set it after processing the first frame + AUDIO_THREAD_READY.store(false, Ordering::SeqCst); + + // Reset the first-active-channel frame counter to prevent subtraction overflow + // when the audio thread restarts with a new frame_count + FIRST_ACTIVE_CHANNEL_FRAME.store(0, Ordering::SeqCst); + + let handle = std::thread::spawn(|| { + // Catch any panics in the audio thread + let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { + tracing::info!( + "Audio processing thread started [thread: {:?}]", + std::thread::current().id() + ); + + // Drain stale ops from previous audio thread lifecycle + drain_queue(&PENDING_PJSUA_OPS, "PENDING_PJSUA_OPS"); + drain_queue(&PENDING_CONF_CONNECTIONS, "PENDING_CONF_CONNECTIONS"); + drain_queue(&PENDING_CHANNEL_COMPLETIONS, "PENDING_CHANNEL_COMPLETIONS"); + + // Register this thread with PJLIB so we can call PJSUA functions + // The thread descriptor must remain valid for the thread's lifetime + let mut thread_desc: pj_thread_desc = [0; 64]; + let mut thread_ptr: *mut pj_thread_t = std::ptr::null_mut(); + let thread_name = c"audio_thread"; + + unsafe { + let is_registered = pj_thread_is_registered(); + if is_registered == 0 { + let status = pj_thread_register( + thread_name.as_ptr(), + thread_desc.as_mut_ptr(), + &mut thread_ptr, + ); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::error!("Failed to register audio thread with PJLIB: {}", status); + return; + } + tracing::debug!("Audio thread registered with PJLIB successfully"); + } else { + tracing::debug!("Audio thread already registered with PJLIB"); + } + } + + // Allocate frame buffer (16-bit samples) + let frame_size_bytes = SAMPLES_PER_FRAME * 2; // 2 bytes per i16 sample + let mut frame_buffer: Vec = vec![0u8; frame_size_bytes]; + let mut timestamp: u64 = 0; + let mut frame_count: u64 = 0; + + let mut active_channels: Vec = Vec::with_capacity(32); + let mut drain_buf: Vec = vec![0i16; SAMPLES_PER_FRAME]; + let silence: Vec = vec![0i16; SAMPLES_PER_FRAME]; + + // Use deadline-based timing instead of duration-based timing. + // This prevents sleep overrun from accumulating frame after frame. + let frame_duration = std::time::Duration::from_millis(FRAME_PTIME_MS as u64); + let mut next_frame_deadline = Instant::now() + frame_duration; + + while AUDIO_THREAD_RUNNING.load(Ordering::SeqCst) { + let start = std::time::Instant::now(); + + // Process one frame + unsafe { + process_audio_frame( + &mut frame_buffer, + &mut timestamp, + &mut frame_count, + &mut active_channels, + &mut drain_buf, + &silence, + ); + } + + // After the first frame, mark audio thread as ready and process any pending + // channel registrations. This ensures the conference bridge is actively being + // clocked when we make connections via pjsua_conf_connect. + if frame_count == 1 { + AUDIO_THREAD_READY.store(true, Ordering::SeqCst); + tracing::debug!("Audio thread ready after first frame, processing pending channel completions"); + process_pending_channel_completions(); + } + + // Process any pending conference connections (must be done in audio thread + // to avoid conflicts with pjmedia_port_get_frame) + process_pending_conf_connections(frame_count); + + // Process any pending PJSUA operations (answer, hangup, play) + // These must run in the audio thread to avoid deadlocks with conf_connect/disconnect + process_pending_pjsua_ops(); + + // Track frame processing time for latency diagnostics + let processing_elapsed = start.elapsed(); + let processing_ms = processing_elapsed.as_secs_f64() * 1000.0; + + // Warn if processing took longer than frame time (20ms) - this causes audio crunch + if processing_ms > FRAME_PTIME_MS as f64 { + tracing::warn!( + "AUDIO OVERRUN: Frame #{} processing took {:.2}ms (>{}ms), audio will crunch!", + frame_count, processing_ms, FRAME_PTIME_MS + ); + } else if processing_ms > (FRAME_PTIME_MS as f64 * 0.8) { + // Warn if approaching the limit (>80% of frame time) + tracing::debug!( + "Audio frame #{} processing took {:.2}ms (approaching {}ms limit)", + frame_count, + processing_ms, + FRAME_PTIME_MS + ); + } + + // Log every 5 seconds (250 frames at 20ms each) that we're still alive + if frame_count.is_multiple_of(250) { + let call_ids: Vec = COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().iter().copied().collect()) + .unwrap_or_default(); + + tracing::debug!( + "Audio thread: frame #{}, active_calls={}, call_ids={:?}", + frame_count, + call_ids.len(), + call_ids + ); + } + + // Deadline-based sleep: sleep until the next frame deadline, not for a duration. + // This compensates for any sleep overrun on the next frame. + let now = Instant::now(); + if next_frame_deadline > now { + std::thread::sleep(next_frame_deadline - now); + } + // Advance deadline for next frame (even if we're behind, keep the cadence) + next_frame_deadline += frame_duration; + + // If we've fallen more than 5 frames behind (100ms), reset the deadline + // to avoid a burst of catch-up frames that would cause audio glitches + if next_frame_deadline + std::time::Duration::from_millis(100) < Instant::now() { + tracing::warn!( + "Audio thread fell behind by >100ms, resetting deadline (frame #{})", + frame_count + ); + next_frame_deadline = Instant::now() + frame_duration; + } + } + + tracing::debug!( + "Audio processing thread exiting - AUDIO_THREAD_RUNNING is false, frame_count={}", + frame_count + ); + })); + + if let Err(e) = result { + tracing::error!("AUDIO THREAD PANICKED: {:?}", e); + } + }); + + // Store the handle for joining later + let handle_storage = AUDIO_THREAD_HANDLE.get_or_init(|| Mutex::new(None)); + *handle_storage.lock() = Some(handle); +} + +/// Stop the audio processing thread +pub fn stop_audio_thread() { + let active_calls = COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().len()) + .unwrap_or(0); + tracing::debug!( + "Stopping audio thread (active_media_calls={}, was_running={})", + active_calls, + AUDIO_THREAD_RUNNING.load(Ordering::SeqCst) + ); + AUDIO_THREAD_RUNNING.store(false, Ordering::SeqCst); + AUDIO_THREAD_READY.store(false, Ordering::SeqCst); + + // Wait for the thread to stop with a bounded timeout. + // If the thread is blocked on a conference bridge lock, we don't want + // shutdown to hang indefinitely. The 2s force-exit timer in main.rs + // is a final backstop, but this avoids relying on a hard process exit. + if let Some(handle_storage) = AUDIO_THREAD_HANDLE.get() { + if let Some(handle) = handle_storage.lock().take() { + tracing::debug!("Joining audio thread (2s timeout)..."); + let (done_tx, done_rx) = std::sync::mpsc::channel(); + let join_thread = std::thread::spawn(move || { + let result = handle.join(); + let _ = done_tx.send(result); + }); + match done_rx.recv_timeout(std::time::Duration::from_secs(2)) { + Ok(Ok(())) => { + tracing::debug!("Audio thread joined successfully"); + } + Ok(Err(e)) => { + tracing::error!("Audio thread panicked: {:?}", e); + } + Err(_) => { + tracing::warn!("Audio thread join timed out after 2s, detaching"); + // Detach the join thread — the audio thread will be + // cleaned up by process exit + drop(join_thread); + } + } + } + } +} + +/// Process any pending channel registration completions +/// Called from the audio thread after it has processed its first frame +fn process_pending_channel_completions() { + let mut count = 0; + while let Some((call_id, conf_port)) = PENDING_CHANNEL_COMPLETIONS.pop() { + tracing::debug!( + "Completing deferred channel registration: call {} -> conf_port {}", + call_id, + conf_port + ); + complete_pending_channel_registration(call_id, conf_port); + count += 1; + } + + if count > 0 { + tracing::debug!("Processed {} pending channel completions", count); + } else { + tracing::debug!("No pending channel completions to process"); + } +} + +/// Process any pending conference connections +/// Called from the audio thread every frame to handle newly registered calls +fn process_pending_conf_connections(_frame_count: u64) { + use super::channel_audio::complete_conf_connections; + + let mut count = 0; + while let Some((call_id, channel_id)) = PENDING_CONF_CONNECTIONS.pop() { + tracing::debug!( + "Audio thread making conference connections: call {} -> channel {}", + call_id, + channel_id + ); + complete_conf_connections(call_id, channel_id); + count += 1; + } + + if count > 0 { + tracing::debug!( + "Audio thread processed {} pending conference connections", + count + ); + } +} + +/// Process any pending PJSUA operations +/// Called from the audio thread every frame to handle queued operations +/// that would deadlock if called from other threads during audio processing +fn is_call_valid(call_id: CallId) -> bool { + unsafe { + let mut ci = MaybeUninit::::uninit(); + let status = pjsua_call_get_info(*call_id, ci.as_mut_ptr()); + if status != pj_constants__PJ_SUCCESS as i32 { + return false; + } + let ci = ci.assume_init(); + ci.state != pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED + } +} + +fn process_pending_pjsua_ops() { + use super::ffi::direct_player::play_audio_to_call_direct_internal; + use super::ffi::streaming_player::start_streaming_to_call; + + let mut count = 0; + while let Some(op) = PENDING_PJSUA_OPS.pop() { + // Validate that the call still exists before processing the op + let call_id = match &op { + PendingPjsuaOp::PlayDirect { call_id, .. } => Some(*call_id), + PendingPjsuaOp::StartLoop { call_id, .. } => Some(*call_id), + PendingPjsuaOp::StartStreaming { call_id, .. } => Some(*call_id), + PendingPjsuaOp::StartTestTone { call_id } => Some(*call_id), + PendingPjsuaOp::Hangup { call_id } => Some(*call_id), + PendingPjsuaOp::ConnectFaxPort { call_id, .. } => Some(*call_id), + }; + if let Some(cid) = call_id { + if !is_call_valid(cid) { + tracing::warn!("Skipping stale op for dead call {}: {:?}", cid, op); + // For ConnectFaxPort, signal failure so the caller doesn't hang + if let PendingPjsuaOp::ConnectFaxPort { done_tx, .. } = op { + let _ = done_tx.send(false); + } + continue; + } + } + count += 1; + match op { + PendingPjsuaOp::PlayDirect { call_id, samples } => { + tracing::debug!( + "Audio thread: executing PlayDirect for call {} ({} samples)", + call_id, + samples.len() + ); + // Stop any active looping player for this call first + // This ensures a seamless transition from connecting sound to join sound + super::ffi::looping_player::stop_loop(call_id); + + if let Err(e) = play_audio_to_call_direct_internal(call_id, &samples) { + tracing::warn!("Failed to play direct audio to call {}: {}", call_id, e); + } + } + PendingPjsuaOp::StartStreaming { + call_id, + path, + hangup_on_complete, + } => { + tracing::debug!( + "Audio thread: executing StartStreaming for call {} ({})", + call_id, + path.display() + ); + // Stop any active looping player for this call first + super::ffi::looping_player::stop_loop(call_id); + + if let Err(e) = start_streaming_to_call(call_id, &path, hangup_on_complete) { + tracing::warn!("Failed to start streaming for call {}: {}", call_id, e); + } + } + PendingPjsuaOp::StartTestTone { call_id } => { + tracing::debug!("Audio thread: executing StartTestTone for call {}", call_id); + // Stop any active looping player for this call first + super::ffi::looping_player::stop_loop(call_id); + + if let Err(e) = super::ffi::test_tone::start_test_tone_to_call(call_id) { + tracing::warn!("Failed to start test tone for call {}: {}", call_id, e); + } + } + PendingPjsuaOp::Hangup { call_id } => { + tracing::debug!("Audio thread: executing Hangup for call {}", call_id); + // Stop any active looping player for this call first + super::ffi::looping_player::stop_loop(call_id); + // Hangup the call + unsafe { + pjsua::pjsua_call_hangup(*call_id, 200, std::ptr::null(), std::ptr::null()); + } + } + PendingPjsuaOp::StartLoop { call_id, samples } => { + tracing::debug!("Audio thread: executing StartLoop for call {}", call_id); + if let Err(e) = super::ffi::looping_player::start_loop(call_id, samples) { + tracing::error!( + "Failed to start connecting loop for call {}: {}", + call_id, + e + ); + } + } + PendingPjsuaOp::ConnectFaxPort { + call_id, + fax_slot, + call_conf_port, + done_tx, + } => { + tracing::debug!( + "Audio thread: connecting fax port for call {} (fax_slot={}, call_port={})", + call_id, + fax_slot, + call_conf_port + ); + let success = unsafe { + let conf = super::ffi::frame_utils::get_conference_bridge(); + if let Some(conf) = conf { + let s1 = pjmedia_conf_connect_port( + conf, + *call_conf_port as u32, + *fax_slot as u32, + 0, + ); + let s2 = pjmedia_conf_connect_port( + conf, + *fax_slot as u32, + *call_conf_port as u32, + 0, + ); + if s1 != pj_constants__PJ_SUCCESS as i32 { + tracing::error!( + "Failed to connect call {} -> fax slot {}: {}", + call_id, + fax_slot, + s1 + ); + } + if s2 != pj_constants__PJ_SUCCESS as i32 { + tracing::error!( + "Failed to connect fax slot {} -> call {}: {}", + fax_slot, + call_id, + s2 + ); + } + s1 == pj_constants__PJ_SUCCESS as i32 + && s2 == pj_constants__PJ_SUCCESS as i32 + } else { + tracing::error!("Cannot get conference bridge for fax port connection"); + false + } + }; + let _ = done_tx.send(success); + } + } + } + + if count > 0 { + tracing::debug!("Audio thread processed {} pending PJSUA operations", count); + } +} + +/// Queue a channel registration completion for when the audio thread is ready +/// Returns true if queued, false if audio thread is ready (caller should complete immediately) +pub fn queue_pending_channel_completion(call_id: CallId, conf_port: ConfPort) -> bool { + if AUDIO_THREAD_READY.load(Ordering::SeqCst) { + // Audio thread is ready, caller should complete immediately + return false; + } + + // Queue for later processing + PENDING_CHANNEL_COMPLETIONS.push((call_id, conf_port)); + tracing::debug!( + "Queued pending channel completion: call {} -> conf_port {} (audio thread not ready yet)", + call_id, + conf_port + ); + true +} + +/// Process one audio frame (called from audio thread) +/// +/// This function handles per-channel audio isolation using a SINGLE clock tick: +/// 1. Clock the conference ONCE via pjmedia_port_get_frame (runs all codecs, jitter buffers, etc.) +/// 2. During that tick, channel_port_put_frame callbacks receive audio from connected calls +/// 3. Drain the per-channel SIP->Discord buffers and send to Discord +/// +/// This architecture ensures the conference only advances once per 20ms frame, regardless of +/// how many channels are active. Previously, we clocked once PER CHANNEL which caused audio +/// to run at N*speed (stuttering, delays) when N channels were active. +unsafe fn process_audio_frame( + frame_buffer: &mut [u8], + timestamp: &mut u64, + frame_count: &mut u64, + active_channels: &mut Vec, + drain_buf: &mut [i16], + silence: &[i16], +) { + use super::channel_audio::drain_sip_to_discord_audio; + + *frame_count += 1; + + // Increment global frame counter for channel port caching + // This ensures channel_port_get_frame only drains buffers once per tick + AUDIO_FRAME_COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed); + + let port_guard = match CONF_MASTER_PORT.get() { + Some(guard) => guard, + None => { + if (*frame_count).is_multiple_of(500) { + tracing::warn!("Audio thread: No master port configured"); + } + return; + } + }; + + let master_port = port_guard.lock().0; + if master_port.is_null() { + if (*frame_count).is_multiple_of(500) { + tracing::warn!("Audio thread: Master port is null"); + } + return; + } + + // Log every 5 seconds (250 frames at 20ms each) + let should_log = (*frame_count).is_multiple_of(250); + + // Get snapshots of channel mappings (reuses allocation) + get_active_channels_into(active_channels); + + if should_log { + tracing::trace!("Audio thread: {} active channels", active_channels.len()); + } + + // Log when we first start processing active channels + let first_active = FIRST_ACTIVE_CHANNEL_FRAME.load(Ordering::Relaxed); + if first_active == 0 && !active_channels.is_empty() { + FIRST_ACTIVE_CHANNEL_FRAME.store(*frame_count, Ordering::Relaxed); + tracing::info!( + "Audio thread frame #{}: FIRST frame with active channels: {:?}", + *frame_count, + active_channels + ); + } + + // CRITICAL: Clock the conference EXACTLY ONCE per frame + // This runs ALL the internal processing: + // - Jitter buffers for all calls + // - Codec decode/encode for all calls + // - Mixing for all connected ports + // - Calls channel_port_get_frame for Discord->SIP (provides audio TO calls) + // - Calls channel_port_put_frame for SIP->Discord (receives audio FROM calls) + let mut clock_frame = pjmedia_frame { + type_: pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO, + buf: frame_buffer.as_mut_ptr() as *mut _, + size: frame_buffer.len() as pj_size_t, + timestamp: pj_timestamp { u64_: *timestamp }, + bit_info: 0, + }; + pjmedia_port_get_frame(master_port, &mut clock_frame); + + // Now drain the SIP->Discord buffers that were filled by channel_port_put_frame callbacks + // during the conference tick above. + // Lock callbacks ONCE per frame (not per channel) to avoid N Mutex acquisitions. + if !active_channels.is_empty() { + let callbacks_guard = CALLBACKS.get().map(|c| c.lock()); + let on_audio_frame = callbacks_guard + .as_ref() + .and_then(|g| g.as_ref()) + .map(|h| &h.on_audio_frame); + + for &channel_id in active_channels.iter() { + // Drain one frame's worth of audio into pre-allocated buffer + let n = drain_sip_to_discord_audio(channel_id, drain_buf); + + // ALWAYS send something to keep Discord stream alive (even if just silence) + let samples: &[i16] = if n > 0 { &drain_buf[..n] } else { silence }; + + // Log periodically + if should_log { + let max_sample = simd::max_abs_i16(samples); + tracing::trace!( + "SIP->Discord: {} samples from channel {}, max_amp={}", + samples.len(), + channel_id, + max_sample + ); + } + + // Emit audio for THIS channel specifically + if let Some(on_audio_frame) = on_audio_frame { + on_audio_frame(channel_id, samples, CONF_SAMPLE_RATE); + } + } + } + + // Increment timestamp + *timestamp += SAMPLES_PER_FRAME as u64; +} + +// RTP activity tracking + +/// Get the total RTP packets received for a call +/// Returns None if call doesn't exist or stats unavailable +fn get_call_rtp_rx_count(call_id: CallId) -> Option { + unsafe { + let mut stat = MaybeUninit::::uninit(); + let status = pjsua_call_get_stream_stat(*call_id, 0, stat.as_mut_ptr()); + if status != pj_constants__PJ_SUCCESS as i32 { + return None; + } + let stat = stat.assume_init(); + // rtcp.rx.pkt contains total RTP packets received + Some(stat.rtcp.rx.pkt as u64) + } +} + +/// Set the event sender for timeout events +pub fn set_timeout_event_sender(tx: Sender) { + let sender = TIMEOUT_EVENT_TX.get_or_init(|| Mutex::new(None)); + *sender.lock() = Some(tx); +} + +/// Initialize RTP activity tracking for a call +pub fn init_call_rtp_tracking(call_id: CallId) { + let activity_map = + CALL_RTP_ACTIVITY.get_or_init(|| Mutex::new(std::collections::HashMap::new())); + // Start with count 0 - the periodic check will update with actual values + activity_map.lock().insert(call_id, (0, Instant::now())); + tracing::debug!("Initialized RTP tracking for call {}", call_id); +} + +/// Remove RTP activity tracking for a call +pub fn remove_call_rtp_tracking(call_id: CallId) { + if let Some(activity_map) = CALL_RTP_ACTIVITY.get() { + activity_map.lock().remove(&call_id); + tracing::debug!("Removed RTP tracking for call {}", call_id); + } +} + +/// Check all tracked calls for RTP inactivity and emit timeout events +/// +/// This must be called from the PJSUA thread context, not from the audio thread, +/// because it calls pjsua_call_get_stream_stat() which requires PJSUA thread synchronization. +pub fn check_rtp_inactivity() { + let Some(activity_map) = CALL_RTP_ACTIVITY.get() else { + return; + }; + + // Collect all tracked calls first, then release the lock before calling PJSUA + let tracked_calls: Vec<(CallId, u64, Instant)> = { + let map = activity_map.lock(); + map.iter() + .map(|(&call_id, &(rx_count, last_activity))| (call_id, rx_count, last_activity)) + .collect() + }; + + let mut timed_out_calls: Vec<(CallId, u64)> = Vec::new(); + let mut updates = Vec::new(); + + // Now iterate without holding the lock + for (call_id, last_rx_count, last_activity) in tracked_calls { + let current_rx = match get_call_rtp_rx_count(call_id) { + Some(count) => count, + None => { + // Call stats unavailable - likely dead call + // Don't wait for on_call_state_cb which may never fire + tracing::warn!( + "Call {} RTP stats unavailable, treating as timed out", + call_id + ); + timed_out_calls.push((call_id, 0)); + continue; + } + }; + + if current_rx > last_rx_count { + // Activity detected - queue update + updates.push((call_id, current_rx)); + } else { + // No new packets — use a shorter timeout if we never received any audio + let timeout = if current_rx == 0 { + no_audio_timeout_secs() + } else { + rtp_inactivity_timeout_secs() + }; + let elapsed = last_activity.elapsed().as_secs(); + if elapsed > timeout { + tracing::warn!( + "Call {} timed out: no RTP activity for {}s (rx_count={}, timeout={}s)", + call_id, + elapsed, + current_rx, + timeout + ); + timed_out_calls.push((call_id, current_rx)); + } + } + } + + // Apply updates + if !updates.is_empty() { + let mut map = activity_map.lock(); + for (call_id, rx_count) in updates { + map.insert(call_id, (rx_count, Instant::now())); + } + } + + // Emit timeout events for dead calls + if !timed_out_calls.is_empty() { + // Remove timed out calls from tracking + { + let mut map = activity_map.lock(); + for &(call_id, _) in &timed_out_calls { + map.remove(&call_id); + } + } + + if let Some(sender_lock) = TIMEOUT_EVENT_TX.get() { + if let Some(ref tx) = *sender_lock.lock() { + for (call_id, rx_count) in timed_out_calls { + let _ = tx.send(super::SipEvent::CallTimeout { call_id, rx_count }); + } + } + } + } +} + +/// Validate all entries in COUNTED_CALL_IDS are still valid PJSUA calls +/// Removes stale entries and returns the number removed. +/// This should be called periodically from the SIP event loop. +pub fn validate_counted_calls() -> usize { + let Some(counted_ids) = COUNTED_CALL_IDS.get() else { + return 0; + }; + + let call_ids: Vec = counted_ids.lock().iter().copied().collect(); + let mut removed = 0; + + // Get RTP tracking info for cross-reference + let rtp_tracked_calls: std::collections::HashSet = CALL_RTP_ACTIVITY + .get() + .map(|m| m.lock().keys().copied().collect()) + .unwrap_or_default(); + + for call_id in call_ids { + unsafe { + let mut ci = MaybeUninit::::uninit(); + let status = pjsua_call_get_info(*call_id, ci.as_mut_ptr()); + + let should_remove = if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Stale call {} in COUNTED_CALL_IDS: pjsua_call_get_info failed (status={})", + call_id, + status + ); + true + } else { + let ci = ci.assume_init(); + if ci.state == pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED { + tracing::warn!( + "Stale call {} in COUNTED_CALL_IDS: already DISCONNECTED", + call_id + ); + true + } else if !rtp_tracked_calls.contains(&call_id) { + // Call is in COUNTED but NOT being tracked for RTP activity. + // However, REMOTE_HOLD intentionally removes RTP tracking + // (phones send no RTP during hold), so don't treat those as stale. + if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_REMOTE_HOLD { + false + } else { + tracing::warn!( + "Stale call {} in COUNTED_CALL_IDS: not in RTP tracking (state={}, media={})", + call_id, + ci.state, + ci.media_status + ); + true + } + } else { + false + } + }; + + if should_remove { + counted_ids.lock().remove(&call_id); + remove_call_rtp_tracking(call_id); + removed += 1; + } + } + } + + if removed > 0 { + let remaining = counted_ids.lock().len(); + tracing::warn!( + "Removed {} stale calls from COUNTED_CALL_IDS, {} remaining", + removed, + remaining + ); + if remaining == 0 { + stop_audio_thread(); + } + } + + removed +} + +/// Scan all pjsua call slots and force-hangup zombie calls. +/// +/// Unlike `validate_counted_calls()` which only checks COUNTED_CALL_IDS (authenticated calls), +/// this scans the raw pjsua call array for slots that are stuck — e.g. calls rejected early +/// (banned IPs, 401 challenges, spam) where the SIP transaction never completed and the slot +/// was never freed. +/// +/// A call is considered a zombie if: +/// - It's been in a non-CONFIRMED state (NULL, CALLING, INCOMING, EARLY, CONNECTING) for +/// more than 2 minutes (SIP transaction timeout is 32s, so 2min is very generous) +/// - It's in DISCONNECTED state but the slot hasn't been freed (shouldn't happen, but safety net) +pub fn cleanup_zombie_pjsua_calls() -> usize { + let max_calls: u32 = 128; // Must match cfg_ptr.max_calls in init.rs + let mut cleaned = 0; + + unsafe { + for i in 0..max_calls { + let call_id = i as pjsua_call_id; + let mut ci = MaybeUninit::::uninit(); + let status = pjsua_call_get_info(call_id, ci.as_mut_ptr()); + + if status != pj_constants__PJ_SUCCESS as i32 { + // Slot is free (no inv), this is fine + continue; + } + + let ci = ci.assume_init(); + + // Skip calls that are actively connected (CONFIRMED state) — those are real calls + if ci.state == pjsip_inv_state_PJSIP_INV_STATE_CONFIRMED { + continue; + } + + // For non-CONFIRMED calls, check how long they've been alive. + // total_duration is time since call->start_time for non-CONFIRMED/DISCONNECTED calls. + let age = ci.total_duration.sec as u64; + + // 2 minutes is very generous — SIP transaction timeout (Timer B) is 32 seconds, + // and even slow auth flows should complete within 30 seconds + if age > 120 { + let state_name = super::ffi::init::InvState::from(ci.state); + + tracing::warn!( + "Zombie pjsua call slot {}: state={}, age={}s — force hanging up", + call_id, + state_name, + age + ); + + pjsua_call_hangup(call_id, 500, std::ptr::null(), std::ptr::null()); + cleaned += 1; + } + } + } + + if cleaned > 0 { + tracing::warn!("Force-cleaned {} zombie pjsua call slots", cleaned); + } + + cleaned +} diff --git a/sipcord-bridge/src/transport/sip/callbacks.rs b/sipcord-bridge/src/transport/sip/callbacks.rs new file mode 100644 index 0000000..720061f --- /dev/null +++ b/sipcord-bridge/src/transport/sip/callbacks.rs @@ -0,0 +1,1509 @@ +//! PJSUA C callbacks for incoming calls, call state, media state, and DTMF +//! +//! This module handles the C callbacks that PJSUA invokes for SIP events. + +use super::audio_thread::{ + init_call_rtp_tracking, queue_pending_channel_completion, remove_call_rtp_tracking, + start_audio_thread, stop_audio_thread, +}; +use std::fmt; + +/// Media direction (Rust wrapper for pjmedia_dir) +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum MediaDir { + None, + Encoding, + Decoding, + EncodingDecoding, + Unknown(u32), +} + +impl From for MediaDir { + fn from(dir: u32) -> Self { + match dir { + x if x == pjmedia_dir_PJMEDIA_DIR_NONE => MediaDir::None, + x if x == pjmedia_dir_PJMEDIA_DIR_ENCODING => MediaDir::Encoding, + x if x == pjmedia_dir_PJMEDIA_DIR_DECODING => MediaDir::Decoding, + x if x == pjmedia_dir_PJMEDIA_DIR_ENCODING_DECODING => MediaDir::EncodingDecoding, + x => MediaDir::Unknown(x), + } + } +} + +impl fmt::Display for MediaDir { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + MediaDir::None => write!(f, "NONE"), + MediaDir::Encoding => write!(f, "ENCODING"), + MediaDir::Decoding => write!(f, "DECODING"), + MediaDir::EncodingDecoding => write!(f, "ENCODING_DECODING"), + MediaDir::Unknown(x) => write!(f, "UNKNOWN({})", x), + } + } +} +use super::channel_audio::{ + complete_pending_channel_registration, disconnect_call_for_hold, get_channel_slot, +}; +use super::ffi::types::*; +use super::ffi::utils::{extract_sip_username, pj_str_to_string}; +use dashmap::DashMap; +use parking_lot::Mutex; +use pjsua::*; +use std::ffi::CString; +use std::mem::MaybeUninit; +use std::net::IpAddr; +use std::os::raw::{c_char, c_int}; +use std::ptr; + +/// Global sender for outbound call events (set during initialization) +static OUTBOUND_EVENT_TX: std::sync::OnceLock> = + std::sync::OnceLock::new(); + +/// Pre-bound UDPTL sockets from synchronous T.38 re-INVITE handling. +/// Keyed by raw pjsua_call_id (i32). The async handler takes the socket +/// from this map to create the tokio UdptlSocket. +pub static T38_PRESOCKETS: std::sync::LazyLock> = + std::sync::LazyLock::new(DashMap::new); + +/// Set the outbound event sender (called from main.rs) +pub fn set_outbound_event_sender(tx: tokio::sync::mpsc::Sender) { + let _ = OUTBOUND_EVENT_TX.set(tx); +} + +/// Extract source IP address from pjsip_rx_data +pub unsafe fn extract_source_ip(rdata: *const pjsip_rx_data) -> Option { + if rdata.is_null() { + return None; + } + + // pjsip stores source info in pkt_info.src_name as a C string (null-terminated char array) + let src_name = &(*rdata).pkt_info.src_name; + + // Find the null terminator + let len = src_name + .iter() + .position(|&c| c == 0) + .unwrap_or(src_name.len()); + + // Convert to Rust string + let ip_str = std::str::from_utf8(std::slice::from_raw_parts( + src_name.as_ptr() as *const u8, + len, + )) + .ok()?; + + // pjsip's src_name contains only the IP address (port is in src_port), + // so parse directly as IpAddr. This handles both IPv4 and IPv6. + ip_str.parse().ok() +} + +/// Extract User-Agent header from pjsip_rx_data +pub unsafe fn extract_user_agent(rdata: *const pjsip_rx_data) -> Option { + if rdata.is_null() { + return None; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return None; + } + + // Find User-Agent header by name + let hdr_name = CString::new("User-Agent").ok()?; + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + + let hdr = pjsip_msg_find_hdr_by_name(msg, &name, ptr::null_mut()); + if hdr.is_null() { + return None; + } + + // Cast to generic string header + let str_hdr = hdr as *const pjsip_generic_string_hdr; + if str_hdr.is_null() { + return None; + } + + // Extract the header value + let value = pj_str_to_string(&(*str_hdr).hvalue); + if value.is_empty() { + None + } else { + Some(value) + } +} + +/// Check if User-Agent indicates a SIPVicious scanner or similar tool +pub fn is_sipvicious_scanner(user_agent: &str) -> bool { + let ua_lower = user_agent.to_lowercase(); + ua_lower.contains("friendly-scanner") + || ua_lower.contains("sipvicious") + || ua_lower.contains("scanner") +} + +/// Extract SIP Digest auth parameters from Authorization header +pub unsafe fn extract_digest_auth_from_rdata( + rdata: *mut pjsip_rx_data, +) -> Option { + if rdata.is_null() { + return None; + } + + let rdata = &*rdata; + let msg = rdata.msg_info.msg; + if msg.is_null() { + return None; + } + + // Find Authorization header by type (pjsip parses it into a structured format) + let hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_AUTHORIZATION, ptr::null_mut()); + + if hdr.is_null() { + tracing::debug!("No Authorization header found"); + return None; + } + + // Cast to authorization header type + let auth_hdr = hdr as *const pjsip_authorization_hdr; + if auth_hdr.is_null() { + return None; + } + + // Check the scheme is Digest + let scheme = pj_str_to_string(&(*auth_hdr).scheme); + tracing::debug!("Authorization scheme: {}", scheme); + + if scheme.to_lowercase() != "digest" { + tracing::debug!( + "Authorization header is not Digest auth (scheme: {})", + scheme + ); + return None; + } + + // Extract digest credentials from the parsed structure + let digest = &(*auth_hdr).credential.digest; + + let params = DigestAuthParams { + username: pj_str_to_string(&digest.username), + realm: pj_str_to_string(&digest.realm), + nonce: pj_str_to_string(&digest.nonce), + uri: pj_str_to_string(&digest.uri), + response: pj_str_to_string(&digest.response), + method: String::new(), // Will be set by caller + qop: { + let qop = pj_str_to_string(&digest.qop); + if qop.is_empty() { + None + } else { + Some(qop) + } + }, + nc: { + let nc = pj_str_to_string(&digest.nc); + if nc.is_empty() { + None + } else { + Some(nc) + } + }, + cnonce: { + let cnonce = pj_str_to_string(&digest.cnonce); + if cnonce.is_empty() { + None + } else { + Some(cnonce) + } + }, + }; + + tracing::debug!( + "Extracted Digest auth: user={}, realm={}, nonce={}, uri={}, response={}", + params.username, + params.realm, + params.nonce, + params.uri, + params.response + ); + + // Validate we have the required fields + if params.username.is_empty() + || params.realm.is_empty() + || params.nonce.is_empty() + || params.uri.is_empty() + || params.response.is_empty() + { + tracing::warn!("Digest auth missing required fields: {:?}", params); + return None; + } + + Some(params) +} + +/// Send 401 Unauthorized response with WWW-Authenticate header +pub unsafe fn send_401_challenge(call_id: CallId, www_auth: &str) { + // Create the WWW-Authenticate header + let hdr_name = CString::new("WWW-Authenticate").unwrap(); + let hdr_value = CString::new(www_auth).unwrap(); + + // Create msg_data with the WWW-Authenticate header + let mut msg_data = MaybeUninit::::uninit(); + pjsua_msg_data_init(msg_data.as_mut_ptr()); + let msg_data_ptr = msg_data.assume_init_mut(); + + // Create a pool for the header + let pool = pjsua_pool_create(c"auth".as_ptr(), 512, 512); + if pool.is_null() { + tracing::error!("Failed to create pool for 401 challenge"); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // Create the header + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + let value = pj_str(hdr_value.as_ptr() as *mut c_char); + + let hdr = pjsip_generic_string_hdr_create(pool, &name, &value); + + if !hdr.is_null() { + // Add header to the list using pj_list_insert_before (insert at end of list) + pj_list_insert_before( + &mut msg_data_ptr.hdr_list as *mut _ as *mut pj_list_type, + hdr as *mut pj_list_type, + ); + } + + // Send 401 response - this will cause pjsua to send the response and then + // the client should retry with Authorization header + let reason = CString::new("Unauthorized").unwrap(); + let reason_pj = pj_str(reason.as_ptr() as *mut c_char); + + let status = pjsua_call_answer(*call_id, 401, &reason_pj, msg_data_ptr); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to send 401 challenge for call {}: {}", + call_id, + status + ); + // Hangup if we can't send challenge + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + } + + // DO NOT release the pool here - PJSUA may still need the header data + // after pjsua_call_answer returns. The pool will be cleaned up when + // pjsua is destroyed. This leaks ~512 bytes per 401 challenge but + // prevents use-after-free crashes. + // TODO: Track pools per-call and release them in on_call_state when call ends +} + +/// Send 302 Moved Temporarily response with Contact header pointing to another bridge +/// Used for multi-region channel conflict resolution - redirects caller to the active region +pub unsafe fn send_302_redirect(call_id: CallId, target_domain: &str, extension: &str) { + // CRITICAL: Check if call is still valid and in a state that can receive responses + // Race condition: caller may hang up during async API auth, causing the call to be + // DISCONNECTED before we get here. Calling pjsua_call_answer on a disconnected call + // can corrupt PJSUA internal state and deadlock the SIP worker thread. + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Call {} no longer valid, skipping 302 redirect", call_id); + return; + } + let ci = ci.assume_init(); + + // Only send redirect if call is in INCOMING or EARLY state + // (i.e., we haven't sent a final response yet and call hasn't been disconnected) + if ci.state == pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED { + tracing::warn!( + "Call {} already disconnected, skipping 302 redirect to {}", + call_id, + target_domain + ); + return; + } + if ci.state != pjsip_inv_state_PJSIP_INV_STATE_INCOMING + && ci.state != pjsip_inv_state_PJSIP_INV_STATE_EARLY + { + tracing::warn!( + "Call {} in unexpected state {} for 302 redirect, skipping", + call_id, + ci.state + ); + return; + } + + // Create the Contact header: sip:extension@target_domain + let contact_uri = format!("sip:{}@{}", extension, target_domain); + let hdr_name = CString::new("Contact").unwrap(); + let hdr_value = CString::new(contact_uri).unwrap(); + + // Create msg_data with the Contact header + let mut msg_data = MaybeUninit::::uninit(); + pjsua_msg_data_init(msg_data.as_mut_ptr()); + let msg_data_ptr = msg_data.assume_init_mut(); + + // Create a pool for the header + let pool = pjsua_pool_create(c"redirect".as_ptr(), 512, 512); + if pool.is_null() { + tracing::error!("Failed to create pool for 302 redirect"); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // Create the header + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + let value = pj_str(hdr_value.as_ptr() as *mut c_char); + + let hdr = pjsip_generic_string_hdr_create(pool, &name, &value); + + if !hdr.is_null() { + // Add header to the list using pj_list_insert_before (insert at end of list) + pj_list_insert_before( + &mut msg_data_ptr.hdr_list as *mut _ as *mut pj_list_type, + hdr as *mut pj_list_type, + ); + } + + // Send 302 response + let reason = CString::new("Moved Temporarily").unwrap(); + let reason_pj = pj_str(reason.as_ptr() as *mut c_char); + + let status = pjsua_call_answer(*call_id, 302, &reason_pj, msg_data_ptr); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to send 302 redirect for call {}: {}", + call_id, + status + ); + // Hangup if we can't send redirect + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + } else { + tracing::info!( + "Sent 302 redirect for call {} to {}", + call_id, + target_domain + ); + } + + // DO NOT release the pool here - PJSUA may still need the header data + // after pjsua_call_answer returns. Same issue as send_401_challenge. +} + +// PJSUA C callbacks + +pub unsafe extern "C" fn on_incoming_call_cb( + _acc_id: pjsua_acc_id, + raw_call_id: pjsua_call_id, + rdata: *mut pjsip_rx_data, +) { + let call_id = CallId::new(raw_call_id); + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) != pj_constants__PJ_SUCCESS as i32 { + return; + } + let ci = ci.assume_init(); + + // Extract From and To URIs + let from_uri = pj_str_to_string(&ci.remote_info); + let to_uri = pj_str_to_string(&ci.local_info); + + // Extract username from From URI (caller's SIP username) + let sip_username = extract_sip_username(&from_uri); + + // Extract extension from To URI (the number they dialed) + let extension = extract_sip_username(&to_uri); + + // Extract source IP for ban checking + let source_ip = extract_source_ip(rdata); + + // Check if IP is banned or timed out - silently drop + if let Some(ip) = source_ip { + if let Some(ban_mgr) = crate::services::ban::global() { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + let result = ban_mgr.check_banned(&ip); + if result.is_banned { + if result.should_log { + let ban_type = if result.is_permanent { + "permanently banned" + } else { + "timed out" + }; + tracing::debug!( + "Blocked {} IP: {} (call {}, offense_level={})", + ban_type, + ip, + call_id, + result.offense_level + ); + } + pjsua_call_hangup(*call_id, 403, ptr::null(), ptr::null()); + return; + } + } + } + } + + // Check User-Agent for SIPVicious scanners - instant permaban + if let Some(user_agent) = extract_user_agent(rdata) { + if is_sipvicious_scanner(&user_agent) { + if let Some(ip) = source_ip { + if let Some(ban_mgr) = crate::services::ban::global() { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + let result = ban_mgr.record_permanent_ban(ip, "sipvicious_scanner"); + if result.should_log { + tracing::warn!( + "PERMABAN IP {} - SIPVicious scanner detected: User-Agent='{}' (call {})", + ip, user_agent, call_id + ); + } + } + } + } else { + tracing::warn!( + "SIPVicious scanner detected but no IP available: User-Agent='{}' (call {})", + user_agent, + call_id + ); + } + pjsua_call_hangup(*call_id, 403, ptr::null(), ptr::null()); + return; + } + } + + // Extension-length ban checks use config values + if let Some(ban_mgr) = crate::services::ban::global() { + let ext_len = extension.len(); + let is_numeric = extension.chars().all(|c: char| c.is_ascii_digit()); + + // Check for very long extension (permaban, likely fraud) + if ext_len >= ban_mgr.permaban_extension_min_length() && is_numeric { + if let Some(ip) = source_ip { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + let result = ban_mgr.record_permanent_ban(ip, "very_long_extension"); + if result.should_log { + tracing::warn!( + "PERMABAN IP {} for very long extension: {} ({} digits, call {})", + ip, + extension, + ext_len, + call_id + ); + } + } + } else { + tracing::warn!( + "Rejecting very long extension: {} ({} digits, call {})", + extension, + ext_len, + call_id + ); + } + pjsua_call_hangup(*call_id, 404, ptr::null(), ptr::null()); + return; + } + + // Check for mid-length suspicious extension (progressive timeout) + if ext_len >= ban_mgr.suspicious_extension_min_length() + && ext_len <= ban_mgr.suspicious_extension_max_length() + && is_numeric + { + if let Some(ip) = source_ip { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + let result = ban_mgr.record_offense(ip, "suspicious_extension"); + if result.should_log { + tracing::warn!( + "Timed out IP {} for suspicious extension: {} (call {}, offense_level={}, timeout={}s)", + ip, extension, call_id, result.offense_level, result.timeout_secs + ); + } + } + } else { + tracing::warn!( + "Rejecting suspicious extension: {} ({} digits, call {})", + extension, + ext_len, + call_id + ); + } + pjsua_call_hangup(*call_id, 404, ptr::null(), ptr::null()); + return; + } + } + + // Try to extract Digest auth params from Authorization header + let digest_params = extract_digest_auth_from_rdata(rdata); + + tracing::info!( + "Incoming call {} from {} to extension {} (auth: {})", + call_id, + sip_username, + extension, + if digest_params.is_some() { + "present" + } else { + "none" + } + ); + + // Check if we have Authorization header with Digest auth + if let Some(mut params) = digest_params { + // We have Digest auth, fill in remaining fields + params.method = "INVITE".to_string(); + + tracing::info!( + "Digest auth: user={}, realm={}, nonce={}, response={}", + params.username, + params.realm, + params.nonce, + params.response + ); + + // NOTE: We no longer answer with 200 OK here. + // The bridge coordinator will: + // 1. Send 183 Session Progress (early media) to start playing connecting sound + // 2. Connect to Discord + // 3. Send 200 OK once Discord is ready + // + // This allows the caller to hear "connecting..." while waiting for Discord. + + // Trigger callbacks with Digest auth params + // The bridge coordinator handles the call flow from here + if let Some(callbacks) = CALLBACKS.get() { + if let Some(ref handlers) = *callbacks.lock() { + (handlers.on_incoming_call)(call_id, sip_username, extension.clone(), source_ip); + (handlers.on_call_authenticated)(call_id, params, extension, source_ip); + } + } + } else { + // No Authorization header - send 401 challenge + tracing::info!("No auth header, sending 401 challenge for call {}", call_id); + + // Generate a cryptographically random nonce + let nonce = { + let bytes: [u8; 16] = rand::random(); + bytes + .iter() + .map(|b| format!("{:02x}", b)) + .collect::() + }; + + // Create WWW-Authenticate header value + // Format: Digest realm="sipcord", nonce="xxx", algorithm=MD5, qop="auth" + let www_auth = format!( + "Digest realm=\"{}\", nonce=\"{}\", algorithm=MD5, qop=\"auth\"", + SIP_REALM, nonce + ); + + // Send 401 Unauthorized with WWW-Authenticate header + send_401_challenge(call_id, &www_auth); + } +} + +pub unsafe extern "C" fn on_dtmf_digit_cb(raw_call_id: pjsua_call_id, digit: c_int) { + let call_id = CallId::new(raw_call_id); + let digit_char = char::from_u32(digit as u32).unwrap_or('?'); + + // Forward DTMF to callback handler (buffering done in mod.rs) + if let Some(callbacks) = CALLBACKS.get() { + if let Some(ref handlers) = *callbacks.lock() { + (handlers.on_dtmf)(call_id, digit_char); + } + } +} + +pub unsafe extern "C" fn on_call_state_cb(raw_call_id: pjsua_call_id, _e: *mut pjsip_event) { + let call_id = CallId::new(raw_call_id); + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) != pj_constants__PJ_SUCCESS as i32 { + return; + } + let ci = ci.assume_init(); + + // Check for outbound call state changes + if let Some(tracking_id) = super::get_outbound_tracking_id(call_id) { + // This is an outbound call (Discord -> SIP) + if ci.state == pjsip_inv_state_PJSIP_INV_STATE_EARLY { + // Ringing (180 Ringing or 183 Session Progress) + // Ringing is tracked via ws_client::report_call_status from the bridge coordinator + tracing::info!( + "Outbound call {} ringing (tracking_id={})", + call_id, + tracking_id + ); + } else if ci.state == pjsip_inv_state_PJSIP_INV_STATE_CONFIRMED { + tracing::info!( + "Outbound call {} answered (tracking_id={})", + call_id, + tracking_id + ); + // Emit answered event - the SIP event handler in bridge/mod.rs picks this up + if let Some(event_tx) = OUTBOUND_EVENT_TX.get() { + let _ = event_tx.try_send(super::SipEvent::OutboundCallAnswered { + tracking_id: tracking_id.clone(), + call_id, + }); + } + } else if ci.state == pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED { + let tracking_id = super::remove_outbound_tracking(call_id); + if let Some(tid) = tracking_id { + let last_status = ci.last_status; + let last_status_text = pj_str_to_string(&ci.last_status_text); + tracing::info!( + "Outbound call {} disconnected (tracking_id={}, status={} {})", + call_id, + tid, + last_status, + last_status_text + ); + if let Some(event_tx) = OUTBOUND_EVENT_TX.get() { + let _ = event_tx.try_send(super::SipEvent::OutboundCallFailed { + tracking_id: tid, + call_id: Some(call_id), + reason: format!("{} {}", last_status, last_status_text), + }); + } + } + // Fall through to normal disconnect handling below — + // outbound calls ARE tracked in sip_calls/bridges and need + // proper cleanup (on_call_ended → CallEnded event). + } + // For non-disconnect states, return early - outbound calls don't use the normal flow + if ci.state != pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED { + return; + } + } + + // Check if call ended + if ci.state == pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED { + // Clean up audio buffer + if let Some(buffers) = AUDIO_OUT_BUFFERS.get() { + buffers.remove(&call_id); + } + + // Clean up RTP activity tracking + remove_call_rtp_tracking(call_id); + + let counted_ids = + COUNTED_CALL_IDS.get_or_init(|| Mutex::new(std::collections::HashSet::new())); + let (was_counted, new_count) = { + let mut ids = counted_ids.lock(); + let was_counted = ids.remove(&call_id); + (was_counted, ids.len()) + }; + + // An authenticated call needs cleanup if it was in COUNTED_CALL_IDS (normal + // case, or REMOTE_HOLD which now stays counted) OR if it has a CALL_CHANNELS + // entry (which persists through LOCAL_HOLD). Without this, calls that + // disconnect during LOCAL_HOLD would skip cleanup, leaving the bridge and + // Discord connection alive forever. + let was_authenticated = was_counted + || CALL_CHANNELS + .get() + .map(|c| c.contains_key(&call_id)) + .unwrap_or(false); + + if was_authenticated { + tracing::info!("Call {} ended (active_media_calls={})", call_id, new_count); + + if let Some(callbacks) = CALLBACKS.get() { + if let Some(ref handlers) = *callbacks.lock() { + (handlers.on_call_ended)(call_id); + } + } + + if new_count == 0 { + tracing::debug!("Last call ended, stopping audio thread"); + stop_audio_thread(); + } + } + // Spam/unauthenticated calls - no logging, no callbacks + } +} + +pub unsafe extern "C" fn on_call_media_state_cb(raw_call_id: pjsua_call_id) { + let call_id = CallId::new(raw_call_id); + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) != pj_constants__PJ_SUCCESS as i32 { + return; + } + let ci = ci.assume_init(); + + // Log media state changes (debug level for general changes, specific states logged at info) + let media_status_str = if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_NONE { + "NONE" + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_ACTIVE { + "ACTIVE" + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_LOCAL_HOLD { + "LOCAL_HOLD" + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_REMOTE_HOLD { + "REMOTE_HOLD" + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_ERROR { + "ERROR" + } else { + "UNKNOWN" + }; + + tracing::info!( + "Call {} media state changed to: {} (status={})", + call_id, + media_status_str, + ci.media_status + ); + + // Check if media is active + if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_ACTIVE { + // Get the conference port for this call + let conf_port = ConfPort::new(pjsua_call_get_conf_port(*call_id)); + + // Log media direction for diagnostics + let media_dir = if ci.media_cnt > 0 { ci.media[0].dir } else { 0 }; + let dir = MediaDir::from(media_dir); + + // Check if call is already registered with a channel + let pending_channel = CALL_CHANNELS + .get() + .and_then(|c| c.get(&call_id).map(|r| *r)); + + // Get codec info including ptime + let mut stream_info = MaybeUninit::::uninit(); + let codec_info = if pjsua_call_get_stream_info(*call_id, 0, stream_info.as_mut_ptr()) + == pj_constants__PJ_SUCCESS as i32 + { + let si = stream_info.assume_init(); + // si.info is a union, for audio it's pjmedia_stream_info + let audio_info = si.info.aud; + let codec_name = std::ffi::CStr::from_ptr( + audio_info.fmt.encoding_name.ptr as *const std::ffi::c_char, + ) + .to_string_lossy(); + let clock_rate = audio_info.fmt.clock_rate; + let channel_cnt = audio_info.fmt.channel_cnt; + // Get ptime from the param field (need to dereference pointer) + let param = &*audio_info.param; + let ptime = param.setting.frm_per_pkt as u32 * param.info.frm_ptime as u32; + format!( + "{} @ {}Hz {}ch, ptime={}ms, frm_per_pkt={}, frm_ptime={}", + codec_name, + clock_rate, + channel_cnt, + ptime, + param.setting.frm_per_pkt, + param.info.frm_ptime + ) + } else { + "unknown".to_string() + }; + + tracing::info!( + "Call {} MEDIA ACTIVE: conf_port={}, media_dir={}, media_cnt={}, call_state={}, pending_channel={:?}, codec={}", + call_id, conf_port, dir, ci.media_cnt, ci.state, pending_channel, codec_info + ); + + if conf_port.is_valid() { + tracing::info!( + "Call {} media active, storing conference port {} (NOT connecting to master yet)", + call_id, + conf_port + ); + + // Store the conf_port for this call - connections will be made when + // the channel is assigned via register_call_channel() + // This enables per-channel audio isolation: calls in different channels + // won't hear each other. + // + // If this call is already registered with a channel and the + // conf_port changed (due to re-INVITE/media renegotiation), we must + // reconnect it to maintain audio flow. + let old_conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + let old = ports.get(&call_id).map(|r| *r); + ports.insert(call_id, conf_port); + old + }; + + // If conf_port changed and call is registered with a channel, reconnect it + if let Some(old_port) = old_conf_port { + if old_port != conf_port { + tracing::info!( + "Call {} conf_port changed from {} to {} (media renegotiation), reconnecting", + call_id, old_port, conf_port + ); + + // Get the channel this call is registered with + let channel_id = { + if let Some(channels) = CALL_CHANNELS.get() { + channels.get(&call_id).map(|r| *r) + } else { + None + } + }; + + if let Some(channel_id) = channel_id { + // Reconnect to channel port (bidirectional) + if let Some(channel_slot) = get_channel_slot(channel_id) { + // Disconnect old (both directions) + pjsua_conf_disconnect(*channel_slot, *old_port); + pjsua_conf_disconnect(*old_port, *channel_slot); + // Connect new (both directions) + pjsua_conf_connect(*channel_slot, *conf_port); + pjsua_conf_connect(*conf_port, *channel_slot); + tracing::info!( + "Reconnected channel {} port (slot {}) <-> call {} (new port {})", + channel_id, + channel_slot, + call_id, + conf_port + ); + } + + // Reconnect to other calls in the same channel + let other_calls: Vec<(CallId, ConfPort)> = { + let channel_calls = CHANNEL_CALLS.get(); + let call_ports = CALL_CONF_PORTS.get(); + if let (Some(cc), Some(cp)) = (channel_calls, call_ports) { + let cc_guard = cc.read(); + if let Some(calls) = cc_guard.get(&channel_id) { + calls + .iter() + .filter(|&&other_id| other_id != call_id) + .filter_map(|&other_id| { + cp.get(&other_id).map(|r| (other_id, *r)) + }) + .collect() + } else { + vec![] + } + } else { + vec![] + } + }; + + for (other_id, other_port) in other_calls { + // Disconnect old bidirectional connections + pjsua_conf_disconnect(*old_port, *other_port); + pjsua_conf_disconnect(*other_port, *old_port); + + // Connect new bidirectional connections + pjsua_conf_connect(*conf_port, *other_port); + pjsua_conf_connect(*other_port, *conf_port); + + tracing::info!( + "Reconnected call {} (new port {}) <-> call {} (port {}) in channel {}", + call_id, conf_port, other_id, other_port, channel_id + ); + } + } + } + } + + tracing::info!( + "Call {} conf_port {} stored, awaiting channel registration", + call_id, + conf_port + ); + + // Initialize RTP activity tracking for this call + init_call_rtp_tracking(call_id); + + // Track this call_id and start audio thread if this is the first active call + // IMPORTANT: Start audio thread BEFORE completing pending channel registration! + // The PJMEDIA conference bridge needs to be actively clocked when connections + // are made, otherwise the connections may not work properly. + let counted_ids = + COUNTED_CALL_IDS.get_or_init(|| Mutex::new(std::collections::HashSet::new())); + let (is_new, count) = { + let mut ids = counted_ids.lock(); + let is_new = ids.insert(call_id); + (is_new, ids.len()) + }; + + // Only count this call if we haven't already (prevents double-counting on re-INVITE) + if is_new { + tracing::info!( + "Call {} media ACTIVE, active_media_calls={}", + call_id, + count + ); + + if count == 1 { + tracing::info!("First active call, starting audio thread"); + start_audio_thread(); + } + } else { + tracing::warn!( + "Call {} media ACTIVE but already counted! Skipping.", + call_id + ); + } + + // If returning from hold (is_new=true but call already in CHANNEL_CALLS), + // remove from CHANNEL_CALLS so complete_pending_channel_registration does + // a full fresh bidirectional reconnection. PJSUA may have changed the + // underlying media stream during the hold/unhold re-INVITE cycle. + // For first-time active calls, the call won't be in CHANNEL_CALLS yet, + // so this is a no-op. + if is_new { + if let Some(channel_id) = CALL_CHANNELS + .get() + .and_then(|c| c.get(&call_id).map(|r| *r)) + { + let channel_calls = CHANNEL_CALLS + .get_or_init(|| parking_lot::RwLock::new(std::collections::HashMap::new())); + let mut map = channel_calls.write(); + if let Some(calls) = map.get_mut(&channel_id) { + if calls.remove(&call_id) { + if calls.is_empty() { + map.remove(&channel_id); + } + tracing::info!( + "Call {} returning from hold - removed from CHANNEL_CALLS for fresh reconnection", + call_id + ); + } + } + } + } + + // If the call was already registered with a channel (Discord connected before + // media was ready), complete the registration now. This must happen AFTER + // the audio thread has actually started processing (not just spawned). + // queue_pending_channel_completion returns true if queued (thread not ready), + // false if we should complete immediately (thread is ready). + if !queue_pending_channel_completion(call_id, conf_port) { + tracing::info!( + "Audio thread already ready, completing channel registration immediately for call {}", + call_id + ); + complete_pending_channel_registration(call_id, conf_port); + } + } else { + tracing::warn!("Call {} has invalid conference port", call_id); + } + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_NONE { + // Media went to NONE - this could happen during call setup/teardown + let active_calls = COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().len()) + .unwrap_or(0); + tracing::warn!( + "Call {} media went to NONE, active_media_calls={}", + call_id, + active_calls + ); + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_ERROR { + // Media error - this is bad! + let active_calls = COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().len()) + .unwrap_or(0); + tracing::error!( + "Call {} media ERROR! active_media_calls={}", + call_id, + active_calls + ); + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_LOCAL_HOLD { + tracing::info!("Call {} put on LOCAL_HOLD - disconnecting audio", call_id); + + // Disconnect the call from its channel without full teardown. + // CALL_CHANNELS and CALL_CONF_PORTS are preserved so the existing + // ACTIVE code path can reconnect when the call comes off hold. + disconnect_call_for_hold(call_id); + + // Remove from COUNTED_CALL_IDS and stop audio thread if no other active calls + let counted_ids = + COUNTED_CALL_IDS.get_or_init(|| Mutex::new(std::collections::HashSet::new())); + let (was_counted, new_count) = { + let mut ids = counted_ids.lock(); + let was_counted = ids.remove(&call_id); + (was_counted, ids.len()) + }; + + if was_counted { + tracing::info!( + "Call {} removed from active calls on hold (active_media_calls={})", + call_id, + new_count + ); + if new_count == 0 { + tracing::debug!("No active calls remaining after hold, stopping audio thread"); + stop_audio_thread(); + } + } + } else if ci.media_status == pjsua_call_media_status_PJSUA_CALL_MEDIA_REMOTE_HOLD { + // Remote end put us on hold (e.g., Cisco hold button). + // Keep conference connections AND audio thread running — many phones resume + // RTP without sending a re-INVITE, so we never get an ACTIVE callback. + // By keeping everything connected, audio naturally resumes when RTP flows again. + // + // Do NOT send re-INVITE or UPDATE — some phones (Cisco 7960G) reject UPDATE + // with 405 and disconnect the call, and re-INVITE fails with 70013 because + // the hold transaction is still active. + // + // Pause RTP inactivity tracking — phones send no RTP during hold. + remove_call_rtp_tracking(call_id); + + tracing::info!( + "Call {} put on REMOTE_HOLD - keeping audio connected (RTP tracking paused)", + call_id + ); + } +} + +/// T.38 offer parameters extracted from SDP +#[derive(Debug)] +pub struct T38OfferParams { + pub remote_ip: String, + pub remote_port: u16, + pub t38_version: u8, + pub max_bit_rate: u32, + pub rate_management: String, + pub udp_ec: String, +} + +/// Check if an SDP offer contains a T.38 media line (`m=image ... udptl t38`). +unsafe fn sdp_has_t38(offer: *const pjmedia_sdp_session) -> Option { + if offer.is_null() { + return None; + } + + for i in 0..(*offer).media_count { + let m = (*offer).media[i as usize]; + if m.is_null() { + continue; + } + + // Check media type == "image" + let media_type = pj_str_to_string(&(*m).desc.media); + if media_type != "image" { + continue; + } + + // Check transport contains "udptl" + let transport = pj_str_to_string(&(*m).desc.transport); + if !transport.to_lowercase().contains("udptl") { + continue; + } + + // This is a T.38 media line + let remote_port = (*m).desc.port; + if remote_port == 0 { + continue; // Disabled media line + } + + // Extract IP from connection line (media-level c= or session-level c=) + let conn = if !(*m).conn.is_null() { + (*m).conn + } else if !(*offer).conn.is_null() { + (*offer).conn + } else { + tracing::warn!("T.38 SDP offer has no connection line"); + continue; + }; + let remote_ip = pj_str_to_string(&(*conn).addr); + + // Extract T.38 attributes with defaults + let mut t38_version: u8 = 0; + let mut max_bit_rate: u32 = 14400; + let mut rate_management = "transferredTCF".to_string(); + let mut udp_ec = "t38UDPRedundancy".to_string(); + + for j in 0..(*m).attr_count { + let attr = (*m).attr[j as usize]; + if attr.is_null() { + continue; + } + let name = pj_str_to_string(&(*attr).name); + let value = pj_str_to_string(&(*attr).value); + + match name.as_str() { + "T38FaxVersion" => { + t38_version = value.parse().unwrap_or(0); + } + "T38MaxBitRate" => { + max_bit_rate = value.parse().unwrap_or(14400); + } + "T38FaxRateManagement" => { + rate_management = value; + } + "T38FaxUdpEC" => { + udp_ec = value; + } + _ => {} + } + } + + return Some(T38OfferParams { + remote_ip, + remote_port, + t38_version, + max_bit_rate, + rate_management, + udp_ec, + }); + } + + None +} + +/// Callback for incoming re-INVITE with SDP offer. +/// +/// When a phone sends a hold re-INVITE (with `a=sendonly`), pjsua would normally +/// respond with `a=recvonly` and enter REMOTE_HOLD, stopping RTP. Since we're a +/// bridge (not a PBX), we don't want hold semantics — we want audio to keep flowing. +/// +/// Also detects T.38 re-INVITEs (`m=image udptl t38`) and emits a T38Offered event +/// to the bridge coordinator, which handles the mode switch. +/// +/// Two-pronged fix for hold: +/// 1. Set PJSUA_CALL_SET_MEDIA_DIR flag to force def_dir to ENCODING_DECODING +/// 2. Strip hold direction attributes (sendonly/recvonly/inactive) from the SDP +/// negotiator's cloned remote offer. Without this, the negotiator rewrites our +/// answer to recvonly per RFC 3264, regardless of the flag. +pub unsafe extern "C" fn on_call_rx_reinvite_cb( + raw_call_id: pjsua_call_id, + offer: *const pjmedia_sdp_session, + rdata: *mut pjsip_rx_data, + _reserved: *mut std::os::raw::c_void, + _async: *mut pj_bool_t, + code: *mut pjsip_status_code, + opt: *mut pjsua_call_setting, +) { + let call_id = CallId::new(raw_call_id); + + // Check for T.38 offer BEFORE applying hold-stripping logic + if let Some(t38_params) = sdp_has_t38(offer) { + tracing::info!( + "Call {} received T.38 re-INVITE: remote={}:{}, version={}, rate={}, ec={}", + call_id, + t38_params.remote_ip, + t38_params.remote_port, + t38_params.t38_version, + t38_params.max_bit_rate, + t38_params.udp_ec + ); + + // Handle T.38 re-INVITE by sending 200 OK at the dialog level, + // completely bypassing pjsip's inv session and pjsua's media handling. + // + // Why dialog-level? Three layers of pjsip fight us: + // 1. pjsua_media_channel_init() crashes on T.38 (not audio) + // 2. pjsip_inv_answer() asserts inv->last_answer (not set yet) + // 3. pjsip_inv_send_msg() triggers on_media_update → crash + // + // By using pjsip_dlg_send_response() directly, we send the 200 OK + // without touching the inv session's media machinery. We then cancel + // the SDP offer and set code=488 so pjsua skips all media processing. + + // 1. Bind a std::net::UdpSocket within the configured RTP port range + // so firewall rules (which typically allow only the RTP range) also pass fax traffic. + let env_config = crate::config::EnvConfig::global(); + let rtp_start = env_config.rtp_port_start; + let rtp_end = env_config.rtp_port_end; + let std_socket = { + let mut bound = None; + for port in rtp_start..=rtp_end { + match std::net::UdpSocket::bind(("0.0.0.0", port)) { + Ok(s) => { + bound = Some(s); + break; + } + Err(_) => continue, + } + } + match bound { + Some(s) => s, + None => { + tracing::error!( + "Call {}: failed to bind UDPTL socket in RTP range {}-{}", + call_id, + rtp_start, + rtp_end + ); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + } + }; + let local_port = match std_socket.local_addr() { + Ok(addr) => addr.port(), + Err(e) => { + tracing::error!("Call {}: failed to get UDPTL local addr: {}", call_id, e); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + }; + + // 2. Navigate rdata → tsx → dlg → inv + if rdata.is_null() { + tracing::error!("Call {}: rdata null for T.38 re-INVITE", call_id); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + let tsx = pjsip_rdata_get_tsx(rdata); + if tsx.is_null() { + tracing::error!("Call {}: no transaction for T.38 re-INVITE", call_id); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + let dlg = pjsip_tsx_get_dlg(tsx); + if dlg.is_null() { + tracing::error!("Call {}: no dialog for T.38 re-INVITE", call_id); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + let inv = pjsip_dlg_get_inv_session(dlg); + if inv.is_null() { + tracing::error!("Call {}: no inv session for T.38 re-INVITE", call_id); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // 3. Build and parse T.38 SDP + // Use RTP_PUBLIC_IP for the SDP c= line, matching what pjsua uses for audio SDP. + // Many SIP devices (e.g. Cisco ATAs) cannot resolve hostnames in SDP and will + // silently fall back to the audio endpoint, sending UDPTL to the wrong port. + let config = crate::config::EnvConfig::global(); + let local_ip = config + .rtp_public_ip + .clone() + .unwrap_or_else(|| config.sip_public_host_or_default().to_string()); + tracing::debug!("Using {} for T.38 SDP c= line", local_ip); + let sess_id = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap_or_default() + .as_secs(); + let sdp_str = format!( + "v=0\r\n\ + o=- {} {} IN IP4 {}\r\n\ + s=T.38 Fax\r\n\ + c=IN IP4 {}\r\n\ + t=0 0\r\n\ + m=image {} udptl t38\r\n\ + a=T38FaxVersion:0\r\n\ + a=T38MaxBitRate:14400\r\n\ + a=T38FaxRateManagement:transferredTCF\r\n\ + a=T38FaxMaxBuffer:260\r\n\ + a=T38FaxMaxDatagram:316\r\n\ + a=T38FaxUdpEC:t38UDPRedundancy\r\n", + sess_id, sess_id, local_ip, local_ip, local_port + ); + + let pool = pjsua_pool_create(c"t38sdp".as_ptr(), 1024, 256); + if pool.is_null() { + tracing::error!("Call {}: failed to create pool for T.38 SDP", call_id); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + let sdp_bytes = sdp_str.as_bytes(); + let mut sdp: *mut pjmedia_sdp_session = ptr::null_mut(); + let status = pjmedia_sdp_parse( + pool, + sdp_bytes.as_ptr() as *mut std::os::raw::c_char, + sdp_bytes.len(), + &mut sdp, + ); + if status != pj_constants__PJ_SUCCESS as i32 || sdp.is_null() { + tracing::error!( + "Call {}: failed to parse T.38 SDP (status={})", + call_id, + status + ); + pj_pool_release(pool); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // 4. Create 200 OK at dialog level (bypasses inv session media handling) + let mut tdata: *mut pjsip_tx_data = ptr::null_mut(); + let status = pjsip_dlg_create_response(dlg, rdata, 200, ptr::null(), &mut tdata); + if status != pj_constants__PJ_SUCCESS as i32 || tdata.is_null() { + tracing::error!( + "Call {}: pjsip_dlg_create_response failed (status={})", + call_id, + status + ); + pj_pool_release(pool); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // Attach SDP body to the 200 OK + let mut body: *mut pjsip_msg_body = ptr::null_mut(); + let status = pjsip_create_sdp_body((*tdata).pool, sdp, &mut body); + if status != pj_constants__PJ_SUCCESS as i32 || body.is_null() { + tracing::error!( + "Call {}: pjsip_create_sdp_body failed (status={})", + call_id, + status + ); + pjsip_tx_data_dec_ref(tdata); + pj_pool_release(pool); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + (*(*tdata).msg).body = body; + + // 5. Send 200 OK directly through the dialog transaction + let status = pjsip_dlg_send_response(dlg, tsx, tdata); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::error!( + "Call {}: pjsip_dlg_send_response failed (status={})", + call_id, + status + ); + pj_pool_release(pool); + pjsua_call_hangup(*call_id, 500, ptr::null(), ptr::null()); + return; + } + + // 6. Cancel the SDP offer on the negotiator (REMOTE_OFFER → DONE). + // This prevents pjsip from trying to negotiate or reject later. + if !(*inv).neg.is_null() { + pjmedia_sdp_neg_cancel_offer((*inv).neg); + } + + // 7. Tell pjsua to skip ALL media processing for this re-INVITE. + // Setting code != 200 makes pjsua_call_on_rx_offer goto on_return + // immediately, avoiding apply_call_setting/pjsua_media_channel_init. + // + // After this, pjsip's inv session will try to send a 488 rejection + // via pjsip_dlg_send_response(dlg, tsx, tdata). But the transaction + // was already terminated by our 200 OK above (INVITE UAS tsx → + // TERMINATED after 2xx per sip_transaction.c:3172). The terminated + // tsx's state handler returns PJ_EIGNORED for TX_MSG events, so the + // 488 is never sent on the wire. + if !code.is_null() { + *code = 488; + } + + tracing::info!( + "Sent T.38 200 OK for call {} (local={}:{}) via dialog", + call_id, + local_ip, + local_port + ); + + // 8. Store pre-bound socket for async UDPTL handler + T38_PRESOCKETS.insert(raw_call_id, std_socket); + + // 9. Emit T38Offered event (with local_port so handler knows which port) + if let Some(event_tx) = OUTBOUND_EVENT_TX.get() { + let _ = event_tx.try_send(super::SipEvent::T38Offered { + call_id, + remote_ip: t38_params.remote_ip, + remote_port: t38_params.remote_port, + t38_version: t38_params.t38_version, + max_bit_rate: t38_params.max_bit_rate, + rate_management: t38_params.rate_management, + udp_ec: t38_params.udp_ec, + local_port, + }); + } + + return; + } + + // Normal re-INVITE (audio): apply hold-stripping logic + // Set MEDIA_DIR flag to force sendrecv as default direction + if !opt.is_null() { + (*opt).flag |= pjsua_call_flag_PJSUA_CALL_SET_MEDIA_DIR; + (*opt).media_dir[0] = pjmedia_dir_PJMEDIA_DIR_ENCODING_DECODING; + } + + // Strip hold direction from the SDP negotiator's cloned remote offer. + // The negotiator clones the offer before this callback, so we must modify + // the clone (via rdata → tsx → dlg → inv → neg → neg_remote_sdp). + // Without this, update_media_direction() in sdp_neg.c rewrites our answer + // from sendrecv to recvonly when the remote offer has sendonly. + let stripped = strip_hold_from_neg_remote(call_id, rdata); + + tracing::info!( + "Call {} received re-INVITE, forcing sendrecv (sdp_stripped={})", + call_id, + stripped + ); +} + +/// Strip hold direction attributes from the SDP negotiator's remote offer clone. +/// Returns true if any hold attributes were found and removed. +unsafe fn strip_hold_from_neg_remote(call_id: CallId, rdata: *mut pjsip_rx_data) -> bool { + if rdata.is_null() { + tracing::warn!("Call {}: rdata null, cannot strip hold from offer", call_id); + return false; + } + + // rdata → transaction → dialog → inv session → SDP negotiator + let tsx = pjsip_rdata_get_tsx(rdata); + if tsx.is_null() { + tracing::warn!("Call {}: no transaction for re-INVITE", call_id); + return false; + } + + let dlg = pjsip_tsx_get_dlg(tsx); + if dlg.is_null() { + tracing::warn!("Call {}: no dialog for re-INVITE", call_id); + return false; + } + + let inv = pjsip_dlg_get_inv_session(dlg); + if inv.is_null() { + tracing::warn!("Call {}: no inv session for re-INVITE", call_id); + return false; + } + + let neg = (*inv).neg; + if neg.is_null() { + tracing::warn!("Call {}: no SDP negotiator", call_id); + return false; + } + + // Get the negotiator's cloned remote offer + let mut remote: *const pjmedia_sdp_session = ptr::null(); + let status = pjmedia_sdp_neg_get_neg_remote(neg, &mut remote); + if status != pj_constants__PJ_SUCCESS as i32 || remote.is_null() { + tracing::warn!( + "Call {}: failed to get remote SDP from negotiator (status={})", + call_id, + status + ); + return false; + } + + // Modify the clone in-place: strip hold direction attributes. + // Cast away const — safe because neg_remote_sdp is a deep clone, not the original. + // Removing these makes the SDP negotiator treat the offer as sendrecv (RFC 3264 default). + let remote_mut = remote as *mut pjmedia_sdp_session; + let mut stripped_any = false; + + for i in 0..(*remote_mut).media_count { + let m = (*remote_mut).media[i as usize]; + if m.is_null() { + continue; + } + + let sendonly = c"sendonly".as_ptr(); + let recvonly = c"recvonly".as_ptr(); + let inactive = c"inactive".as_ptr(); + + let had_sendonly = !pjmedia_sdp_media_find_attr2(m, sendonly, ptr::null()).is_null(); + let had_recvonly = !pjmedia_sdp_media_find_attr2(m, recvonly, ptr::null()).is_null(); + let had_inactive = !pjmedia_sdp_media_find_attr2(m, inactive, ptr::null()).is_null(); + + if had_sendonly || had_recvonly || had_inactive { + pjmedia_sdp_media_remove_all_attr(m, sendonly); + pjmedia_sdp_media_remove_all_attr(m, recvonly); + pjmedia_sdp_media_remove_all_attr(m, inactive); + stripped_any = true; + + tracing::debug!( + "Call {} media {}: stripped hold direction (sendonly={}, recvonly={}, inactive={})", + call_id, + i, + had_sendonly, + had_recvonly, + had_inactive + ); + } + } + + stripped_any +} diff --git a/sipcord-bridge/src/transport/sip/channel_audio.rs b/sipcord-bridge/src/transport/sip/channel_audio.rs new file mode 100644 index 0000000..cce3e91 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/channel_audio.rs @@ -0,0 +1,1044 @@ +//! Per-channel audio isolation for Discord <-> SIP audio routing +//! +//! This module handles: +//! - Custom buffer ports for per-channel Discord->SIP audio +//! - Channel registration and call mapping +//! - Audio buffer management + +use super::ffi::frame_utils::get_conference_bridge; +use super::ffi::types::*; +use crate::services::snowflake::Snowflake; +use dashmap::DashMap; +use parking_lot::{Mutex, RwLock}; +use pjsua::*; +use rtrb::Consumer; +use std::collections::{HashMap, VecDeque}; +use std::sync::atomic::Ordering; +use std::sync::Arc; +use std::sync::OnceLock; +use std::time::{Duration, Instant}; + +// Discord→SIP ring buffer consumers (written by Discord, read by audio thread) + +/// Per-channel ring buffer consumers for the Discord→SIP audio path. +/// VoiceReceiver writes resampled i16 mono @ 16kHz directly to the producer side. +/// channel_port_get_frame reads from the consumer side here. +static DISCORD_TO_SIP_CONSUMERS: OnceLock>>> = + OnceLock::new(); + +fn get_discord_to_sip_consumers() -> &'static DashMap>> { + DISCORD_TO_SIP_CONSUMERS.get_or_init(DashMap::new) +} + +/// Register a ring buffer consumer for Discord→SIP audio on a channel. +pub fn register_discord_to_sip(channel_id: Snowflake, consumer: Consumer) { + tracing::debug!( + "Registering Discord→SIP ring buffer consumer for channel {}", + channel_id + ); + get_discord_to_sip_consumers().insert(channel_id, Mutex::new(consumer)); +} + +/// Unregister the ring buffer consumer for a channel. +pub fn unregister_discord_to_sip(channel_id: Snowflake) { + tracing::debug!( + "Unregistering Discord→SIP ring buffer consumer for channel {}", + channel_id + ); + get_discord_to_sip_consumers().remove(&channel_id); +} + +// Custom buffer port callbacks for per-channel Discord->SIP audio + +/// Custom get_frame callback for channel buffer ports +/// Called by PJSUA/conference bridge to pull audio for RTP transmission +/// +/// This is called by PJSUA from its own thread during RTP transmission. +/// With multiple callers in the same channel, PJSUA calls this multiple times +/// (once per call) within microseconds. Without caching, N callers would drain +/// N*320 samples per 20ms tick, emptying the buffer N times faster than it fills. +/// +/// Time-based caching ensures all callers in the same tick share the same audio frame. +pub unsafe extern "C" fn channel_port_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + use std::sync::atomic::AtomicU64; + + static GET_FRAME_CALL_COUNT: AtomicU64 = AtomicU64::new(0); + static CACHE_HIT_COUNT: AtomicU64 = AtomicU64::new(0); + let call_count = GET_FRAME_CALL_COUNT.fetch_add(1, Ordering::Relaxed); + + // Log first 10 calls to confirm this callback is being invoked + if call_count < 10 { + tracing::trace!( + "channel_port_get_frame called (call #{}, port={:p})", + call_count, + this_port + ); + } else if call_count == 10 { + tracing::trace!("channel_port_get_frame: suppressing further per-call logs"); + } + + if this_port.is_null() || frame.is_null() { + return -1; // PJ_EINVAL + } + + let channel_id = Snowflake::new((*this_port).port_data.ldata as u64); + if *channel_id == 0 { + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_NONE; + (*frame).size = 0; + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + // Time-based caching to prevent multi-caller drain + // If called within 15ms of last drain, return cached samples + let now = Instant::now(); + let cache_window = Duration::from_millis(15); // PJSUA sends RTP every 20ms + + let cache = CHANNEL_DRAIN_CACHE.get_or_init(DashMap::new); + + // Stack-allocated buffer for fresh samples (zero heap allocation on miss path) + let mut stack_buf = [0i16; SAMPLES_PER_FRAME]; + + // Check cache first - if valid, return cached samples (cheap Arc::clone) + let (samples_ptr, samples_len): (*const i16, usize) = if let Some(entry) = + cache.get(&channel_id) + { + let (last_time, cached, cached_len) = entry.value(); + if now.duration_since(*last_time) < cache_window { + // Cache hit - use cached Arc data directly (zero-copy) + let hits = CACHE_HIT_COUNT.fetch_add(1, Ordering::Relaxed) + 1; + if call_count.is_multiple_of(500) { + tracing::trace!( + "channel_port_get_frame #{}: CACHE HIT for channel={} ({}ms since last drain, {} total hits)", + call_count, channel_id, now.duration_since(*last_time).as_millis(), hits + ); + } + (cached.as_ptr(), *cached_len) + } else { + // Cache expired - need to drop the read ref before draining + drop(entry); + + // Drain fresh samples into stack buffer + let n = get_samples_from_buffer(channel_id, &mut stack_buf); + // Store in cache as Arc<[i16]> (single allocation for Arc+data) + let fresh_arc: Arc<[i16]> = Arc::from(&stack_buf[..n]); + cache.insert(channel_id, (now, fresh_arc, n)); + + if call_count.is_multiple_of(500) { + tracing::trace!( + "channel_port_get_frame #{}: channel={}, drained {} samples (cache expired)", + call_count, + channel_id, + n + ); + } + (stack_buf.as_ptr(), n) + } + } else { + // No cache entry - drain fresh samples into stack buffer + let n = get_samples_from_buffer(channel_id, &mut stack_buf); + let fresh_arc: Arc<[i16]> = Arc::from(&stack_buf[..n]); + cache.insert(channel_id, (now, fresh_arc, n)); + + if call_count.is_multiple_of(500) { + tracing::trace!( + "channel_port_get_frame #{}: channel={}, drained {} samples (no cache)", + call_count, + channel_id, + n + ); + } + (stack_buf.as_ptr(), n) + }; + + // Log cache statistics periodically (every 10 seconds at 50 calls/sec) + if call_count.is_multiple_of(500) { + let hits = CACHE_HIT_COUNT.load(Ordering::Relaxed); + let hit_rate = (hits * 100).checked_div(call_count).unwrap_or(0); + tracing::trace!( + "channel_port_get_frame stats: {} calls, {} cache hits ({}% hit rate)", + call_count, + hits, + hit_rate + ); + } + + if samples_len > 0 { + let samples = std::slice::from_raw_parts(samples_ptr, samples_len); + super::ffi::frame_utils::fill_audio_frame(frame, samples); + } else { + super::ffi::frame_utils::fill_silence_frame(frame); + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Get samples from the Discord→SIP ring buffer for a channel. +/// Fills the caller-provided buffer and returns the number of samples written. +/// `buf` must be at least SAMPLES_PER_FRAME in length. +fn get_samples_from_buffer(channel_id: Snowflake, buf: &mut [i16; SAMPLES_PER_FRAME]) -> usize { + use std::sync::atomic::AtomicU64; + static DRAIN_COUNT: AtomicU64 = AtomicU64::new(0); + static UNDERRUN_COUNT: AtomicU64 = AtomicU64::new(0); + + if let Some(consumer_entry) = get_discord_to_sip_consumers().get(&channel_id) { + if let Some(mut consumer) = consumer_entry.try_lock() { + let available = consumer.slots(); + if available >= SAMPLES_PER_FRAME { + let count = DRAIN_COUNT.fetch_add(1, Ordering::Relaxed); + if count.is_multiple_of(250) { + tracing::debug!( + "Discord->SIP drain: channel={}, available={}, draining {}", + channel_id, + available, + SAMPLES_PER_FRAME + ); + } + if let Ok(chunk) = consumer.read_chunk(SAMPLES_PER_FRAME) { + let (first, second) = chunk.as_slices(); + buf[..first.len()].copy_from_slice(first); + if !second.is_empty() { + buf[first.len()..first.len() + second.len()].copy_from_slice(second); + } + chunk.commit_all(); + } + return SAMPLES_PER_FRAME; + } else if available > 0 { + // Partial buffer - drain what we have, zero-fill the rest + let underruns = UNDERRUN_COUNT.fetch_add(1, Ordering::Relaxed) + 1; + if underruns <= 10 || underruns.is_multiple_of(100) { + tracing::warn!( + "BUFFER UNDERRUN (Discord->SIP): channel={}, only {} available (need {}), total: {}", + channel_id, available, SAMPLES_PER_FRAME, underruns + ); + } + buf[available..].fill(0); + if let Ok(chunk) = consumer.read_chunk(available) { + let (first, second) = chunk.as_slices(); + buf[..first.len()].copy_from_slice(first); + if !second.is_empty() { + buf[first.len()..first.len() + second.len()].copy_from_slice(second); + } + chunk.commit_all(); + } + return available; + } + } + } + + 0 // No audio available +} + +/// Custom put_frame callback for channel buffer ports +/// Called by PJSUA/conference bridge when sending audio TO this port (SIP -> Discord) +/// This captures audio from calls connected to this channel's port +pub unsafe extern "C" fn channel_port_put_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + use std::sync::atomic::AtomicU64; + + static PUT_FRAME_CALL_COUNT: AtomicU64 = AtomicU64::new(0); + let call_count = PUT_FRAME_CALL_COUNT.fetch_add(1, Ordering::Relaxed); + + if this_port.is_null() || frame.is_null() { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + // Only process audio frames with data + if (*frame).type_ != pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO || (*frame).size == 0 { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + let channel_id = Snowflake::new((*this_port).port_data.ldata as u64); + if *channel_id == 0 { + return pj_constants__PJ_SUCCESS as pj_status_t; + } + + // Log first 10 calls to confirm this callback is being invoked + if call_count < 10 { + tracing::trace!( + "channel_port_put_frame called (call #{}, port={:p}, channel={}, frame_size={})", + call_count, + this_port, + channel_id, + (*frame).size + ); + } else if call_count == 10 { + tracing::trace!("channel_port_put_frame: suppressing further per-call logs"); + } + + // View frame buffer as i16 slice (zero-copy) + let num_samples = (*frame).size / 2; + let frame_buf = (*frame).buf as *const i16; + let samples = std::slice::from_raw_parts(frame_buf, num_samples); + + // Store in the SIP->Discord buffer for this channel + let buffers = CHANNEL_AUDIO_IN.get_or_init(DashMap::new); + let mut buffer = buffers + .entry(channel_id) + .or_insert_with(|| VecDeque::with_capacity(max_channel_buffer_samples())); + + // Limit buffer size (same as Discord->SIP direction) + let max_buffer = max_channel_buffer_samples(); + let buf_len = buffer.len(); + if buf_len + samples.len() > max_buffer { + let to_drop = (buf_len + samples.len()).saturating_sub(max_buffer); + if to_drop > 0 { + let drop_count = to_drop.min(buf_len); + buffer.drain(..drop_count); + if call_count.is_multiple_of(250) { + tracing::warn!( + "SIP->Discord buffer overflow: channel {} dropping {} samples", + channel_id, + to_drop + ); + } + } + } + + buffer.extend(samples.iter().copied()); + + // Log periodically + if call_count.is_multiple_of(500) { + tracing::debug!( + "channel_port_put_frame #{}: channel={}, added {} samples, buffer now {}", + call_count, + channel_id, + samples.len(), + buffer.len() + ); + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Custom on_destroy callback for channel buffer ports +pub unsafe extern "C" fn channel_port_on_destroy(this_port: *mut pjmedia_port) -> pj_status_t { + if !this_port.is_null() { + // Remove from reverse mapping + let port_key = this_port as usize; + if let Some(mapping) = PORT_TO_CHANNEL.get() { + mapping.lock().remove(&port_key); + } + } + pj_constants__PJ_SUCCESS as pj_status_t +} + +// Conference connection helpers (shared by connect/disconnect paths) + +/// Connect a call bidirectionally to other calls in the channel + channel port. +/// +/// Uses `pjmedia_conf_connect_port` directly to bypass PJSUA_LOCK. +/// `other_calls` should be (call_id, conf_port) pairs for existing calls in the channel. +unsafe fn connect_call_to_channel( + conf: *mut pjmedia_conf, + call_id: CallId, + conf_port: ConfPort, + channel_id: Snowflake, + other_calls: &[(CallId, ConfPort)], +) { + // Connect this call to other calls in the same channel + for &(other_call_id, other_conf_port) in other_calls { + let status1 = + pjmedia_conf_connect_port(conf, *conf_port as u32, *other_conf_port as u32, 0); + let status2 = + pjmedia_conf_connect_port(conf, *other_conf_port as u32, *conf_port as u32, 0); + + if status1 == pj_constants__PJ_SUCCESS as i32 && status2 == pj_constants__PJ_SUCCESS as i32 + { + tracing::debug!( + "Connected call {} (port {}) <-> call {} (port {}) in channel {}", + call_id, + conf_port, + other_call_id, + other_conf_port, + channel_id + ); + } else { + tracing::warn!( + "Failed to connect calls {} and {} in channel {}: status1={}, status2={}", + call_id, + other_call_id, + channel_id, + status1, + status2 + ); + } + } + + // Connect call to channel's conference port bidirectionally + if let Some(channel_slot) = get_or_create_channel_port(channel_id) { + // Channel port -> call (Discord audio reaches this call) + let status1 = pjmedia_conf_connect_port(conf, *channel_slot as u32, *conf_port as u32, 0); + // Call -> channel port (SIP audio goes to channel for Discord) + let status2 = pjmedia_conf_connect_port(conf, *conf_port as u32, *channel_slot as u32, 0); + + if status1 != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to connect channel {} slot {} -> call {}: {}", + channel_id, + channel_slot, + call_id, + status1 + ); + } + if status2 != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to connect call {} -> channel {} slot {}: {}", + call_id, + channel_id, + channel_slot, + status2 + ); + } + if status1 == pj_constants__PJ_SUCCESS as i32 && status2 == pj_constants__PJ_SUCCESS as i32 + { + tracing::debug!( + "Connected channel {} port (slot {}) <-> call {} (port {}) bidirectionally", + channel_id, + channel_slot, + call_id, + conf_port + ); + } + } +} + +/// Disconnect a call from other calls in the channel + channel port. +/// +/// Uses `pjmedia_conf_disconnect_port` directly to bypass PJSUA_LOCK. +/// `remaining_calls` should be call IDs still in the channel (excluding the departing call). +unsafe fn disconnect_call_from_channel( + conf: *mut pjmedia_conf, + call_id: CallId, + conf_port: ConfPort, + channel_id: Snowflake, + remaining_calls: &[CallId], +) { + let conf_ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + + // Disconnect from other calls in the channel (both directions) + for &other_call_id in remaining_calls { + if let Some(other_conf_port) = conf_ports.get(&other_call_id).map(|r| *r) { + pjmedia_conf_disconnect_port(conf, *conf_port as u32, *other_conf_port as u32); + pjmedia_conf_disconnect_port(conf, *other_conf_port as u32, *conf_port as u32); + tracing::debug!( + "Disconnected call {} from call {} in channel {}", + call_id, + other_call_id, + channel_id + ); + } + } + + // Disconnect from channel port (both directions) + if let Some(channel_slot) = get_channel_slot(channel_id) { + pjmedia_conf_disconnect_port(conf, *channel_slot as u32, *conf_port as u32); + pjmedia_conf_disconnect_port(conf, *conf_port as u32, *channel_slot as u32); + tracing::debug!( + "Disconnected channel {} slot {} <-> call {} (port {}) bidirectionally", + channel_id, + channel_slot, + call_id, + conf_port + ); + } +} + +// Per-channel audio isolation functions + +/// Register a call with its Discord channel for audio isolation +/// +/// This function: +/// 1. Stores the call -> channel mapping (always, even if media not ready) +/// 2. Adds the call to the channel's call set +/// 3. Queues the conference connections for the audio thread to process +/// (pjsua_conf_connect conflicts with pjmedia_port_get_frame if called from different threads) +pub fn register_call_channel(call_id: CallId, channel_id: Snowflake) { + // Always store the call -> channel mapping first, even if media isn't ready yet + // This allows complete_pending_channel_registration to finish the job when media becomes active + { + let channels = CALL_CHANNELS.get_or_init(DashMap::new); + channels.insert(call_id, channel_id); + tracing::debug!("Stored call {} -> channel {} mapping", call_id, channel_id); + } + + // Get the conf_port for this call + let conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + ports.get(&call_id).map(|r| *r) + }; + + let Some(_conf_port) = conf_port else { + tracing::debug!( + "Call {} registered for channel {} but media not active yet - will connect when ready", + call_id, + channel_id + ); + return; + }; + + // Add call to channel's call set (this enables audio buffering for this channel) + { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let mut map = channel_calls.write(); + let calls = map.entry(channel_id).or_default(); + calls.insert(call_id); + tracing::debug!( + "Added call {} to channel {} ({} calls in channel)", + call_id, + channel_id, + calls.len() + ); + } + + // Queue the conference connections to be made by the audio thread + // This is necessary because pjsua_conf_connect conflicts with the audio thread's + // pjmedia_port_get_frame calls if made from a different thread + PENDING_CONF_CONNECTIONS.push((call_id, channel_id)); + tracing::debug!( + "Queued conference connections for call {} -> channel {} (will be processed by audio thread)", + call_id, channel_id + ); +} + +/// Complete the conference connections for a call (called from audio thread) +/// +/// This makes the actual conference connections that were queued by register_call_channel. +/// Must be called from the audio thread to avoid conflicts with pjmedia_port_get_frame. +/// Uses pjmedia_conf_connect_port directly to bypass PJSUA_LOCK (avoiding deadlocks). +pub fn complete_conf_connections(call_id: CallId, channel_id: Snowflake) { + // Get the conf_port for this call + let conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + ports.get(&call_id).map(|r| *r) + }; + + let Some(conf_port) = conf_port else { + tracing::warn!( + "complete_conf_connections: call {} has no conf_port - skipping", + call_id + ); + return; + }; + + // Get the conference bridge pointer (needed for pjmedia_conf_connect_port) + let conf = unsafe { get_conference_bridge() }; + let Some(conf) = conf else { + tracing::error!( + "complete_conf_connections: could not get conference bridge pointer for call {}", + call_id + ); + return; + }; + + // Get other calls in this channel to connect bidirectionally + let other_calls: Vec<(CallId, ConfPort)> = { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let conf_ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + let map = channel_calls.read(); + if let Some(calls) = map.get(&channel_id) { + calls + .iter() + .filter(|&&other_id| other_id != call_id) + .filter_map(|&other_id| conf_ports.get(&other_id).map(|r| (other_id, *r))) + .collect() + } else { + vec![] + } + }; + + unsafe { + connect_call_to_channel(conf, call_id, conf_port, channel_id, &other_calls); + } + + tracing::debug!( + "Completed conference connections for call {} (port {}) in channel {}", + call_id, + conf_port, + channel_id + ); +} + +/// Complete a pending channel registration when media becomes active +/// +/// Called from on_call_media_state_cb when a call's media becomes ACTIVE. +/// If the call was already registered with a channel (via register_call_channel) +/// but media wasn't ready at that time, this completes the audio connections. +pub fn complete_pending_channel_registration(call_id: CallId, conf_port: ConfPort) { + // Check if this call has a pending channel registration + let channel_id = { + let channels = CALL_CHANNELS.get_or_init(DashMap::new); + channels.get(&call_id).map(|r| *r) + }; + + let Some(channel_id) = channel_id else { + // No pending registration - call hasn't been assigned to a channel yet + tracing::debug!( + "complete_pending_channel_registration: call {} has no pending channel registration (will be registered later)", + call_id + ); + return; + }; + + // Check if already in CHANNEL_CALLS (already connected) + let already_connected = { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let map = channel_calls.read(); + map.get(&channel_id) + .map(|calls| calls.contains(&call_id)) + .unwrap_or(false) + }; + + if already_connected { + tracing::debug!( + "Call {} already connected to channel {} - skipping", + call_id, + channel_id + ); + return; + } + + tracing::debug!( + "Completing pending channel registration: call {} -> channel {} (conf_port {})", + call_id, + channel_id, + conf_port + ); + + // Get existing calls in this channel and add our call + let existing_calls: Vec = { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let mut map = channel_calls.write(); + let calls = map.entry(channel_id).or_default(); + let existing: Vec = calls.iter().copied().collect(); + calls.insert(call_id); + existing + }; + + // Get the conference bridge pointer (needed for pjmedia_conf_connect_port) + let conf = unsafe { get_conference_bridge() }; + let Some(conf) = conf else { + tracing::error!( + "complete_pending_channel_registration: could not get conference bridge pointer for call {}", + call_id + ); + return; + }; + + // Connect this call to other calls in the same channel + channel port + let conf_ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + let other_calls: Vec<(CallId, ConfPort)> = existing_calls + .iter() + .filter_map(|&other_id| conf_ports.get(&other_id).map(|r| (other_id, *r))) + .collect(); + + unsafe { + connect_call_to_channel(conf, call_id, conf_port, channel_id, &other_calls); + } + + tracing::debug!( + "Completed pending registration: call {} (port {}) for channel {} ({} total calls)", + call_id, + conf_port, + channel_id, + existing_calls.len() + 1 + ); +} + +/// Temporarily disconnect a held call from its channel without full teardown +/// +/// Unlike unregister_call_channel(), this keeps CALL_CHANNELS and CALL_CONF_PORTS +/// mappings intact so the call can be reconnected when it comes off hold. +/// The existing ACTIVE code path in on_call_media_state_cb handles reconnection +/// via complete_pending_channel_registration(). +/// +/// This function: +/// 1. Removes the call from CHANNEL_CALLS (stops audio buffering for this channel if empty) +/// 2. Disconnects conf_port from channel port (both directions) +/// 3. Disconnects conf_port from other calls in the channel (both directions) +/// 4. Clears audio buffers and drain cache if no other calls remain in the channel +pub fn disconnect_call_for_hold(call_id: CallId) { + // Look up channel_id from CALL_CHANNELS (keep the mapping for reconnection) + let channel_id = { + let channels = CALL_CHANNELS.get_or_init(DashMap::new); + channels.get(&call_id).map(|r| *r) + }; + + let Some(channel_id) = channel_id else { + tracing::debug!( + "disconnect_call_for_hold: call {} not registered with any channel", + call_id + ); + return; + }; + + // Look up conf_port from CALL_CONF_PORTS (keep the mapping for reconnection) + let conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + ports.get(&call_id).map(|r| *r) + }; + + // Remove call from CHANNEL_CALLS and get remaining calls + let remaining_calls: Vec = { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let mut map = channel_calls.write(); + if let Some(calls) = map.get_mut(&channel_id) { + calls.remove(&call_id); + let remaining: Vec = calls.iter().copied().collect(); + // If set becomes empty, remove the key so get_active_channels_into() excludes it + // and send_audio_to_channel() stops buffering + if calls.is_empty() { + map.remove(&channel_id); + } + remaining + } else { + Vec::new() + } + }; + + // Disconnect conference ports + if let Some(conf_port) = conf_port { + let conf = unsafe { get_conference_bridge() }; + + if let Some(conf) = conf { + unsafe { + disconnect_call_from_channel( + conf, + call_id, + conf_port, + channel_id, + &remaining_calls, + ); + } + } else { + tracing::warn!( + "disconnect_call_for_hold: could not get conference bridge pointer for call {}", + call_id + ); + } + } + + // If no other calls remain in the channel, clear stale buffers + if remaining_calls.is_empty() { + if let Some(audio_in) = CHANNEL_AUDIO_IN.get() { + audio_in.remove(&channel_id); + } + if let Some(drain_cache) = CHANNEL_DRAIN_CACHE.get() { + drain_cache.remove(&channel_id); + } + tracing::debug!( + "Hold: cleared audio buffers for channel {} (no remaining calls)", + channel_id + ); + } + + tracing::info!( + "Call {} put on hold - disconnected from channel {} ({} calls remaining)", + call_id, + channel_id, + remaining_calls.len() + ); +} + +/// Unregister a call from its Discord channel +/// +/// This function: +/// 1. Removes the call from channel mappings +/// 2. Disconnects this call from other calls in the same channel +/// 3. Disconnects from channel port +/// 4. Cleans up the conf_port mapping +/// +/// Does NOT clean up the channel port automatically. +/// The bridge code should call cleanup_channel_port() when the bridge is destroyed +/// to avoid race conditions with other calls joining the same channel. +pub fn unregister_call_channel(call_id: CallId) { + // Get and remove the channel_id for this call + let channel_id = { + let channels = CALL_CHANNELS.get_or_init(DashMap::new); + channels.remove(&call_id).map(|(_, v)| v) + }; + + // Get and remove the conf_port for this call + let conf_port = { + let ports = CALL_CONF_PORTS.get_or_init(DashMap::new); + ports.remove(&call_id).map(|(_, v)| v) + }; + + let Some(channel_id) = channel_id else { + // Call wasn't registered with a channel (e.g., hung up before auth) + tracing::debug!("Call {} was not registered with any channel", call_id); + return; + }; + + // Remove call from channel's call set and get remaining calls + let remaining_calls: Vec = { + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let mut map = channel_calls.write(); + if let Some(calls) = map.get_mut(&channel_id) { + calls.remove(&call_id); + let remaining: Vec = calls.iter().copied().collect(); + // Clean up empty channels + if calls.is_empty() { + map.remove(&channel_id); + // Also clean up the channel's audio input buffer + if let Some(audio_in) = CHANNEL_AUDIO_IN.get() { + audio_in.remove(&channel_id); + } + } + remaining + } else { + Vec::new() + } + }; + + // Disconnect this call from other calls in the channel and from channel/master ports + if let Some(conf_port) = conf_port { + let conf = unsafe { get_conference_bridge() }; + + if let Some(conf) = conf { + unsafe { + disconnect_call_from_channel( + conf, + call_id, + conf_port, + channel_id, + &remaining_calls, + ); + } + } else { + tracing::warn!( + "unregister_call_channel: could not get conference bridge pointer for call {}", + call_id + ); + } + } + + tracing::debug!( + "Unregistered call {} from channel {} ({} calls remaining)", + call_id, + channel_id, + remaining_calls.len() + ); +} + +/// Get or create the conference port for a channel +/// Returns the conf_slot for this channel's port +/// +/// Creates a CUSTOM BUFFER PORT (not a null port) that: +/// - Provides audio to the conference via get_frame (pulls from Discord→SIP ring buffer) +/// - Discards put_frame (we only provide audio, not receive it) +pub fn get_or_create_channel_port(channel_id: Snowflake) -> Option { + let ports = CHANNEL_CONF_PORTS.get_or_init(|| Mutex::new(HashMap::new())); + let mut ports = ports.lock(); + + if let Some(&(_, slot)) = ports.get(&channel_id) { + return Some(slot); + } + + // Create a new custom buffer port for this channel + unsafe { + // Get or create the memory pool + let pool = CHANNEL_PORT_POOL.get_or_init(|| { + let pool = pjsua_pool_create(c"channel_ports".as_ptr() as *const _, 4096, 4096); + Mutex::new(SendablePool(pool)) + }); + let pool_ptr = pool.lock().0; + + // Allocate pjmedia_port structure (zero-initialized) + let port_size = std::mem::size_of::(); + let port = pj_pool_alloc(pool_ptr, port_size) as *mut pjmedia_port; + if port.is_null() { + tracing::error!("Failed to allocate channel port for {}", channel_id); + return None; + } + // Zero-initialize the port structure + std::ptr::write_bytes(port as *mut u8, 0, port_size); + + // Create port name + let port_name = format!("ch{}", channel_id); + let port_name_cstr = std::ffi::CString::new(port_name).ok()?; + + // Initialize port info using pjmedia_port_info_init + // Signature: we use a custom one to identify our ports + let signature = 0x4348_414E; // "CHAN" in hex + pjmedia_port_info_init( + &mut (*port).info, + &pj_str(port_name_cstr.as_ptr() as *mut _), + signature, + CONF_SAMPLE_RATE, + CONF_CHANNELS, + 16, // bits per sample + SAMPLES_PER_FRAME as u32, + ); + + // Set our custom callbacks + (*port).get_frame = Some(channel_port_get_frame); + (*port).put_frame = Some(channel_port_put_frame); + (*port).on_destroy = Some(channel_port_on_destroy); + + // Add to conference + let mut slot: i32 = 0; + let status = pjsua_conf_add_port(pool_ptr, port, &mut slot); + + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::error!( + "Failed to add channel port to conference for {}: {}", + channel_id, + status + ); + return None; + } + + // Store channel_id in port_data.ldata for O(1) lookup in callbacks + // (avoids Mutex acquisition on every get_frame/put_frame call) + (*port).port_data.ldata = *channel_id as i64; + + // Also register in reverse mapping for on_destroy callback cleanup + let port_to_channel = PORT_TO_CHANNEL.get_or_init(|| Mutex::new(HashMap::new())); + port_to_channel.lock().insert(port as usize, channel_id); + + let conf_slot = ConfPort::new(slot); + tracing::debug!( + "Created custom buffer port for channel {} at slot {} (port_ptr={:p})", + channel_id, + conf_slot, + port + ); + ports.insert(channel_id, (SendablePort(port), conf_slot)); + Some(conf_slot) + } +} + +/// Get the conf_slot for a channel (if it exists) +pub fn get_channel_slot(channel_id: Snowflake) -> Option { + let ports = CHANNEL_CONF_PORTS.get()?; + let ports = ports.lock(); + ports.get(&channel_id).map(|&(_, slot)| slot) +} + +/// Clean up a channel's conference port +/// This should be called by the bridge code when it's certain no calls remain +/// (not automatically when CHANNEL_CALLS is empty, to avoid race conditions) +pub fn cleanup_channel_port(channel_id: Snowflake) { + let Some(ports) = CHANNEL_CONF_PORTS.get() else { + return; + }; + + let removed = { + let mut ports = ports.lock(); + ports.remove(&channel_id) + }; + + if let Some((port, slot)) = removed { + // Remove from reverse mapping first + if let Some(mapping) = PORT_TO_CHANNEL.get() { + mapping.lock().remove(&(port.0 as usize)); + } + + unsafe { + // Remove from conference bridge + let status = pjsua_conf_remove_port(*slot); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to remove channel port {} from conference: {}", + slot, + status + ); + } + + // Destroy the port (calls on_destroy callback) + if !port.0.is_null() { + pjmedia_port_destroy(port.0); + } + } + tracing::debug!( + "Cleaned up channel port for channel {} (slot {})", + channel_id, + slot + ); + } +} + +/// Drain one frame of SIP->Discord audio for a channel into a provided buffer. +/// Returns the number of samples written (0 if no audio available). +/// `buf` must be at least SAMPLES_PER_FRAME in length. +pub fn drain_sip_to_discord_audio(channel_id: Snowflake, buf: &mut [i16]) -> usize { + use std::sync::atomic::AtomicU64; + static DRAIN_COUNT: AtomicU64 = AtomicU64::new(0); + + let Some(buffers) = CHANNEL_AUDIO_IN.get() else { + return 0; + }; + + let Some(mut buffer) = buffers.get_mut(&channel_id) else { + return 0; + }; + + if buffer.len() >= SAMPLES_PER_FRAME { + let count = DRAIN_COUNT.fetch_add(1, Ordering::Relaxed); + if count.is_multiple_of(250) { + tracing::debug!( + "SIP->Discord drain #{}: channel={}, buffer has {} samples, draining {}", + count, + channel_id, + buffer.len(), + SAMPLES_PER_FRAME + ); + } + // Drain directly into the provided buffer + let (front, back) = buffer.as_slices(); + if front.len() >= SAMPLES_PER_FRAME { + buf[..SAMPLES_PER_FRAME].copy_from_slice(&front[..SAMPLES_PER_FRAME]); + } else { + buf[..front.len()].copy_from_slice(front); + let remaining = SAMPLES_PER_FRAME - front.len(); + buf[front.len()..SAMPLES_PER_FRAME].copy_from_slice(&back[..remaining]); + } + buffer.drain(..SAMPLES_PER_FRAME); + SAMPLES_PER_FRAME + } else if !buffer.is_empty() { + // Return what we have (partial frame) - better than nothing + let available = buffer.len(); + tracing::trace!( + "SIP->Discord partial drain: channel={}, only {} samples available", + channel_id, + available + ); + let (front, back) = buffer.as_slices(); + if front.len() >= available { + buf[..available].copy_from_slice(&front[..available]); + } else { + buf[..front.len()].copy_from_slice(front); + let remaining = available - front.len(); + buf[front.len()..available].copy_from_slice(&back[..remaining]); + } + buffer.drain(..available); + available + } else { + 0 + } +} + +/// Clear stale audio buffers and drain cache for a channel. +/// Called during reconnection teardown to ensure fresh audio state. +pub fn clear_channel_stale_audio(channel_id: Snowflake) { + if let Some(audio_in) = CHANNEL_AUDIO_IN.get() { + audio_in.remove(&channel_id); + } + if let Some(drain_cache) = CHANNEL_DRAIN_CACHE.get() { + drain_cache.remove(&channel_id); + } +} + +/// Fill a provided Vec with the active channel IDs (reuses allocation). +/// Uses RwLock::read() — non-exclusive, never blocks other readers (audio thread). +pub fn get_active_channels_into(out: &mut Vec) { + out.clear(); + let channel_calls = CHANNEL_CALLS.get_or_init(|| RwLock::new(HashMap::new())); + let map = channel_calls.read(); + out.extend(map.keys()); +} diff --git a/sipcord-bridge/src/transport/sip/ffi/direct_player.rs b/sipcord-bridge/src/transport/sip/ffi/direct_player.rs new file mode 100644 index 0000000..edeae4f --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/direct_player.rs @@ -0,0 +1,161 @@ +//! Direct player port for playing audio to a single call +//! +//! This module provides one-shot audio playback (e.g., join sounds) that +//! bypasses the channel buffer and plays directly to a specific call. + +use super::types::*; +use anyhow::Result; +use parking_lot::Mutex; +use pjsua::*; +use std::collections::HashMap; + +/// Custom get_frame callback for direct player ports +/// Returns samples from the player's buffer, advancing position each call +pub unsafe extern "C" fn direct_player_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + use std::sync::atomic::{AtomicU64, Ordering}; + + static GET_FRAME_CALL_COUNT: AtomicU64 = AtomicU64::new(0); + let call_count = GET_FRAME_CALL_COUNT.fetch_add(1, Ordering::Relaxed); + + // Log first 10 calls to confirm this callback is being invoked + if call_count < 10 { + tracing::trace!( + "direct_player_get_frame called (call #{}, port={:p})", + call_count, + this_port + ); + } else if call_count == 10 { + tracing::trace!("direct_player_get_frame: suppressing further per-call logs"); + } + + if this_port.is_null() || frame.is_null() { + return -1; // PJ_EINVAL + } + + let port_key = this_port as usize; + + // Get samples from the player's buffer and fill frame directly (no intermediate Vec) + { + let state = DIRECT_PLAYER_STATE.get_or_init(|| Mutex::new(HashMap::new())); + let mut state = state.lock(); + + if let Some((buffer, pos)) = state.get_mut(&port_key) { + if *pos < buffer.len() { + let end = (*pos + SAMPLES_PER_FRAME).min(buffer.len()); + super::frame_utils::fill_audio_frame(frame, &buffer[*pos..end]); + *pos = end; + } else { + super::frame_utils::fill_silence_frame(frame); // Playback complete + } + } else { + super::frame_utils::fill_silence_frame(frame); + } + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Custom on_destroy callback for direct player ports +pub unsafe extern "C" fn direct_player_on_destroy(this_port: *mut pjmedia_port) -> pj_status_t { + if !this_port.is_null() { + let port_key = this_port as usize; + if let Some(state) = DIRECT_PLAYER_STATE.get() { + state.lock().remove(&port_key); + } + tracing::debug!("Direct player port destroyed: {:p}", this_port); + } + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Play audio directly to a specific call's conference port using a custom player port. +/// This bypasses the channel buffer - used for join sounds to avoid overflow. +/// +/// The player port connects directly to the call's conf_port, so only that caller +/// hears the audio. Other callers and Discord users don't hear it. +/// +/// This queues the operation to be executed by the audio thread to avoid +/// deadlocks with the audio thread's pjsua_conf_connect/disconnect calls. +pub fn play_audio_to_call_direct(call_id: CallId, samples: &[i16]) -> Result<()> { + use super::types::{queue_pjsua_op, PendingPjsuaOp}; + + tracing::debug!( + "Queueing PlayDirect for call {} ({} samples)", + call_id, + samples.len() + ); + queue_pjsua_op(PendingPjsuaOp::PlayDirect { + call_id, + samples: samples.to_vec(), + }); + Ok(()) +} + +/// Internal implementation of play_audio_to_call_direct +/// Called from the audio thread to actually create and connect the player +pub fn play_audio_to_call_direct_internal(call_id: CallId, samples: &[i16]) -> Result<()> { + use super::frame_utils::{create_and_connect_port, PortCallbacks}; + + // Get call's conference port + let call_conf_port = CALL_CONF_PORTS + .get() + .and_then(|p| p.get(&call_id).map(|r| *r)) + .ok_or_else(|| anyhow::anyhow!("No conf_port for call {}", call_id))?; + + // Store samples in the player state BEFORE creating port (get_frame needs them) + // We'll clean up if port creation fails + let guard = unsafe { + let callbacks = PortCallbacks { + get_frame: direct_player_get_frame, + put_frame: super::frame_utils::noop_put_frame, + on_destroy: Some(direct_player_on_destroy), + }; + + // Pre-store samples so get_frame can find them even during pjsua_conf_add_port + // We'll use a temporary key (0) and fix it after we get the actual port pointer + let guard = create_and_connect_port( + &DIRECT_PLAYER_POOL, + b"direct_players\0", + "dplay", + call_id, + 0x4450_4C59, // "DPLY" + callbacks, + call_conf_port, + ); + + match guard { + Ok(guard) => { + // Now store samples with the actual port key + let state = DIRECT_PLAYER_STATE.get_or_init(|| Mutex::new(HashMap::new())); + state.lock().insert(guard.port_key, (samples.to_vec(), 0)); + + tracing::debug!( + "Playing {} samples directly to call {} (player_slot={}, call_port={})", + samples.len(), + call_id, + guard.slot, + call_conf_port + ); + + guard + } + Err(e) => return Err(e), + } + }; + + // Schedule cleanup after playback duration + // The ConfPortGuard handles pjsua_conf_remove_port when dropped + let sample_count = samples.len(); + let duration_ms = (sample_count as u64 * 1000) / CONF_SAMPLE_RATE as u64 + 100; + + std::thread::spawn(move || { + std::thread::sleep(std::time::Duration::from_millis(duration_ms)); + // Drop the guard to remove from conference + // on_destroy callback will clean up DIRECT_PLAYER_STATE + drop(guard); + }); + + Ok(()) +} diff --git a/sipcord-bridge/src/transport/sip/ffi/frame_utils.rs b/sipcord-bridge/src/transport/sip/ffi/frame_utils.rs new file mode 100644 index 0000000..625d0c9 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/frame_utils.rs @@ -0,0 +1,184 @@ +//! Shared frame utilities for pjmedia ports +//! +//! Provides common helpers for filling audio frames and a shared no-op +//! put_frame callback used by ports that only produce audio. + +use super::types::{ + CallId, ConfPort, SendablePool, CONF_CHANNELS, CONF_MASTER_PORT, CONF_SAMPLE_RATE, + SAMPLES_PER_FRAME, +}; +use anyhow::Result; +use parking_lot::Mutex; +use pjsua::*; +use std::sync::OnceLock; + +/// Get the pjmedia_conf pointer from the master port +/// The conference bridge pointer is stored in master_port->port_data.pdata +/// Returns None if master port is not initialized +/// +/// This is public so other modules (direct_player, looping_player) can use it +/// to bypass PJSUA_LOCK when connecting/disconnecting ports. +pub unsafe fn get_conference_bridge() -> Option<*mut pjmedia_conf> { + let port_guard = CONF_MASTER_PORT.get()?; + let master_port = port_guard.lock().0; + if master_port.is_null() { + return None; + } + let conf = (*master_port).port_data.pdata as *mut pjmedia_conf; + if conf.is_null() { + return None; + } + Some(conf) +} + +/// Write audio samples into a pjmedia_frame, padding with silence if fewer +/// than SAMPLES_PER_FRAME samples are provided. +/// +/// # Safety +/// `frame` must be a valid, non-null pointer to a pjmedia_frame with a buffer +/// large enough for SAMPLES_PER_FRAME i16 samples. +pub unsafe fn fill_audio_frame(frame: *mut pjmedia_frame, samples: &[i16]) { + let frame_buf = (*frame).buf as *mut i16; + std::ptr::copy_nonoverlapping(samples.as_ptr(), frame_buf, samples.len()); + // Pad with silence if we got fewer samples than a full frame + if samples.len() < SAMPLES_PER_FRAME { + std::ptr::write_bytes( + frame_buf.add(samples.len()), + 0, + SAMPLES_PER_FRAME - samples.len(), + ); + } + (*frame).size = (SAMPLES_PER_FRAME * 2) as pj_size_t; + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO; +} + +/// Fill a pjmedia_frame with silence. +/// +/// # Safety +/// `frame` must be a valid, non-null pointer to a pjmedia_frame with a buffer +/// large enough for SAMPLES_PER_FRAME i16 samples. +pub unsafe fn fill_silence_frame(frame: *mut pjmedia_frame) { + let frame_buf = (*frame).buf as *mut u8; + std::ptr::write_bytes(frame_buf, 0, SAMPLES_PER_FRAME * 2); + (*frame).size = (SAMPLES_PER_FRAME * 2) as pj_size_t; + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO; +} + +/// No-op put_frame callback for ports that only produce audio. +/// +/// # Safety +/// Called by the pjmedia conference bridge. +pub unsafe extern "C" fn noop_put_frame( + _this_port: *mut pjmedia_port, + _frame: *mut pjmedia_frame, +) -> pj_status_t { + pj_constants__PJ_SUCCESS as pj_status_t +} + +// Conference port guard and creation helper + +/// Callbacks for a custom pjmedia port. +pub struct PortCallbacks { + pub get_frame: unsafe extern "C" fn(*mut pjmedia_port, *mut pjmedia_frame) -> pj_status_t, + pub put_frame: unsafe extern "C" fn(*mut pjmedia_port, *mut pjmedia_frame) -> pj_status_t, + pub on_destroy: Option pj_status_t>, +} + +/// RAII guard for a conference port. Removes port from conference on drop. +pub struct ConfPortGuard { + pub slot: ConfPort, + pub port_key: usize, +} + +impl Drop for ConfPortGuard { + fn drop(&mut self) { + unsafe { + pjsua_conf_remove_port(*self.slot); + } + tracing::debug!( + "ConfPortGuard: removed conf port slot={} (port={:p})", + self.slot, + self.port_key as *const () + ); + } +} + +/// Allocate a pjmedia port, init it, add to conference, and connect to a call's conf port. +/// Returns a `ConfPortGuard` that auto-cleans-up on drop. +/// +/// # Safety +/// Must be called from the audio thread or while holding appropriate locks. +pub unsafe fn create_and_connect_port( + pool: &OnceLock>, + pool_name: &[u8], + name_prefix: &str, + call_id: CallId, + signature: u32, + callbacks: PortCallbacks, + call_conf_port: ConfPort, +) -> Result { + // Get or create the memory pool + let pool = pool.get_or_init(|| { + let p = pjsua_pool_create(pool_name.as_ptr() as *const _, 4096, 4096); + Mutex::new(SendablePool(p)) + }); + let pool_ptr = pool.lock().0; + + // Allocate pjmedia_port structure + let port_size = std::mem::size_of::(); + let port = pj_pool_alloc(pool_ptr, port_size) as *mut pjmedia_port; + if port.is_null() { + anyhow::bail!( + "Failed to allocate {} port for call {}", + name_prefix, + call_id + ); + } + std::ptr::write_bytes(port as *mut u8, 0, port_size); + + // Create port name + let port_name = format!("{}{}", name_prefix, call_id); + let port_name_cstr = std::ffi::CString::new(port_name) + .map_err(|e| anyhow::anyhow!("Invalid port name: {}", e))?; + + // Initialize port info + pjmedia_port_info_init( + &mut (*port).info, + &pj_str(port_name_cstr.as_ptr() as *mut _), + signature, + CONF_SAMPLE_RATE, + CONF_CHANNELS, + 16, + SAMPLES_PER_FRAME as u32, + ); + + // Set callbacks + (*port).get_frame = Some(callbacks.get_frame); + (*port).put_frame = Some(callbacks.put_frame); + (*port).on_destroy = callbacks.on_destroy; + + // Add to conference + let mut player_slot: i32 = 0; + let status = pjsua_conf_add_port(pool_ptr, port, &mut player_slot); + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to add {} port to conf: {}", name_prefix, status); + } + + // Connect player port to the target call's port + let conf = get_conference_bridge(); + let Some(conf) = conf else { + pjsua_conf_remove_port(player_slot); + anyhow::bail!("Failed to get conference bridge for {} port", name_prefix); + }; + + let status = pjmedia_conf_connect_port(conf, player_slot as u32, *call_conf_port as u32, 0); + if status != pj_constants__PJ_SUCCESS as i32 { + pjsua_conf_remove_port(player_slot); + anyhow::bail!("Failed to connect {} port to call: {}", name_prefix, status); + } + + Ok(ConfPortGuard { + slot: ConfPort::new(player_slot), + port_key: port as usize, + }) +} diff --git a/sipcord-bridge/src/transport/sip/ffi/init.rs b/sipcord-bridge/src/transport/sip/ffi/init.rs new file mode 100644 index 0000000..58f771f --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/init.rs @@ -0,0 +1,918 @@ +//! PJSUA initialization and core control functions +//! +//! This module handles: +//! - PJSUA initialization and configuration +//! - TLS transport creation and hot-reload +//! - Shutdown and thread registration + +use super::super::audio_thread::stop_audio_thread; +use std::fmt; + +/// SIP invite session state (Rust wrapper for pjsip_inv_state) +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum InvState { + Null, + Calling, + Incoming, + Early, + Connecting, + Confirmed, + Disconnected, + Unknown(u32), +} + +impl From for InvState { + fn from(state: u32) -> Self { + match state { + x if x == pjsip_inv_state_PJSIP_INV_STATE_NULL => InvState::Null, + x if x == pjsip_inv_state_PJSIP_INV_STATE_CALLING => InvState::Calling, + x if x == pjsip_inv_state_PJSIP_INV_STATE_INCOMING => InvState::Incoming, + x if x == pjsip_inv_state_PJSIP_INV_STATE_EARLY => InvState::Early, + x if x == pjsip_inv_state_PJSIP_INV_STATE_CONNECTING => InvState::Connecting, + x if x == pjsip_inv_state_PJSIP_INV_STATE_CONFIRMED => InvState::Confirmed, + x if x == pjsip_inv_state_PJSIP_INV_STATE_DISCONNECTED => InvState::Disconnected, + x => InvState::Unknown(x), + } + } +} + +impl fmt::Display for InvState { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + InvState::Null => write!(f, "NULL"), + InvState::Calling => write!(f, "CALLING"), + InvState::Incoming => write!(f, "INCOMING"), + InvState::Early => write!(f, "EARLY"), + InvState::Connecting => write!(f, "CONNECTING"), + InvState::Confirmed => write!(f, "CONFIRMED"), + InvState::Disconnected => write!(f, "DISCONNECTED"), + InvState::Unknown(x) => write!(f, "UNKNOWN({})", x), + } + } +} +use super::super::callbacks::{ + on_call_media_state_cb, on_call_rx_reinvite_cb, on_call_state_cb, on_dtmf_digit_cb, + on_incoming_call_cb, +}; +use super::super::nat::{ + on_rx_request_nat_fixup_cb, on_rx_response_nat_fixup_cb, on_tx_request_cb, on_tx_response_cb, +}; +use super::super::register_handler::on_rx_request_cb; +use super::types::*; +use crate::config::{SipConfig, TlsConfig}; +use anyhow::{Context, Result}; +use ipnet::Ipv4Net; +use parking_lot::Mutex; +use pjsua::*; +use std::ffi::CString; +use std::mem::MaybeUninit; +use std::os::raw::{c_char, c_int}; +use std::ptr; +use std::sync::atomic::Ordering; + +/// Known PJSIP error conditions detected from log messages. +/// +/// PJSIP's log callback only provides (level, string) — no structured error codes. +/// We pattern-match known messages to classify them into actionable variants. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum PjsipEvent { + /// All call slots exhausted — new INVITEs are rejected with 486 Busy Here + TooManyCalls, + /// SSL/TLS handshake failed with a remote peer + SslHandshakeError, + /// Failed to send a SIP response + SendResponseFailed, + /// ICE negotiation failed + IceNegotiationFailed, + /// Transport error (TCP/UDP) + TransportError, + /// No matching codec for call + NoMatchingCodec, + /// SIP SUBSCRIBE for an unsupported event package (e.g. presence, dialog) + /// — pjsip responds 489 Bad Event, which is correct; just noisy at ERROR level + BadEventSubscription, + /// Unclassified message — logged at pjsip's original level + Unclassified, +} + +impl PjsipEvent { + /// Try to classify a pjsip log message into a known event. + /// Returns the event variant and optionally an upgraded log level + /// (None = use pjsip's original level). + fn classify(msg: &str) -> (Self, Option) { + // Level overrides: 0=error, 1=error, 2=warn, 3=info + if msg.contains("too many calls") { + (Self::TooManyCalls, Some(0)) + } else if msg.contains("SSL_ERROR_SSL") || msg.contains("SSL_ERROR_SYSCALL") { + (Self::SslHandshakeError, None) + } else if msg.contains("Unable to send") && msg.contains("response") { + (Self::SendResponseFailed, Some(1)) + } else if msg.contains("ICE") && msg.contains("failed") { + (Self::IceNegotiationFailed, None) + } else if msg.contains("Transport") && msg.contains("error") { + (Self::TransportError, Some(1)) + } else if msg.contains("No matching codec") { + (Self::NoMatchingCodec, None) + } else if msg.contains("Unable to create server subscription") { + // SIP clients SUBSCRIBE to presence/dialog after REGISTER — expected and harmless + (Self::BadEventSubscription, Some(4)) + } else { + (Self::Unclassified, None) + } + } + + /// Short tag for structured logging + fn as_str(self) -> &'static str { + match self { + Self::TooManyCalls => "TOO_MANY_CALLS", + Self::SslHandshakeError => "SSL_HANDSHAKE_ERROR", + Self::SendResponseFailed => "SEND_RESPONSE_FAILED", + Self::IceNegotiationFailed => "ICE_NEGOTIATION_FAILED", + Self::TransportError => "TRANSPORT_ERROR", + Self::NoMatchingCodec => "NO_MATCHING_CODEC", + Self::BadEventSubscription => "BAD_EVENT_SUBSCRIBE", + Self::Unclassified => "UNCLASSIFIED", + } + } +} + +/// Extract "IP:PORT" from a PJSIP SSL error message. +/// +/// PJSIP ssl_sock logs include `peer: IP:PORT` at the end of the message. +/// Returns the "IP:PORT" substring, or None if not found. +fn extract_ssl_peer(msg: &str) -> Option<&str> { + let idx = msg.find("peer: ")?; + let rest = &msg[idx + 6..]; + let trimmed = rest.trim(); + if trimmed.is_empty() { + None + } else { + Some(trimmed) + } +} + +/// PJSIP log callback - redirects logs to Rust tracing +/// +/// This function is called by PJSIP for each log message instead of printing to stdout. +/// We map PJSIP log levels to tracing levels, with overrides for known critical messages +/// that pjsip under-reports (e.g. "too many calls" logged at level 2/warn → upgraded to error). +unsafe extern "C" fn pjsip_log_callback(level: c_int, data: *const c_char, _len: c_int) { + if data.is_null() { + return; + } + + let c_str = std::ffi::CStr::from_ptr(data); + let msg = c_str.to_string_lossy(); + let msg = msg.trim_end(); + + let (event, level_override) = PjsipEvent::classify(msg); + let effective_level = level_override.unwrap_or(level as u8); + + if event == PjsipEvent::SslHandshakeError { + // Extract peer IP for structured logging context + let peer = extract_ssl_peer(msg).unwrap_or("unknown"); + tracing::warn!(target: "pjsip", event = "SSL_HANDSHAKE_ERROR", peer = peer, "{}", msg); + return; + } + + if event != PjsipEvent::Unclassified { + let tag = event.as_str(); + match effective_level { + 0 | 1 => tracing::error!(target: "pjsip", event = tag, "{}", msg), + 2 => tracing::warn!(target: "pjsip", event = tag, "{}", msg), + 3 => tracing::info!(target: "pjsip", event = tag, "{}", msg), + 4 => tracing::debug!(target: "pjsip", event = tag, "{}", msg), + _ => tracing::trace!(target: "pjsip", event = tag, "{}", msg), + } + } else { + match effective_level { + 0 | 1 => tracing::error!(target: "pjsip", "{}", msg), + 2 => tracing::warn!(target: "pjsip", "{}", msg), + 3 => tracing::info!(target: "pjsip", "{}", msg), + 4 => tracing::debug!(target: "pjsip", "{}", msg), + _ => tracing::trace!(target: "pjsip", "{}", msg), + } + } +} + +/// Set the global callback handlers +pub fn set_callbacks(handlers: CallbackHandlers) { + let callbacks = CALLBACKS.get_or_init(|| Mutex::new(None)); + *callbacks.lock() = Some(handlers); +} + +/// Initialize pjsua with optional TLS support +pub fn init_pjsua(config: &SipConfig, tls_config: Option<&TlsConfig>) -> Result<()> { + // Initialize public host config for Contact header rewriting on outgoing responses. + // pjsua derives Contact from the TCP connection's local address (private IP), but + // external clients need the public hostname to route BYE back to us. + PUBLIC_HOST_CONFIG.get_or_init(|| { + if !config.public_host.is_empty() { + tracing::info!( + "Public host Contact rewriting enabled: {}:{}", + config.public_host, + config.port + ); + Some((config.public_host.clone(), config.port)) + } else { + None + } + }); + + // Initialize local network config for Contact header and SDP rewriting + LOCAL_NET_CONFIG.get_or_init(|| { + config.local_net.as_ref().and_then(|ln| { + match ln.cidr.parse::() { + Ok(net) => { + tracing::info!( + "Local network rewriting enabled: {} -> {} for CIDR {}, RTP public IP: {:?}", + config.public_host, ln.host, ln.cidr, config.rtp_public_ip + ); + Some((ln.host.clone(), net, config.port, config.rtp_public_ip.clone())) + } + Err(e) => { + tracing::error!("Invalid SIP_LOCAL_CIDR '{}': {}", ln.cidr, e); + None + } + } + }) + }); + + unsafe { + // Create pjsua instance + let status = pjsua_create(); + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to create pjsua: {}", status); + } + + // Disable automatic UDP->TCP switch for large SIP messages. + // pjsip switches to TCP when a request exceeds 1300 bytes, but for + // outbound calls to NATted clients, the client's UDP NAT mapping + // won't accept TCP connections. We must respect the transport the + // client registered with. + { + extern "C" { + static mut pjsip_sip_cfg_var: pjsip_cfg_t; + } + pjsip_sip_cfg_var.endpt.disable_tcp_switch = pj_constants__PJ_TRUE as _; + tracing::info!("Disabled automatic UDP->TCP switch for large SIP messages"); + } + + // Configure pjsua + let mut cfg = MaybeUninit::::uninit(); + pjsua_config_default(cfg.as_mut_ptr()); + let cfg_ptr = cfg.assume_init_mut(); + + // Allow enough concurrent call slots for real calls + spam that's being rejected. + // Compile-time PJSUA_MAX_CALLS is set to 128 in config_site.h. + cfg_ptr.max_calls = 128; + + // Set callbacks + cfg_ptr.cb.on_incoming_call = Some(on_incoming_call_cb); + cfg_ptr.cb.on_call_state = Some(on_call_state_cb); + cfg_ptr.cb.on_call_media_state = Some(on_call_media_state_cb); + cfg_ptr.cb.on_dtmf_digit = Some(on_dtmf_digit_cb); + cfg_ptr.cb.on_call_rx_reinvite = Some(on_call_rx_reinvite_cb); + + // Logging config - redirect PJSIP logs to Rust tracing + let mut log_cfg = MaybeUninit::::uninit(); + pjsua_logging_config_default(log_cfg.as_mut_ptr()); + let log_cfg_ptr = log_cfg.assume_init_mut(); + let configured_level = crate::config::AppConfig::bridge().pjsip_log_level; + tracing::info!("PJSIP log level from config: {}", configured_level); + log_cfg_ptr.level = configured_level as _; + log_cfg_ptr.console_level = configured_level as _; // Must match level — cb is gated by console_level + log_cfg_ptr.cb = Some(pjsip_log_callback); // Our callback replaces default console output + + // Media config + let mut media_cfg = MaybeUninit::::uninit(); + pjsua_media_config_default(media_cfg.as_mut_ptr()); + let media_cfg_ptr = media_cfg.assume_init_mut(); + + // Configure conference bridge for 16kHz mono + // This is the internal sample rate - pjsua will resample from codecs as needed + media_cfg_ptr.clock_rate = CONF_SAMPLE_RATE; + media_cfg_ptr.snd_clock_rate = CONF_SAMPLE_RATE; + media_cfg_ptr.channel_count = CONF_CHANNELS; + media_cfg_ptr.audio_frame_ptime = FRAME_PTIME_MS; + // Set default SDP ptime to match internal frame ptime + // If these differ, there can be timing mismatches + media_cfg_ptr.ptime = FRAME_PTIME_MS; + + // Log the media config + tracing::info!( + "Media config: clock_rate={}, snd_clock_rate={}, audio_frame_ptime={}, ptime={}", + media_cfg_ptr.clock_rate, + media_cfg_ptr.snd_clock_rate, + media_cfg_ptr.audio_frame_ptime, + media_cfg_ptr.ptime + ); + + // Initialize pjsua + let status = pjsua_init(cfg_ptr, log_cfg_ptr, media_cfg_ptr); + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to init pjsua: {}", status); + } + + // Create UDP transport + let mut t_cfg = MaybeUninit::::uninit(); + pjsua_transport_config_default(t_cfg.as_mut_ptr()); + let t_cfg_ptr = t_cfg.assume_init_mut(); + t_cfg_ptr.port = config.port as u32; + + // Set public address if specified - keep CString alive until transport is created + let public_host_cstring = if !config.public_host.is_empty() { + let host = CString::new(config.public_host.as_str()).context("Invalid public host")?; + t_cfg_ptr.public_addr = pj_str(host.as_ptr() as *mut c_char); + Some(host) + } else { + None + }; + + let mut transport_id: c_int = 0; + let status = pjsua_transport_create( + pjsip_transport_type_e_PJSIP_TRANSPORT_UDP, + t_cfg_ptr, + &mut transport_id, + ); + + // CString can be dropped now + drop(public_host_cstring); + + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to create UDP transport: {}", status); + } + + // Create TCP transport on the same port + let mut tcp_cfg = MaybeUninit::::uninit(); + pjsua_transport_config_default(tcp_cfg.as_mut_ptr()); + let tcp_cfg_ptr = tcp_cfg.assume_init_mut(); + tcp_cfg_ptr.port = config.port as u32; + + // Set public address for TCP - keep CString alive + let tcp_public_host_cstring = if !config.public_host.is_empty() { + let host = + CString::new(config.public_host.as_str()).context("Invalid public host for TCP")?; + tcp_cfg_ptr.public_addr = pj_str(host.as_ptr() as *mut c_char); + Some(host) + } else { + None + }; + + let mut tcp_transport_id: c_int = 0; + let status = pjsua_transport_create( + pjsip_transport_type_e_PJSIP_TRANSPORT_TCP, + tcp_cfg_ptr, + &mut tcp_transport_id, + ); + + drop(tcp_public_host_cstring); + + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to create TCP transport: {}", status); + } + + tracing::info!("TCP transport created on port {}", config.port); + + // Create TLS transport if configured (skip gracefully if certs missing) + if let Some(tls) = tls_config { + if !create_tls_transport(tls, &config.public_host)? { + tracing::warn!("TLS transport not created - running without TLS"); + } + } + + // Start pjsua + let status = pjsua_start(); + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to start pjsua: {}", status); + } + + // Configure codec priorities to keep INVITE SDP small. + // Without this, PJSUA offers every compiled codec (~16 entries) plus a + // T.140 text stream, producing an INVITE of ~1750 bytes. UDP packets + // over ~1300 bytes get IP-fragmented and are silently dropped by many + // NAT routers, which completely breaks outbound calls. + // + // Strategy: disable everything, then re-enable only what we need, + // ordered by quality (highest priority = preferred in SDP negotiation). + { + // Disable all audio codecs first + let all = CString::new("*").unwrap(); + pjsua_codec_set_priority(&pj_str(all.as_ptr() as *mut c_char), 0); + + // Re-enable desired codecs (highest priority = preferred in negotiation). + // NOTE: G722 is registered internally at 16000Hz in PJSIP despite the + // RFC 3551 SDP convention of advertising clock_rate=8000. + let codecs: &[(&str, u8)] = &[ + ("opus/48000", 255), // Best quality: adaptive, wideband/fullband + ("G722/16000", 254), // Wideband 16kHz, widely supported + ("AMR/8000", 252), // Adaptive narrowband + ("PCMU/8000", 200), // G.711 mu-law, ubiquitous fallback + ("PCMA/8000", 199), // G.711 A-law, ubiquitous fallback + ("telephone-event", 200), // DTMF support (all sample rates) + ]; + + for (name, priority) in codecs { + let codec_id = CString::new(*name).unwrap(); + let status = + pjsua_codec_set_priority(&pj_str(codec_id.as_ptr() as *mut c_char), *priority); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to set codec priority for {}: {}", name, status); + } + } + + tracing::info!( + "Codec priorities configured: {}", + codecs + .iter() + .map(|(n, p)| format!("{}={}", n, p)) + .collect::>() + .join(", ") + ); + } + + // Register custom module to handle REGISTER requests and Contact header rewriting + // pjsua's high-level API only handles call-related events, but SIP clients + // send REGISTER to register with the server. We intercept these at the PJSIP level. + // We also intercept outgoing responses to rewrite Contact headers for local clients. + static mut REGISTER_MODULE: pjsip_module = pjsip_module { + prev: ptr::null_mut(), + next: ptr::null_mut(), + name: pj_str_t { + ptr: ptr::null_mut(), + slen: 0, + }, + id: -1, + priority: pjsip_module_priority_PJSIP_MOD_PRIORITY_APPLICATION as i32, + load: None, + start: None, + stop: None, + unload: None, + on_rx_request: Some(on_rx_request_cb), + on_rx_response: None, + on_tx_request: Some(on_tx_request_cb), + on_tx_response: Some(on_tx_response_cb), + on_tsx_state: None, + }; + + // Set module name (must be done at runtime since pj_str needs mutable ptr) + static MOD_NAME: &[u8] = b"mod-sipcord\0"; + REGISTER_MODULE.name = pj_str(MOD_NAME.as_ptr() as *mut c_char); + + // Get endpoint and register module + let endpt = pjsua_get_pjsip_endpt(); + if !endpt.is_null() { + let status = pjsip_endpt_register_module(endpt, &raw mut REGISTER_MODULE); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to register REGISTER handler module: {}", status); + } else { + tracing::info!("Registered REGISTER handler module"); + // Store the module pointer so register_handler can create + // UAS transactions for deferred REGISTER responses. + super::super::register_handler::set_register_module_ptr(&raw mut REGISTER_MODULE); + } + } else { + tracing::warn!("Could not get PJSIP endpoint for module registration"); + } + + // Register NAT fixup module for far-end NAT traversal + // This rewrites private IPs in Contact headers and SDP bodies of incoming + // requests (INVITEs from NATted phones) and responses (for outbound calls) + // to the actual public source IP, fixing RTP delivery for phones behind NAT. + // + // Priority 15 = runs BEFORE TSX_LAYER(16). This is critical because the + // TSX layer's on_rx_response matches responses to transactions and then + // synchronously triggers the full dialog + invite session processing chain + // (updating remote target from Contact, SDP negotiation, ACK sending). + // If NAT fixup ran after the TSX layer (as it did at priority 28), the + // dialog would see the original private IPs, causing ACK and RTP to be + // sent to unreachable private addresses. + static mut NAT_FIXUP_MODULE: pjsip_module = pjsip_module { + prev: ptr::null_mut(), + next: ptr::null_mut(), + name: pj_str_t { + ptr: ptr::null_mut(), + slen: 0, + }, + id: -1, + priority: 15, // Just before TSX_LAYER(16), after TRANSPORT_LAYER(8) + load: None, + start: None, + stop: None, + unload: None, + on_rx_request: Some(on_rx_request_nat_fixup_cb), + on_rx_response: Some(on_rx_response_nat_fixup_cb), + on_tx_request: None, + on_tx_response: None, + on_tsx_state: None, + }; + + static NAT_FIXUP_MOD_NAME: &[u8] = b"mod-nat-fixup\0"; + NAT_FIXUP_MODULE.name = pj_str(NAT_FIXUP_MOD_NAME.as_ptr() as *mut c_char); + + if !endpt.is_null() { + let status = pjsip_endpt_register_module(endpt, &raw mut NAT_FIXUP_MODULE); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to register NAT fixup module: {}", status); + } else { + tracing::info!("Registered NAT fixup module (priority 15, before TSX layer)"); + } + } + + // Disable sound device and get the conference master port + // This allows us to manually control audio I/O + let master_port = pjsua_set_no_snd_dev(); + if master_port.is_null() { + anyhow::bail!("Failed to set null sound device"); + } + + // Verify the master port's actual sample rate + let master_port_info = &(*master_port).info; + let aud_fmt = &master_port_info.fmt.det.aud; + let actual_clock_rate = aud_fmt.clock_rate; + let actual_channel_count = aud_fmt.channel_count; + let actual_frame_time_usec = aud_fmt.frame_time_usec; + let actual_bits_per_sample = aud_fmt.bits_per_sample; + // Calculate samples per frame from frame time + let actual_samples_per_frame = (actual_clock_rate * actual_frame_time_usec) / 1_000_000; + + tracing::info!( + "Master port ACTUAL config: clock_rate={}, channels={}, frame_time={}us, bits={}, samples_per_frame={}", + actual_clock_rate, actual_channel_count, actual_frame_time_usec, actual_bits_per_sample, actual_samples_per_frame + ); + + // CRITICAL: Verify the conference bridge is actually at our configured rate + if actual_clock_rate != CONF_SAMPLE_RATE { + tracing::error!( + "SAMPLE RATE MISMATCH! Requested {}Hz but got {}Hz - audio will play at wrong speed!", + CONF_SAMPLE_RATE, actual_clock_rate + ); + } + + // Store the master port for audio thread access + let conf_port = CONF_MASTER_PORT.get_or_init(|| Mutex::new(SendablePort(ptr::null_mut()))); + conf_port.lock().0 = master_port; + + tracing::info!( + "Conference bridge configured: {}Hz, {} channel(s), {}ms frames ({} samples/frame)", + CONF_SAMPLE_RATE, + CONF_CHANNELS, + FRAME_PTIME_MS, + SAMPLES_PER_FRAME + ); + + // Create a local account for receiving calls + let mut acc_cfg = MaybeUninit::::uninit(); + pjsua_acc_config_default(acc_cfg.as_mut_ptr()); + let acc_cfg_ptr = acc_cfg.assume_init_mut(); + + // Local account ID - keep CString alive until account is added + let local_uri = CString::new(format!("sip:sipcord@{}", config.public_host)) + .context("Invalid local URI")?; + acc_cfg_ptr.id = pj_str(local_uri.as_ptr() as *mut c_char); + + // Enable incoming calls without registration + acc_cfg_ptr.register_on_acc_add = pj_constants__PJ_FALSE as i32; + + // Disable SIP session timers (RFC 4028). The bridge has its own RTP + // inactivity timeouts, and session timer UPDATEs break when the remote + // side is behind NAT (the UPDATE targets the Contact URI which may be + // unreachable, causing retransmit storms and eventual 408 disconnect). + acc_cfg_ptr.use_timer = pjsua_sip_timer_use_PJSUA_SIP_TIMER_INACTIVE; + + // Configure RTP port range for media + // port is the starting port, port_range is how many consecutive ports to try + acc_cfg_ptr.rtp_cfg.port = config.rtp_port_start as u32; + acc_cfg_ptr.rtp_cfg.port_range = (config.rtp_port_end - config.rtp_port_start) as u32; + + // Set public IP for RTP if configured - this is advertised in SDP c= line + // Without this, pjsua uses the local interface IP which won't work for NAT + let rtp_public_ip_cstring = if let Some(ref public_ip) = config.rtp_public_ip { + let ip_cstr = CString::new(public_ip.as_str()).context("Invalid RTP public IP")?; + acc_cfg_ptr.rtp_cfg.public_addr = pj_str(ip_cstr.as_ptr() as *mut c_char); + tracing::info!( + "Account RTP config: port={}, port_range={} (ports {}-{}), public_addr={}", + acc_cfg_ptr.rtp_cfg.port, + acc_cfg_ptr.rtp_cfg.port_range, + config.rtp_port_start, + config.rtp_port_end, + public_ip + ); + Some(ip_cstr) + } else { + tracing::warn!( + "RTP_PUBLIC_IP not set - SDP will advertise local IP, external calls won't work!" + ); + tracing::info!( + "Account RTP config: port={}, port_range={} (ports {}-{})", + acc_cfg_ptr.rtp_cfg.port, + acc_cfg_ptr.rtp_cfg.port_range, + config.rtp_port_start, + config.rtp_port_end + ); + None + }; + + let mut acc_id: pjsua_acc_id = 0; + let status = pjsua_acc_add(acc_cfg_ptr, pj_constants__PJ_TRUE as i32, &mut acc_id); + + // CStrings can be dropped now + drop(local_uri); + drop(rtp_public_ip_cstring); + + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to add account: {}", status); + } + + Ok(()) + } +} + +/// Create TLS transport for SIP-over-TLS +/// Returns Ok(true) if created, Ok(false) if skipped due to missing certs +fn create_tls_transport(tls_config: &TlsConfig, public_host: &str) -> Result { + // Check cert files exist before doing anything + let cert_path = tls_config.cert_path(); + let key_path = tls_config.key_path(); + + if !cert_path.exists() { + tracing::warn!( + "TLS certificate not found: {} - TLS disabled until cert is obtained", + cert_path.display() + ); + return Ok(false); + } + if !key_path.exists() { + tracing::warn!( + "TLS private key not found: {} - TLS disabled until cert is obtained", + key_path.display() + ); + return Ok(false); + } + + tracing::info!("TLS cert path: {}", cert_path.display()); + tracing::info!("TLS key path: {}", key_path.display()); + + unsafe { + let mut t_cfg = MaybeUninit::::uninit(); + pjsua_transport_config_default(t_cfg.as_mut_ptr()); + let t_cfg_ptr = t_cfg.assume_init_mut(); + + // Set TLS port + t_cfg_ptr.port = tls_config.port as u32; + + // Set public address + let public_host_cstring = CString::new(public_host).context("Invalid public host")?; + t_cfg_ptr.public_addr = pj_str(public_host_cstring.as_ptr() as *mut c_char); + + let cert_path_cstring = + CString::new(cert_path.to_str().unwrap()).context("Invalid cert path")?; + let key_path_cstring = + CString::new(key_path.to_str().unwrap()).context("Invalid key path")?; + + // Set certificate and key + t_cfg_ptr.tls_setting.cert_file = pj_str(cert_path_cstring.as_ptr() as *mut c_char); + t_cfg_ptr.tls_setting.privkey_file = pj_str(key_path_cstring.as_ptr() as *mut c_char); + + // Also set CA list to the cert file (contains the chain) so pjsip sends full chain + t_cfg_ptr.tls_setting.ca_list_file = pj_str(cert_path_cstring.as_ptr() as *mut c_char); + + // Create TLS transport + let mut transport_id: c_int = 0; + let status = pjsua_transport_create( + pjsip_transport_type_e_PJSIP_TRANSPORT_TLS, + t_cfg_ptr, + &mut transport_id, + ); + + // CStrings can be dropped now + drop(public_host_cstring); + drop(cert_path_cstring); + drop(key_path_cstring); + + if status != pj_constants__PJ_SUCCESS as i32 { + anyhow::bail!("Failed to create TLS transport: {}", status); + } + + // Store transport ID for potential reload + let tls_id = TLS_TRANSPORT_ID.get_or_init(|| Mutex::new(None)); + *tls_id.lock() = Some(transport_id); + + tracing::info!( + "TLS transport created on port {} (transport_id={})", + tls_config.port, + transport_id + ); + + Ok(true) + } +} + +/// Reload TLS transport with updated certificates, or create it if it didn't exist +/// +/// This should only be called when there are no active calls. +/// Returns Ok(true) if reload/create was successful, Ok(false) if skipped (certs missing or calls active). +pub fn reload_tls_transport(tls_config: &TlsConfig, public_host: &str) -> Result { + // Check active calls - don't reload if calls are active + let active_calls = COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().len()) + .unwrap_or(0); + if active_calls > 0 { + tracing::info!("Skipping TLS reload: {} active calls", active_calls); + return Ok(false); + } + + // Check if we have an existing TLS transport to close first + let tls_id_lock = TLS_TRANSPORT_ID.get_or_init(|| Mutex::new(None)); + let old_transport_id = { + let guard = tls_id_lock.lock(); + *guard + }; + + if let Some(old_id) = old_transport_id { + tracing::info!("Closing existing TLS transport (id={})", old_id); + + unsafe { + // Close old transport + let status = pjsua_transport_close(old_id, pj_constants__PJ_FALSE as i32); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to close old TLS transport: {}", status); + // Continue anyway - we'll try to create a new one + } + } + + // Clear the stored transport ID + { + let mut guard = tls_id_lock.lock(); + *guard = None; + } + } else { + tracing::info!("No existing TLS transport - creating new one"); + } + + // Create new TLS transport (returns false if certs missing) + let created = create_tls_transport(tls_config, public_host)?; + + if created { + // Clear reload pending flag + TLS_RELOAD_PENDING.store(false, Ordering::SeqCst); + tracing::info!("TLS transport created/reloaded successfully"); + } + + Ok(created) +} + +/// Set TLS reload pending flag +pub fn set_tls_reload_pending(pending: bool) { + TLS_RELOAD_PENDING.store(pending, Ordering::SeqCst); +} + +/// Get the count of active media calls +pub fn active_media_call_count() -> usize { + COUNTED_CALL_IDS + .get() + .map(|ids| ids.lock().len()) + .unwrap_or(0) +} + +/// Process pjsua events (call from event loop) +pub fn process_pjsua_events(timeout_ms: u32) -> Result<()> { + unsafe { + pj_thread_sleep(timeout_ms); + } + Ok(()) +} + +/// Answer an incoming call with 200 OK +/// +/// This calls pjsua_call_answer directly. We previously queued this to the audio +/// thread to avoid deadlocks, but the actual deadlock was with pjsua_conf_connect +/// (now fixed by using pjmedia_conf_connect_port). Calling answer from the SIP +/// command thread is safe and avoids blocking the audio thread. +pub fn answer_call(call_id: CallId) { + unsafe { + // Get call info to check state before answering + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) == pj_constants__PJ_SUCCESS as i32 { + let ci = ci.assume_init(); + let state = InvState::from(ci.state); + tracing::info!( + "Answering call {} with 200 OK (current_state={}, media_status={})", + call_id, + state, + ci.media_status + ); + } else { + tracing::info!( + "Answering call {} with 200 OK (couldn't get call info)", + call_id + ); + } + + // Call directly - this is safe now that we use pjmedia_conf_connect_port + // instead of pjsua_conf_connect in the audio thread + let status = pjsua_call_answer(*call_id, 200, ptr::null(), ptr::null()); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to answer call {}: status={}", call_id, status); + } else { + tracing::info!("Call {} answered with 200 OK successfully", call_id); + } + } +} + +/// Send 183 Session Progress (establishes early media for connecting sound) +/// +/// This sends SDP to the caller, allowing them to hear audio before the call is +/// fully answered with 200 OK. Used to play the "connecting" sound while we +/// wait for Discord to connect. +pub fn send_183_session_progress(call_id: CallId) { + unsafe { + // Get call info to check state before sending 183 + let mut ci = MaybeUninit::::uninit(); + if pjsua_call_get_info(*call_id, ci.as_mut_ptr()) == pj_constants__PJ_SUCCESS as i32 { + let ci = ci.assume_init(); + let state = InvState::from(ci.state); + tracing::info!( + "Sending 183 Session Progress for call {} (current_state={}, media_status={})", + call_id, + state, + ci.media_status + ); + } else { + tracing::info!( + "Sending 183 Session Progress for call {} (couldn't get call info)", + call_id + ); + } + + // Create reason string + let reason = CString::new("Session Progress").unwrap(); + let reason_pj = pj_str(reason.as_ptr() as *mut c_char); + + let status = pjsua_call_answer(*call_id, 183, &reason_pj, ptr::null()); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to send 183 for call {}: status={}", call_id, status); + } else { + tracing::info!("Call {} sent 183 Session Progress successfully", call_id); + } + } +} + +/// Hangup a call +pub fn hangup_call(call_id: CallId) { + unsafe { + pjsua_call_hangup(*call_id, 0, ptr::null(), ptr::null()); + } +} + +/// Shutdown pjsua and clean up resources +pub fn shutdown_pjsua() { + tracing::info!("Shutting down pjsua..."); + + // Stop and join audio thread first (must complete before pjsua_destroy) + stop_audio_thread(); + + unsafe { + // Destroy pjsua + tracing::info!("Calling pjsua_destroy..."); + pjsua_destroy(); + } + + tracing::info!("pjsua shutdown complete"); +} + +/// Register the current thread with PJLIB so it can safely call PJSUA functions. +/// +/// Must be called once per thread before any PJSUA calls (except from the main thread +/// that called pjsua_create, which is already registered). +/// +/// Returns true if registration succeeded (or thread was already registered). +pub fn register_thread_with_pjlib(thread_name: &str) -> bool { + unsafe { + // Check if already registered + if pj_thread_is_registered() == pj_constants__PJ_TRUE as i32 { + return true; + } + + // Thread descriptor must live for the lifetime of the thread. + // Using a thread-local static to ensure it stays alive. + thread_local! { + static THREAD_DESC: std::cell::UnsafeCell = + const { std::cell::UnsafeCell::new([0; 64]) }; + } + + THREAD_DESC.with(|desc| { + let name = CString::new(thread_name).unwrap_or_default(); + let mut thread_handle: *mut pj_thread_t = std::ptr::null_mut(); + + let status = pj_thread_register( + name.as_ptr() as *mut c_char, + (*desc.get()).as_mut_ptr(), + &mut thread_handle, + ); + + status == pj_constants__PJ_SUCCESS as i32 + }) + } +} diff --git a/sipcord-bridge/src/transport/sip/ffi/looping_player.rs b/sipcord-bridge/src/transport/sip/ffi/looping_player.rs new file mode 100644 index 0000000..65631a6 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/looping_player.rs @@ -0,0 +1,227 @@ +//! Looping audio player for early media +//! +//! Provides a looping player that plays audio repeatedly until stopped. +//! Used for the "connecting" sound during call setup (183 Session Progress). + +use super::types::*; +use anyhow::Result; +use parking_lot::Mutex; +use pjsua::*; +use std::collections::HashMap; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::OnceLock; + +/// Global state for looping players: call_id -> LoopingPlayerState +pub static LOOPING_PLAYERS: OnceLock>> = OnceLock::new(); + +/// Memory pool for looping player ports +pub static LOOPING_PLAYER_POOL: OnceLock> = OnceLock::new(); + +/// Port key -> (samples, position, is_active) mapping for get_frame callback +pub static LOOPING_PLAYER_DATA: OnceLock>> = + OnceLock::new(); + +/// Data needed by the get_frame callback +pub struct LoopingPlayerData { + pub samples: Vec, + pub position: usize, + pub is_active: AtomicBool, +} + +/// State for a looping player +pub struct LoopingPlayerState { + /// Conference slot for this player + pub conf_slot: ConfPort, + /// Port pointer (for cleanup) + pub port_key: usize, +} + +/// Custom get_frame callback for looping player ports +/// Returns samples from the player's buffer, looping back to start when reaching end +pub unsafe extern "C" fn looping_player_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + use std::sync::atomic::{AtomicU64, Ordering as AtomicOrdering}; + + static GET_FRAME_CALL_COUNT: AtomicU64 = AtomicU64::new(0); + let call_count = GET_FRAME_CALL_COUNT.fetch_add(1, AtomicOrdering::Relaxed); + + // Log first 10 calls to confirm this callback is being invoked + if call_count < 10 { + tracing::trace!( + "looping_player_get_frame called (call #{}, port={:p})", + call_count, + this_port + ); + } else if call_count == 10 { + tracing::trace!("looping_player_get_frame: suppressing further per-call logs"); + } + + if this_port.is_null() || frame.is_null() { + return -1; + } + + let port_key = this_port as usize; + + // Get samples from the player's buffer and fill frame directly (no intermediate Vec) + { + let data = LOOPING_PLAYER_DATA.get_or_init(|| Mutex::new(HashMap::new())); + let mut data = data.lock(); + + if let Some(player_data) = data.get_mut(&port_key) { + if player_data.is_active.load(Ordering::SeqCst) && !player_data.samples.is_empty() { + let pos = player_data.position; + let end = (pos + SAMPLES_PER_FRAME).min(player_data.samples.len()); + super::frame_utils::fill_audio_frame(frame, &player_data.samples[pos..end]); + + // Advance position, loop back if at end + player_data.position = if end >= player_data.samples.len() { + 0 + } else { + end + }; + } else { + super::frame_utils::fill_silence_frame(frame); + } + } else { + super::frame_utils::fill_silence_frame(frame); + } + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Custom on_destroy callback for looping player ports +pub unsafe extern "C" fn looping_player_on_destroy(this_port: *mut pjmedia_port) -> pj_status_t { + if !this_port.is_null() { + let port_key = this_port as usize; + if let Some(data) = LOOPING_PLAYER_DATA.get() { + data.lock().remove(&port_key); + } + tracing::debug!("Looping player port destroyed: {:p}", this_port); + } + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Start a looping player for a call +/// +/// Creates a pjmedia_port that loops the given samples and connects it to the call. +/// The loop continues until stop_loop is called. +pub fn start_loop(call_id: CallId, samples: Vec) -> Result<()> { + use super::frame_utils::{create_and_connect_port, PortCallbacks}; + + // Check if already looping for this call + { + let players = LOOPING_PLAYERS.get_or_init(|| Mutex::new(HashMap::new())); + if players.lock().contains_key(&call_id) { + tracing::warn!("Looping player already exists for call {}", call_id); + return Ok(()); + } + } + + // Get call's conference port + let call_conf_port = CALL_CONF_PORTS + .get() + .and_then(|p| p.get(&call_id).map(|r| *r)) + .ok_or_else(|| { + anyhow::anyhow!("No conf_port for call {} - media not ready yet", call_id) + })?; + + let guard = unsafe { + let callbacks = PortCallbacks { + get_frame: looping_player_get_frame, + put_frame: super::frame_utils::noop_put_frame, + on_destroy: Some(looping_player_on_destroy), + }; + + let guard = create_and_connect_port( + &LOOPING_PLAYER_POOL, + b"looping_players\0", + "loop", + call_id, + 0x4C4F_4F50, // "LOOP" + callbacks, + call_conf_port, + )?; + + // Store samples in the player data with the actual port key + { + let data = LOOPING_PLAYER_DATA.get_or_init(|| Mutex::new(HashMap::new())); + data.lock().insert( + guard.port_key, + LoopingPlayerData { + samples, + position: 0, + is_active: AtomicBool::new(true), + }, + ); + } + + tracing::debug!( + "Started looping player for call {} (player_slot={}, call_port={})", + call_id, + guard.slot, + call_conf_port + ); + + guard + }; + + // Store player state (we manually manage the guard via stop_loop) + let players = LOOPING_PLAYERS.get_or_init(|| Mutex::new(HashMap::new())); + players.lock().insert( + call_id, + LoopingPlayerState { + conf_slot: guard.slot, + port_key: guard.port_key, + }, + ); + + // Forget the guard - stop_loop will handle cleanup manually + // (looping player needs explicit stop, not drop-based cleanup) + std::mem::forget(guard); + + Ok(()) +} + +/// Stop and clean up looping player for a call +pub fn stop_loop(call_id: CallId) { + let state = { + let players = LOOPING_PLAYERS.get_or_init(|| Mutex::new(HashMap::new())); + players.lock().remove(&call_id) + }; + + if let Some(state) = state { + // Mark as inactive (get_frame will return silence) + if let Some(data) = LOOPING_PLAYER_DATA.get() { + if let Some(player_data) = data.lock().get(&state.port_key) { + player_data.is_active.store(false, Ordering::SeqCst); + } + } + + // Remove from conference + tracing::trace!( + "stop_loop: BEFORE pjsua_conf_remove_port({}) for call {} [thread: {:?}]", + state.conf_slot, + call_id, + std::thread::current().id() + ); + unsafe { + pjsua_conf_remove_port(*state.conf_slot); + } + tracing::trace!( + "stop_loop: AFTER pjsua_conf_remove_port({}) for call {}", + state.conf_slot, + call_id + ); + + tracing::debug!( + "Stopped looping player for call {} (slot={})", + call_id, + state.conf_slot + ); + } else { + tracing::debug!("No looping player to stop for call {}", call_id); + } +} diff --git a/sipcord-bridge/src/transport/sip/ffi/mod.rs b/sipcord-bridge/src/transport/sip/ffi/mod.rs new file mode 100644 index 0000000..27473bc --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/mod.rs @@ -0,0 +1,31 @@ +//! Low-level pjsua FFI wrapper +//! +//! This module provides safe(r) Rust wrappers around the pjsua C library. +//! Pure FFI code only — application-level logic lives in the parent `sip` module. +//! +//! ## Module Structure +//! +//! - `types` - Constants, statics, wrapper types, DigestAuthParams, CallbackHandlers +//! - `utils` - String conversion utilities +//! - `init` - PJSUA initialization, TLS transport, shutdown +//! - `direct_player` - Direct player port for join sounds +//! - `streaming_player` - Streaming player for large files +//! - `looping_player` - Looping player for early media +//! - `test_tone` - Test tone generator (440Hz sine wave) +//! - `frame_utils` - Shared frame helpers and conference port guard + +// pub(super) so parent sip/ modules can access internal submodules directly +pub(super) mod direct_player; +pub(crate) mod frame_utils; +pub(super) mod init; +pub(super) mod looping_player; +pub(super) mod streaming_player; +pub(super) mod test_tone; +pub mod types; +pub(super) mod utils; + +// Re-export public API for external consumers (crate::transport::sip::*) +pub use direct_player::*; +pub use init::*; +pub use looping_player::*; +pub use types::*; diff --git a/sipcord-bridge/src/transport/sip/ffi/streaming_player.rs b/sipcord-bridge/src/transport/sip/ffi/streaming_player.rs new file mode 100644 index 0000000..4eb8c09 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/streaming_player.rs @@ -0,0 +1,261 @@ +//! Streaming audio player port for large files +//! +//! This module provides a PJSUA conference port that streams audio from a FLAC file +//! to a specific call. Unlike direct_player (which buffers all samples in memory), +//! this reads from disk on-demand for large files (e.g., easter egg audio). +//! +//! ## Design: Pull Model +//! +//! The streaming player uses a "pull" model where PJSUA's conference bridge calls +//! `streaming_get_frame` when it needs audio samples. This ensures precise timing +//! controlled by the audio thread's deadline-based scheduler, avoiding the timing +//! drift issues of tokio::sleep-based "push" models. +//! +//! ## Hangup Detection +//! +//! The `streaming_get_frame` callback checks if the call still exists in +//! `CALL_CONF_PORTS`. If the call has ended, it marks the player as finished +//! and returns silence. This handles mid-stream hangups cleanly. + +use super::types::*; +use crate::services::sound::StreamingPlayer; +use anyhow::Result; +use parking_lot::Mutex; +use pjsua::*; +use std::collections::HashMap; +use std::path::Path; +use std::sync::OnceLock; + +/// Global state for streaming players: port_ptr -> StreamingPlayerState +pub static STREAMING_PLAYER_STATE: OnceLock>> = + OnceLock::new(); + +/// Memory pool for streaming player ports +pub static STREAMING_PLAYER_POOL: OnceLock> = OnceLock::new(); + +/// State for a streaming player port +pub struct StreamingPlayerState { + /// The file-backed streaming player + pub player: StreamingPlayer, + /// Call ID (for hangup detection) + pub call_id: CallId, + /// Whether playback is finished (EOF or call ended) + pub finished: bool, + /// Whether to hangup when playback completes + pub hangup_on_complete: bool, +} + +/// Custom get_frame callback for streaming player ports +/// +/// This is called by the PJSUA conference bridge when it needs audio samples. +/// The timing is controlled by the audio thread's deadline-based scheduler, +/// ensuring precise 20ms frame intervals. +pub unsafe extern "C" fn streaming_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + if this_port.is_null() || frame.is_null() { + return -1; // PJ_EINVAL + } + + let port_key = this_port as usize; + + // Get samples from the streaming player + let samples = { + let state = STREAMING_PLAYER_STATE.get_or_init(|| Mutex::new(HashMap::new())); + let mut state = state.lock(); + + if let Some(player_state) = state.get_mut(&port_key) { + // Check if call still exists (hangup detection) + if !player_state.finished { + let call_exists = CALL_CONF_PORTS + .get() + .map(|p| p.contains_key(&player_state.call_id)) + .unwrap_or(false); + + if !call_exists { + tracing::debug!( + "Call {} ended, stopping streaming (port {:p})", + player_state.call_id, + this_port + ); + player_state.finished = true; + } + } + + if player_state.finished { + // Already finished - return silence + Vec::new() + } else { + // Try to get the next frame from the streaming player + match player_state.player.get_frame(SAMPLES_PER_FRAME) { + Some(samples) => { + // Check if this was the last frame + if player_state.player.is_finished() { + player_state.finished = true; + tracing::debug!( + "Streaming playback finished for call {} (EOF)", + player_state.call_id + ); + } + samples + } + None => { + // No more samples - mark finished + player_state.finished = true; + tracing::debug!( + "Streaming playback finished for call {} (no more samples)", + player_state.call_id + ); + Vec::new() + } + } + } + } else { + Vec::new() + } + }; + + // Fill frame buffer + if !samples.is_empty() { + super::frame_utils::fill_audio_frame(frame, &samples); + } else { + super::frame_utils::fill_silence_frame(frame); + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Custom on_destroy callback for streaming player ports +pub unsafe extern "C" fn streaming_on_destroy(this_port: *mut pjmedia_port) -> pj_status_t { + if !this_port.is_null() { + let port_key = this_port as usize; + if let Some(state) = STREAMING_PLAYER_STATE.get() { + state.lock().remove(&port_key); + } + tracing::debug!("Streaming player port destroyed: {:p}", this_port); + } + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Start streaming audio from a file to a call +/// +/// This creates a PJSUA conference port backed by a StreamingPlayer and connects +/// it to the specified call. The audio thread's conference bridge will call +/// `streaming_get_frame` every 20ms to pull samples. +/// +/// # Arguments +/// * `call_id` - The call to stream audio to +/// * `path` - Path to the FLAC file +/// * `hangup_on_complete` - Whether to hangup the call when playback finishes +pub fn start_streaming_to_call( + call_id: CallId, + path: &Path, + hangup_on_complete: bool, +) -> Result<()> { + use super::frame_utils::{create_and_connect_port, PortCallbacks}; + + // Create the streaming player + let player = StreamingPlayer::new(path)?; + + // Get call's conference port + let call_conf_port = CALL_CONF_PORTS + .get() + .and_then(|p| p.get(&call_id).map(|r| *r)) + .ok_or_else(|| { + anyhow::anyhow!("No conf_port for call {} - media not ready yet", call_id) + })?; + + let guard = unsafe { + let callbacks = PortCallbacks { + get_frame: streaming_get_frame, + put_frame: super::frame_utils::noop_put_frame, + on_destroy: Some(streaming_on_destroy), + }; + + let guard = create_and_connect_port( + &STREAMING_PLAYER_POOL, + b"streaming_players\0", + "strm", + call_id, + 0x5354_524D, // "STRM" + callbacks, + call_conf_port, + )?; + + // Store player state with the actual port key + { + let state = STREAMING_PLAYER_STATE.get_or_init(|| Mutex::new(HashMap::new())); + state.lock().insert( + guard.port_key, + StreamingPlayerState { + player, + call_id, + finished: false, + hangup_on_complete, + }, + ); + } + + tracing::info!( + "Started streaming {} to call {} (player_slot={}, call_port={})", + path.display(), + call_id, + guard.slot, + call_conf_port + ); + + guard + }; + + let port_key = guard.port_key; + + // Spawn a cleanup thread that watches for completion + // The ConfPortGuard handles pjsua_conf_remove_port when dropped + std::thread::spawn(move || { + loop { + std::thread::sleep(std::time::Duration::from_millis(100)); + + let (finished, hangup, call_id) = { + let state = STREAMING_PLAYER_STATE.get_or_init(|| Mutex::new(HashMap::new())); + let state = state.lock(); + + if let Some(player_state) = state.get(&port_key) { + ( + player_state.finished, + player_state.hangup_on_complete, + player_state.call_id, + ) + } else { + // State already removed - we're done + break; + } + }; + + if finished { + // Small delay to ensure last frame is sent + std::thread::sleep(std::time::Duration::from_millis(50)); + + // Drop guard to remove from conference + // on_destroy callback will clean up STREAMING_PLAYER_STATE + drop(guard); + + tracing::debug!( + "Cleaned up streaming player (port={:p})", + port_key as *const () + ); + + // Hangup if requested + if hangup { + tracing::info!("Hanging up call {} after streaming playback", call_id); + use super::types::queue_pjsua_op; + queue_pjsua_op(PendingPjsuaOp::Hangup { call_id }); + } + + break; + } + } + }); + + Ok(()) +} diff --git a/sipcord-bridge/src/transport/sip/ffi/test_tone.rs b/sipcord-bridge/src/transport/sip/ffi/test_tone.rs new file mode 100644 index 0000000..3c2f398 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/test_tone.rs @@ -0,0 +1,220 @@ +//! Test tone player for diagnostic audio +//! +//! Provides a 440Hz sine wave generator that plays to a specific call +//! until the caller hangs up. Used for audio pipeline testing. + +use super::streaming_player::STREAMING_PLAYER_POOL; +use super::types::*; +use anyhow::Result; +use parking_lot::Mutex; +use pjsua::*; +use std::collections::HashMap; +use std::sync::OnceLock; + +/// Precomputed 440Hz tone lookup table (one exact period = 400 samples at 16kHz) +/// gcd(16000, 440) = 40, so period = 16000/40 = 400 samples +static TONE_LUT: OnceLock> = OnceLock::new(); + +fn tone_lut() -> &'static [i16] { + TONE_LUT.get_or_init(|| { + (0..400) + .map(|i| { + let t = i as f64 / CONF_SAMPLE_RATE as f64; + (f64::sin(2.0 * std::f64::consts::PI * 440.0 * t) * 16000.0) as i16 + }) + .collect() + }) +} + +/// Global state for test tone players: port_ptr -> TestToneState +pub static TEST_TONE_STATE: OnceLock>> = OnceLock::new(); + +/// State for a test tone player port +pub struct TestToneState { + /// Call ID (for hangup detection) + pub call_id: CallId, + /// Current phase of the sine wave (in samples) + pub phase: u64, + /// Whether playback is finished (call ended) + pub finished: bool, +} + +/// Custom get_frame callback for test tone player ports +/// +/// Generates a 440Hz sine wave until the call ends. +pub unsafe extern "C" fn test_tone_get_frame( + this_port: *mut pjmedia_port, + frame: *mut pjmedia_frame, +) -> pj_status_t { + if this_port.is_null() || frame.is_null() { + return -1; // PJ_EINVAL + } + + let port_key = this_port as usize; + + // Get samples from precomputed LUT and fill frame directly + { + let state = TEST_TONE_STATE.get_or_init(|| Mutex::new(HashMap::new())); + let mut state = state.lock(); + + if let Some(tone_state) = state.get_mut(&port_key) { + // Check if call still exists (hangup detection) + if !tone_state.finished { + let call_exists = CALL_CONF_PORTS + .get() + .map(|p| p.contains_key(&tone_state.call_id)) + .unwrap_or(false); + + if !call_exists { + tracing::debug!( + "Call {} ended, stopping test tone (port {:p})", + tone_state.call_id, + this_port + ); + tone_state.finished = true; + } + } + + if tone_state.finished { + super::frame_utils::fill_silence_frame(frame); + } else { + // Copy from precomputed LUT with wraparound (two memcpy calls max) + let lut = tone_lut(); + let lut_len = lut.len(); + let phase = (tone_state.phase as usize) % lut_len; + tone_state.phase += SAMPLES_PER_FRAME as u64; + + let first_chunk = (lut_len - phase).min(SAMPLES_PER_FRAME); + let frame_buf = (*frame).buf as *mut i16; + std::ptr::copy_nonoverlapping( + lut[phase..phase + first_chunk].as_ptr(), + frame_buf, + first_chunk, + ); + + if first_chunk < SAMPLES_PER_FRAME { + let remaining = SAMPLES_PER_FRAME - first_chunk; + std::ptr::copy_nonoverlapping( + lut.as_ptr(), + frame_buf.add(first_chunk), + remaining, + ); + } + + (*frame).size = (SAMPLES_PER_FRAME * 2) as pj_size_t; + (*frame).type_ = pjmedia_frame_type_PJMEDIA_FRAME_TYPE_AUDIO; + } + } else { + super::frame_utils::fill_silence_frame(frame); + } + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Custom on_destroy callback for test tone player ports +pub unsafe extern "C" fn test_tone_on_destroy(this_port: *mut pjmedia_port) -> pj_status_t { + if !this_port.is_null() { + let port_key = this_port as usize; + if let Some(state) = TEST_TONE_STATE.get() { + state.lock().remove(&port_key); + } + tracing::debug!("Test tone player port destroyed: {:p}", this_port); + } + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Start playing a 440Hz test tone to a call +/// +/// The tone plays indefinitely until the caller hangs up. No automatic hangup. +pub fn start_test_tone_to_call(call_id: CallId) -> Result<()> { + use super::frame_utils::{create_and_connect_port, PortCallbacks}; + + // Get call's conference port + let call_conf_port = CALL_CONF_PORTS + .get() + .and_then(|p| p.get(&call_id).map(|r| *r)) + .ok_or_else(|| { + anyhow::anyhow!("No conf_port for call {} - media not ready yet", call_id) + })?; + + let guard = unsafe { + let callbacks = PortCallbacks { + get_frame: test_tone_get_frame, + put_frame: super::frame_utils::noop_put_frame, + on_destroy: Some(test_tone_on_destroy), + }; + + let guard = create_and_connect_port( + &STREAMING_PLAYER_POOL, + b"streaming_players\0", + "tone", + call_id, + 0x544F_4E45, // "TONE" + callbacks, + call_conf_port, + )?; + + // Store player state with the actual port key + { + let state = TEST_TONE_STATE.get_or_init(|| Mutex::new(HashMap::new())); + state.lock().insert( + guard.port_key, + TestToneState { + call_id, + phase: 0, + finished: false, + }, + ); + } + + tracing::info!( + "Started 440Hz test tone for call {} (player_slot={}, call_port={})", + call_id, + guard.slot, + call_conf_port + ); + + guard + }; + + let port_key = guard.port_key; + + // Spawn a cleanup thread that watches for when the call ends + // The ConfPortGuard handles pjsua_conf_remove_port when dropped + std::thread::spawn(move || { + loop { + std::thread::sleep(std::time::Duration::from_millis(100)); + + let finished = { + let state = TEST_TONE_STATE.get_or_init(|| Mutex::new(HashMap::new())); + let state = state.lock(); + + if let Some(tone_state) = state.get(&port_key) { + tone_state.finished + } else { + // State already removed - we're done + break; + } + }; + + if finished { + // Small delay to ensure last frame is sent + std::thread::sleep(std::time::Duration::from_millis(50)); + + // Drop guard to remove from conference + // on_destroy callback will clean up TEST_TONE_STATE + drop(guard); + + tracing::debug!( + "Cleaned up test tone player (port={:p})", + port_key as *const () + ); + + break; + } + } + }); + + Ok(()) +} diff --git a/sipcord-bridge/src/transport/sip/ffi/types.rs b/sipcord-bridge/src/transport/sip/ffi/types.rs new file mode 100644 index 0000000..fa279e1 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/types.rs @@ -0,0 +1,477 @@ +//! Low-level pjsua wrapper types and constants +//! +//! This module provides safe(r) Rust wrappers around the pjsua C library. +//! +//! ## Audio Architecture +//! +//! When using `pjsua_set_no_snd_dev()`, we take control of audio I/O: +//! - pjsua's conference bridge handles codec negotiation and mixing +//! - We periodically call `get_frame`/`put_frame` to exchange audio with the conference +//! - The conference outputs 16kHz mono PCM regardless of call codec (G.711, Opus, etc.) +//! - We resample to/from Discord's 48kHz stereo + +use crate::services::snowflake::Snowflake; +use crossbeam_channel::Sender; +use crossbeam_queue::SegQueue; +use dashmap::DashMap; +use ipnet::Ipv4Net; +use parking_lot::{Mutex, RwLock}; +use pjsua::*; +use std::collections::{HashMap, HashSet, VecDeque}; +use std::net::IpAddr; +use std::ops::Deref; +use std::path::PathBuf; +use std::sync::atomic::AtomicBool; +use std::sync::Arc; +use std::sync::OnceLock; +use std::time::Instant; + +// CallId newtype + +/// Type-safe wrapper around `pjsua_call_id` (i32). +/// +/// Prevents accidental confusion with conference port IDs, account IDs, +/// and other bare `i32` values in the pjsua API. +#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] +pub struct CallId(i32); + +impl CallId { + /// Sentinel for "no call" / invalid call ID. + pub const INVALID: CallId = CallId(-1); + + pub const fn new(value: i32) -> Self { + Self(value) + } + + pub const fn get(self) -> i32 { + self.0 + } + + pub const fn is_valid(self) -> bool { + self.0 >= 0 + } +} + +impl Deref for CallId { + type Target = i32; + fn deref(&self) -> &i32 { + &self.0 + } +} + +impl From for CallId { + fn from(v: i32) -> Self { + Self(v) + } +} + +impl From for i32 { + fn from(c: CallId) -> i32 { + c.0 + } +} + +impl std::fmt::Display for CallId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +impl std::fmt::Debug for CallId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "CallId({})", self.0) + } +} + +// ConfPort newtype + +/// Type-safe wrapper around conference port slot IDs (`i32`). +/// +/// Prevents accidental confusion with `CallId`, account IDs, +/// and other bare `i32` values in the pjsua API. +#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] +pub struct ConfPort(i32); + +impl ConfPort { + /// Sentinel for "no port" / invalid conf port. + pub const INVALID: ConfPort = ConfPort(-1); + + pub const fn new(value: i32) -> Self { + Self(value) + } + + pub const fn get(self) -> i32 { + self.0 + } + + pub const fn is_valid(self) -> bool { + self.0 >= 0 + } +} + +impl Deref for ConfPort { + type Target = i32; + fn deref(&self) -> &i32 { + &self.0 + } +} + +impl From for ConfPort { + fn from(v: i32) -> Self { + Self(v) + } +} + +impl From for i32 { + fn from(c: ConfPort) -> i32 { + c.0 + } +} + +impl std::fmt::Display for ConfPort { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +impl std::fmt::Debug for ConfPort { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "ConfPort({})", self.0) + } +} + +/// SIP Digest auth parameters extracted from Authorization header +#[derive(Debug, Clone, Default)] +pub struct DigestAuthParams { + pub username: String, + pub realm: String, + pub nonce: String, + pub uri: String, + pub response: String, + pub method: String, + pub qop: Option, + pub nc: Option, + pub cnonce: Option, +} + +/// Callback handlers for SIP events +pub struct CallbackHandlers { + pub on_incoming_call: Box) + Send + Sync>, + pub on_call_authenticated: + Box) + Send + Sync>, + pub on_dtmf: Box, + pub on_call_ended: Box, + /// Audio frame callback: (channel_id, samples, sample_rate) + /// channel_id is the Discord channel ID (Snowflake) for per-channel routing + pub on_audio_frame: AudioFrameCallback, +} + +/// Callback type for audio frame delivery: (channel_id, samples, sample_rate) +pub type AudioFrameCallback = Box; + +/// Realm for our SIP server +pub const SIP_REALM: &str = "sipcord"; + +/// Conference bridge sample rate (16kHz) +pub const CONF_SAMPLE_RATE: u32 = 16000; + +/// Conference bridge channels (mono) +pub const CONF_CHANNELS: u32 = 1; + +/// Audio frame duration in ms +pub const FRAME_PTIME_MS: u32 = 20; + +/// Samples per frame = sample_rate * ptime / 1000 +pub const SAMPLES_PER_FRAME: usize = (CONF_SAMPLE_RATE * FRAME_PTIME_MS / 1000) as usize; + +// Config accessors — cached on first call via OnceLock (config is immutable at runtime). + +pub fn rtp_inactivity_timeout_secs() -> u64 { + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::bridge().rtp_inactivity_timeout_secs) +} + +/// Shorter timeout for calls that never receive any RTP at all +pub fn no_audio_timeout_secs() -> u64 { + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::bridge().no_audio_timeout_secs) +} + +pub fn empty_bridge_grace_period_secs() -> u64 { + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::bridge().empty_bridge_grace_period_secs) +} + +pub fn max_channel_buffer_samples() -> usize { + static CACHED: OnceLock = OnceLock::new(); + *CACHED.get_or_init(|| crate::config::AppConfig::bridge().max_channel_buffer_samples) +} + +/// Wrapper for pjmedia_port pointer that is Send +/// Safety: pjsua is single-threaded and we only access this from the audio thread +pub struct SendablePort(pub *mut pjmedia_port); +unsafe impl Send for SendablePort {} +unsafe impl Sync for SendablePort {} + +/// Wrapper for pj_pool_t pointer +pub struct SendablePool(pub *mut pj_pool_t); +unsafe impl Send for SendablePool {} +unsafe impl Sync for SendablePool {} + +/// Type alias for local network config: (local_host, parsed_cidr, port, rtp_public_ip) +pub type LocalNetConfig = (String, Ipv4Net, u16, Option); + +/// Type alias for drain cache entry: (last_drain_time, cached_samples, sample_count) +/// Using Arc<[i16]> for single allocation (no separate Vec header). +/// Cache hit becomes Arc::clone() (zero-copy). +pub type DrainCacheEntry = (Instant, Arc<[i16]>, usize); + +/// Type alias for direct player entry: (samples buffer, current read position) +pub type DirectPlayerEntry = (Vec, usize); + +// Global statics + +/// Global callback handlers (pjsua uses global callbacks) +pub static CALLBACKS: OnceLock>> = OnceLock::new(); + +/// Audio output buffers per call (Discord -> SIP) +/// Using DashMap for lock-free concurrent access on audio hot path +pub static AUDIO_OUT_BUFFERS: OnceLock>> = OnceLock::new(); + +/// Master conference port (returned by pjsua_set_no_snd_dev) +pub static CONF_MASTER_PORT: OnceLock> = OnceLock::new(); + +/// Local network config for Contact header and SDP rewriting +/// Stored as (local_host, parsed_cidr, port, rtp_public_ip) for efficient lookup in the callback +/// rtp_public_ip is the IP that pjsua advertises in SDP - we replace it with local_host for local clients +pub static LOCAL_NET_CONFIG: OnceLock> = OnceLock::new(); + +/// Public host config for rewriting private IPs in Contact headers sent to external clients. +/// pjsua derives Contact from the TCP connection's local address (e.g. 10.0.1.7), but external +/// clients need the public hostname to route in-dialog requests (BYE) back to us. +/// Stored as (public_host, sip_port). +pub static PUBLIC_HOST_CONFIG: OnceLock> = OnceLock::new(); + +/// Flag to indicate audio thread should stop +pub static AUDIO_THREAD_RUNNING: AtomicBool = AtomicBool::new(false); + +/// Audio thread handle for joining on shutdown +pub static AUDIO_THREAD_HANDLE: OnceLock>>> = + OnceLock::new(); + +/// Flag indicating the audio thread has processed at least one frame +/// This is used to defer channel registration completions until the conference +/// bridge is actively being clocked. +pub static AUDIO_THREAD_READY: AtomicBool = AtomicBool::new(false); + +/// Queue of pending channel registrations to complete once audio thread is ready +/// Stores (call_id, conf_port) pairs that need complete_pending_channel_registration called +/// Uses lock-free SegQueue for zero-contention push/pop on the 50Hz audio thread +pub static PENDING_CHANNEL_COMPLETIONS: SegQueue<(CallId, ConfPort)> = SegQueue::new(); + +/// Queue of pending conference connections to be made by the audio thread +/// Stores (call_id, channel_id) pairs that need their conference connections made +/// This is used because pjsua_conf_connect conflicts with the audio thread's +/// pjmedia_port_get_frame calls if made from a different thread +/// Uses lock-free SegQueue for zero-contention push/pop on the 50Hz audio thread +pub static PENDING_CONF_CONNECTIONS: SegQueue<(CallId, Snowflake)> = SegQueue::new(); + +/// Pending PJSUA operations that must be executed by the audio thread +/// These operations modify the conference bridge and must be synchronized with get_frame +#[derive(Debug)] +pub enum PendingPjsuaOp { + /// Play samples directly to a call (for join sounds) + /// Note: This also stops any active looping player for the call first + PlayDirect { call_id: CallId, samples: Vec }, + /// Start streaming audio from a file to a call (for large easter egg files) + /// Uses pull model for precise timing - audio thread pulls frames as needed + StartStreaming { + call_id: CallId, + path: PathBuf, + hangup_on_complete: bool, + }, + /// Start playing a 440Hz test tone to a call (plays until caller hangs up) + StartTestTone { call_id: CallId }, + /// Hangup a call (used internally for cleanup after streaming) + Hangup { call_id: CallId }, + /// Start a looping audio player for early media (connecting sound) + /// Must run on audio thread to avoid race with pjmedia_port_get_frame + StartLoop { call_id: CallId, samples: Vec }, + /// Connect a fax audio port bidirectionally in the conference bridge. + /// Must run on the audio thread to avoid racing with pjmedia_port_get_frame. + /// The oneshot sender signals completion back to the async caller. + ConnectFaxPort { + call_id: CallId, + fax_slot: ConfPort, + call_conf_port: ConfPort, + done_tx: tokio::sync::oneshot::Sender, + }, +} + +/// Queue of pending PJSUA operations to be executed by the audio thread +/// Uses lock-free SegQueue for zero-contention push/pop on the 50Hz audio thread +pub static PENDING_PJSUA_OPS: SegQueue = SegQueue::new(); + +/// Set of call_ids with active media (used to start/stop audio thread) +/// This prevents double-counting or decrementing calls that were never counted +pub static COUNTED_CALL_IDS: OnceLock>> = OnceLock::new(); + +/// TLS transport ID (for reload support) +pub static TLS_TRANSPORT_ID: OnceLock>> = OnceLock::new(); + +/// Flag indicating TLS reload is pending +pub static TLS_RELOAD_PENDING: AtomicBool = AtomicBool::new(false); + +/// Per-call RTP activity tracking: call_id -> (last_rx_packet_count, last_activity_time) +/// Used to detect dead calls when SIP BYE is not received +pub static CALL_RTP_ACTIVITY: OnceLock>> = OnceLock::new(); + +/// Event sender for timeout events (set during callback setup) +pub static TIMEOUT_EVENT_TX: OnceLock>>> = + OnceLock::new(); + +// Per-channel audio isolation statics + +/// call_id -> conf_port mapping (for connecting/disconnecting calls) +/// Using DashMap for lock-free concurrent access on audio hot path +pub static CALL_CONF_PORTS: OnceLock> = OnceLock::new(); + +/// call_id -> channel_id mapping (which Discord channel each call belongs to) +/// Using DashMap for lock-free concurrent access on audio hot path +pub static CALL_CHANNELS: OnceLock> = OnceLock::new(); + +/// channel_id -> set of call_ids (all calls in each channel) +/// Uses RwLock: audio thread takes .read() (non-exclusive, 50Hz), call lifecycle takes .write() +pub static CHANNEL_CALLS: OnceLock>>> = OnceLock::new(); + +/// channel_id -> audio INPUT buffer (SIP -> Discord, per-channel) +/// Filled by channel_port_put_frame callback, drained by audio thread for Discord +/// Using DashMap for lock-free concurrent access on audio hot path +pub static CHANNEL_AUDIO_IN: OnceLock>> = OnceLock::new(); + +/// Per-channel conference ports: channel_id -> (pjmedia_port*, conf_slot) +/// Each channel gets its own CUSTOM BUFFER port for isolated Discord->SIP audio routing +/// Unlike null ports, these actually provide audio to the conference via get_frame callback +pub static CHANNEL_CONF_PORTS: OnceLock>> = + OnceLock::new(); + +/// Reverse mapping: port_ptr -> channel_id (for get_frame callback to find the right buffer) +pub static PORT_TO_CHANNEL: OnceLock>> = OnceLock::new(); + +/// Memory pool for creating channel ports +pub static CHANNEL_PORT_POOL: OnceLock> = OnceLock::new(); + +/// Global audio frame counter (incremented once per audio thread tick) +/// Used to prevent channel ports from being drained multiple times per frame +pub static AUDIO_FRAME_COUNTER: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); + +/// Per-channel time-based cache: channel_id -> (last_drain_time, cached_samples) +/// If get_frame is called multiple times within 15ms (same PJSUA tick), we return the cached samples. +/// This prevents N callers from draining N*320 samples when they should all share the same frame. +/// Using DashMap for lock-free concurrent access on audio hot path +pub static CHANNEL_DRAIN_CACHE: OnceLock> = OnceLock::new(); + +// Direct player statics + +/// Direct player state: port_ptr -> (samples buffer, current read position) +/// Used for playing audio directly to a single call without going through channel buffer +pub static DIRECT_PLAYER_STATE: OnceLock>> = + OnceLock::new(); + +/// Memory pool for direct player ports +pub static DIRECT_PLAYER_POOL: OnceLock> = OnceLock::new(); + +/// Queue a PJSUA operation to be executed by the audio thread +pub fn queue_pjsua_op(op: PendingPjsuaOp) { + PENDING_PJSUA_OPS.push(op); +} + +#[cfg(test)] +mod tests { + use super::*; + + + #[test] + fn test_call_id_invalid() { + assert_eq!(CallId::INVALID.get(), -1); + assert!(!CallId::INVALID.is_valid()); + } + + #[test] + fn test_call_id_valid() { + assert!(CallId::new(0).is_valid()); + assert!(CallId::new(5).is_valid()); + } + + #[test] + fn test_call_id_deref() { + let id = CallId::new(42); + let val: &i32 = &id; + assert_eq!(*val, 42); + } + + #[test] + fn test_call_id_from_into() { + let id: CallId = 7.into(); + assert_eq!(id.get(), 7); + let raw: i32 = id.into(); + assert_eq!(raw, 7); + } + + #[test] + fn test_call_id_display_debug() { + let id = CallId::new(3); + assert_eq!(format!("{}", id), "3"); + assert_eq!(format!("{:?}", id), "CallId(3)"); + } + + + #[test] + fn test_conf_port_invalid() { + assert_eq!(ConfPort::INVALID.get(), -1); + assert!(!ConfPort::INVALID.is_valid()); + } + + #[test] + fn test_conf_port_valid() { + assert!(ConfPort::new(0).is_valid()); + assert!(ConfPort::new(5).is_valid()); + } + + #[test] + fn test_conf_port_deref() { + let port = ConfPort::new(10); + let val: &i32 = &port; + assert_eq!(*val, 10); + } + + #[test] + fn test_conf_port_from_into() { + let port: ConfPort = 9.into(); + assert_eq!(port.get(), 9); + let raw: i32 = port.into(); + assert_eq!(raw, 9); + } + + #[test] + fn test_conf_port_display_debug() { + let port = ConfPort::new(4); + assert_eq!(format!("{}", port), "4"); + assert_eq!(format!("{:?}", port), "ConfPort(4)"); + } + + + #[test] + fn test_digest_auth_params_default() { + let params = DigestAuthParams::default(); + assert!(params.username.is_empty()); + assert!(params.realm.is_empty()); + assert!(params.nonce.is_empty()); + assert!(params.uri.is_empty()); + assert!(params.response.is_empty()); + assert!(params.method.is_empty()); + assert!(params.qop.is_none()); + assert!(params.nc.is_none()); + assert!(params.cnonce.is_none()); + } +} diff --git a/sipcord-bridge/src/transport/sip/ffi/utils.rs b/sipcord-bridge/src/transport/sip/ffi/utils.rs new file mode 100644 index 0000000..04a1c78 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/ffi/utils.rs @@ -0,0 +1,67 @@ +//! Utility functions for pjsua wrapper + +use pjsua::pj_str_t; + +/// Convert a pj_str_t to a Rust String +/// +/// # Safety +/// The pj_str_t must point to valid memory for `slen` bytes. +pub unsafe fn pj_str_to_string(s: &pj_str_t) -> String { + if s.ptr.is_null() || s.slen <= 0 { + return String::new(); + } + + let slice = std::slice::from_raw_parts(s.ptr as *const u8, s.slen as usize); + String::from_utf8_lossy(slice).to_string() +} + +/// Extract username from SIP URI (e.g., "" -> "username") +pub fn extract_sip_username(uri: &str) -> String { + // Remove angle brackets if present + let uri = uri.trim_start_matches('<').trim_end_matches('>'); + + // Remove "sip:" prefix + let uri = uri.strip_prefix("sip:").unwrap_or(uri); + + // Take everything before @ as username + if let Some(at_pos) = uri.find('@') { + uri[..at_pos].to_string() + } else { + uri.to_string() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_extract_sip_username_full_uri() { + assert_eq!(extract_sip_username(""), "alice"); + } + + #[test] + fn test_extract_sip_username_no_brackets() { + assert_eq!(extract_sip_username("sip:bob@domain"), "bob"); + } + + #[test] + fn test_extract_sip_username_no_sip_prefix() { + assert_eq!(extract_sip_username("charlie@host"), "charlie"); + } + + #[test] + fn test_extract_sip_username_no_at() { + assert_eq!(extract_sip_username("sip:dave"), "dave"); + } + + #[test] + fn test_extract_sip_username_with_port() { + assert_eq!(extract_sip_username(""), "eve"); + } + + #[test] + fn test_extract_sip_username_empty() { + assert_eq!(extract_sip_username(""), ""); + } +} diff --git a/sipcord-bridge/src/transport/sip/fork_group.rs b/sipcord-bridge/src/transport/sip/fork_group.rs new file mode 100644 index 0000000..8eae67f --- /dev/null +++ b/sipcord-bridge/src/transport/sip/fork_group.rs @@ -0,0 +1,278 @@ +//! Fork group tracking for multi-contact outbound call forking. +//! +//! When a user has multiple SIP phones registered, the bridge rings all of them +//! simultaneously. A "fork group" tracks the set of forked call legs for a single +//! logical call (identified by tracking_id). When one leg answers, the siblings +//! are cancelled. When all legs fail, the failure is reported. + +use super::CallId; +use dashmap::DashMap; +use std::collections::HashSet; +use std::sync::OnceLock; +use tracing::{debug, info}; + +/// Global fork group registry, keyed by tracking_id. +static FORK_GROUPS: OnceLock> = OnceLock::new(); + +fn groups() -> &'static DashMap { + FORK_GROUPS.get_or_init(DashMap::new) +} + +struct ForkGroup { + /// Call IDs that were successfully started (active legs) + sibling_call_ids: HashSet, + /// Call IDs that have failed (answered-then-disconnected, or never-answered) + failed_call_ids: HashSet, + /// Number of calls that failed to even start (MakeOutboundCall returned error) + initial_failures: usize, + /// The call_id that answered first (if any) + answered_call_id: Option, + /// Total number of fork attempts (successful starts + initial failures) + expected_total: usize, +} + +/// Register a successfully started call leg in a fork group. +/// +/// Called from `process_sip_command` after `make_outbound_call` succeeds. +pub fn add_member(tracking_id: &str, call_id: CallId, fork_total: usize) { + let mut entry = groups() + .entry(tracking_id.to_string()) + .or_insert_with(|| ForkGroup { + sibling_call_ids: HashSet::new(), + failed_call_ids: HashSet::new(), + initial_failures: 0, + answered_call_id: None, + expected_total: fork_total, + }); + entry.sibling_call_ids.insert(call_id); + debug!( + "Fork group {}: added call_id={}, members={}/{}", + tracking_id, + call_id, + entry.sibling_call_ids.len() + entry.initial_failures, + fork_total + ); +} + +/// Track a call that failed to start (make_outbound_call returned error). +/// +/// Called from `process_sip_command` when `make_outbound_call` fails. +pub fn add_initial_failure(tracking_id: &str, fork_total: usize) { + let mut entry = groups() + .entry(tracking_id.to_string()) + .or_insert_with(|| ForkGroup { + sibling_call_ids: HashSet::new(), + failed_call_ids: HashSet::new(), + initial_failures: 0, + answered_call_id: None, + expected_total: fork_total, + }); + entry.initial_failures += 1; + debug!( + "Fork group {}: initial failure, failures={}/{}", + tracking_id, + entry.initial_failures + entry.failed_call_ids.len(), + fork_total + ); +} + +/// Mark a fork leg as answered. Returns the sibling call_ids to cancel (if this +/// is the first answer), or `None` if another leg already answered. +/// +/// The fork group is removed after this call since the logical call is resolved. +pub fn mark_answered(tracking_id: &str, call_id: CallId) -> Option> { + // Use remove to get exclusive ownership - prevents races between two simultaneous answers + let (_, mut group) = groups().remove(tracking_id)?; + + if group.answered_call_id.is_some() { + // Another leg already answered - this shouldn't happen with DashMap remove, + // but handle it gracefully + info!( + "Fork group {}: call_id={} answered but already resolved", + tracking_id, call_id + ); + return None; + } + + group.answered_call_id = Some(call_id); + + // Collect siblings to cancel (all members except the one that answered, minus already-failed) + let siblings: Vec = group + .sibling_call_ids + .iter() + .filter(|&&id| id != call_id && !group.failed_call_ids.contains(&id)) + .copied() + .collect(); + + info!( + "Fork group {}: call_id={} answered, cancelling {} siblings", + tracking_id, + call_id, + siblings.len() + ); + + Some(siblings) +} + +/// Mark a fork leg as failed. Returns `true` if ALL legs have now failed +/// (meaning the logical call should be reported as failed to the DO). +/// +/// The fork group is removed when all legs have failed. +pub fn mark_failed(tracking_id: &str, call_id: CallId) -> bool { + let mut entry = match groups().get_mut(tracking_id) { + Some(e) => e, + None => { + // Group already removed (answered or all-failed) — this is a late failure + // from a leg that was being cancelled. Not an error. + debug!( + "Fork group {}: call_id={} failed but group already resolved", + tracking_id, call_id + ); + return false; + } + }; + + // If this group was already answered, don't count this failure + if entry.answered_call_id.is_some() { + return false; + } + + entry.sibling_call_ids.remove(&call_id); + entry.failed_call_ids.insert(call_id); + + let total_resolved = entry.failed_call_ids.len() + entry.initial_failures; + let all_failed = total_resolved >= entry.expected_total; + + debug!( + "Fork group {}: call_id={} failed, resolved={}/{}, all_failed={}", + tracking_id, call_id, total_resolved, entry.expected_total, all_failed + ); + + if all_failed { + // Drop the mutable ref before removing + drop(entry); + groups().remove(tracking_id); + } + + all_failed +} + +#[cfg(test)] +mod tests { + use super::*; + + /// Generate a unique tracking ID per test to avoid interference with the global DashMap + fn unique_id(base: &str) -> String { + use std::sync::atomic::{AtomicU64, Ordering}; + static COUNTER: AtomicU64 = AtomicU64::new(0); + format!("{}_{}", base, COUNTER.fetch_add(1, Ordering::Relaxed)) + } + + #[test] + fn test_add_members_and_answer() { + let tid = unique_id("answer"); + let c1 = CallId::new(100); + let c2 = CallId::new(101); + let c3 = CallId::new(102); + + add_member(&tid, c1, 3); + add_member(&tid, c2, 3); + add_member(&tid, c3, 3); + + // c1 answers -> siblings c2, c3 returned for cancellation + let siblings = mark_answered(&tid, c1).unwrap(); + assert_eq!(siblings.len(), 2); + assert!(siblings.contains(&c2)); + assert!(siblings.contains(&c3)); + } + + #[test] + fn test_all_failed() { + let tid = unique_id("allfail"); + let c1 = CallId::new(200); + let c2 = CallId::new(201); + + add_member(&tid, c1, 2); + add_member(&tid, c2, 2); + + assert!(!mark_failed(&tid, c1)); // 1/2 failed + assert!(mark_failed(&tid, c2)); // 2/2 failed -> all_failed = true + } + + #[test] + fn test_answer_on_already_resolved() { + let tid = unique_id("double_answer"); + let c1 = CallId::new(300); + let c2 = CallId::new(301); + + add_member(&tid, c1, 2); + add_member(&tid, c2, 2); + + // First answer removes the group + mark_answered(&tid, c1); + + // Second answer -> group gone, returns None + assert!(mark_answered(&tid, c2).is_none()); + } + + #[test] + fn test_failed_on_already_resolved() { + let tid = unique_id("fail_after_answer"); + let c1 = CallId::new(400); + let c2 = CallId::new(401); + + add_member(&tid, c1, 2); + add_member(&tid, c2, 2); + + mark_answered(&tid, c1); + + // Late failure after answer -> returns false + assert!(!mark_failed(&tid, c2)); + } + + #[test] + fn test_initial_failures_plus_call_failures() { + let tid = unique_id("mixed_fail"); + let c1 = CallId::new(500); + + // 3 total forks: 1 started, 2 failed to start + add_member(&tid, c1, 3); + add_initial_failure(&tid, 3); + add_initial_failure(&tid, 3); + + // The one started leg also fails -> all_failed + assert!(mark_failed(&tid, c1)); + } + + #[test] + fn test_single_member_fork_group() { + let tid = unique_id("single"); + let c1 = CallId::new(600); + + add_member(&tid, c1, 1); + + // Single member answers -> empty siblings list + let siblings = mark_answered(&tid, c1).unwrap(); + assert!(siblings.is_empty()); + } + + #[test] + fn test_some_fail_then_answer() { + let tid = unique_id("partial_fail_answer"); + let c1 = CallId::new(700); + let c2 = CallId::new(701); + let c3 = CallId::new(702); + + add_member(&tid, c1, 3); + add_member(&tid, c2, 3); + add_member(&tid, c3, 3); + + // c1 fails first + assert!(!mark_failed(&tid, c1)); + + // c2 answers -> should only cancel c3 (c1 already failed) + let siblings = mark_answered(&tid, c2).unwrap(); + assert_eq!(siblings.len(), 1); + assert!(siblings.contains(&c3)); + } +} diff --git a/sipcord-bridge/src/transport/sip/mod.rs b/sipcord-bridge/src/transport/sip/mod.rs new file mode 100644 index 0000000..0134f8d --- /dev/null +++ b/sipcord-bridge/src/transport/sip/mod.rs @@ -0,0 +1,579 @@ +pub mod ffi; + +mod audio_thread; +mod callbacks; +mod channel_audio; +pub mod fork_group; +mod nat; +mod register_handler; + +// Re-export everything from the pjsua FFI module +pub use self::ffi::*; + +// Re-export from mixed/application-level modules +pub use audio_thread::{ + check_rtp_inactivity, cleanup_zombie_pjsua_calls, set_timeout_event_sender, + validate_counted_calls, +}; +pub use callbacks::{set_outbound_event_sender, T38_PRESOCKETS}; +pub use channel_audio::{ + cleanup_channel_port, clear_channel_stale_audio, register_call_channel, + register_discord_to_sip, unregister_call_channel, unregister_discord_to_sip, +}; +pub use register_handler::{set_register_event_sender, set_sip_command_sender, PendingRegisterTsx}; + +use crate::config::{SipConfig, TlsConfig}; +use crate::transport::discord::send_audio_to_discord_direct; +use anyhow::Result; +use crossbeam_channel::{bounded, Receiver, Sender}; +use dashmap::DashMap; +use parking_lot::RwLock; +use std::net::IpAddr; +use std::path::PathBuf; +use std::sync::Arc; +use tracing::{debug, error, info, trace}; + +/// Events emitted by the SIP module +#[derive(Debug, Clone)] +pub enum SipEvent { + /// Incoming call received with SIP Digest auth params and extension + IncomingCall { + call_id: CallId, + /// SIP Digest auth parameters (boxed to reduce enum size) + digest_auth: Box, + /// Extension being called (from To header) + extension: String, + /// Source IP address of the caller + source_ip: Option, + }, + /// Call ended + CallEnded { call_id: CallId }, + /// Call timed out due to RTP inactivity (no audio received for extended period) + /// rx_count is the total RTP packets received before timeout (0 = never got any audio) + CallTimeout { call_id: CallId, rx_count: u64 }, + /// Outbound call was answered + OutboundCallAnswered { + tracking_id: String, + call_id: CallId, + }, + /// Outbound call failed (rejected, timeout, error) + OutboundCallFailed { + tracking_id: String, + call_id: Option, + reason: String, + }, + /// Remote sent a T.38 re-INVITE (fax switching from G.711 to T.38 UDPTL) + /// The re-INVITE has already been answered synchronously with a 200 OK; + /// the pre-bound UDPTL socket is stored in T38_PRESOCKETS. + T38Offered { + call_id: CallId, + /// Remote IP for UDPTL packets + remote_ip: String, + /// Remote UDPTL port + remote_port: u16, + /// T.38 version from SDP (typically 0) + t38_version: u8, + /// Max bit rate from SDP (typically 14400) + max_bit_rate: u32, + /// Rate management method ("transferredTCF" or "localTCF") + rate_management: String, + /// UDP error correction ("t38UDPRedundancy" or "t38UDPFEC") + udp_ec: String, + /// Our local UDPTL port (pre-bound in callback) + local_port: u16, + }, +} + +/// Commands that can be sent to the SIP module +#[derive(Debug)] +pub enum SipCommand { + /// Play audio directly to a call (bypasses channel buffer) + /// Used for join sounds to avoid buffer overflow with Discord audio + PlayDirectToCall { call_id: CallId, samples: Vec }, + /// Start a looping audio player for early media (183 Session Progress) + StartConnectingLoop { call_id: CallId, samples: Vec }, + /// Hangup a call + Hangup { call_id: CallId }, + /// Answer a call with 200 OK (after Discord connects successfully) + Answer { call_id: CallId }, + /// Send 183 Session Progress (establishes early media for connecting sound) + Send183 { call_id: CallId }, + /// Start streaming audio from a file to a call (for large files like easter eggs) + /// Uses pull model for precise timing - hangs up automatically when done + StartStreaming { call_id: CallId, path: PathBuf }, + /// Start playing a 440Hz test tone to a call + /// Plays until the caller hangs up + StartTestTone { call_id: CallId }, + /// Send 302 redirect to another bridge server + /// Must be processed in the PJSUA thread to avoid deadlocking with internal PJSIP state + Redirect { + call_id: CallId, + domain: String, + extension: String, + }, + /// Make an outbound call to a SIP URI (for inbound Discord->SIP calls) + MakeOutboundCall { + tracking_id: String, + sip_uri: String, + caller_display_name: Option, + /// Total number of fork legs for this tracking_id (for multi-contact forking) + fork_total: usize, + }, + /// Complete a deferred REGISTER response via a UAS transaction. + /// Sent by the async auth handler after API verification. + RespondRegister { + pending: PendingRegisterTsx, + auth_ok: bool, + }, +} + +/// Active call state (tracked by SIP module before authentication completes) +#[derive(Debug)] +pub struct CallState; + +/// SIP transport — owns the pjsua event loop and all SIP state. +/// +/// Creates its own event/command channels internally. Use `events()` and `commands()` +/// to get handles for communication with the bridge coordinator. +pub struct SipTransport { + config: SipConfig, + tls_config: Option, + event_tx: Sender, + event_rx: Receiver, + command_tx: Sender, + command_rx: Receiver, + calls: Arc>, + pjsua_initialized: Arc>, +} + +impl SipTransport { + pub fn new(config: SipConfig, tls_config: Option) -> Self { + let (event_tx, event_rx) = bounded(1000); + let (command_tx, command_rx) = bounded(1000); + Self { + config, + tls_config, + event_tx, + event_rx, + command_tx, + command_rx, + calls: Arc::new(DashMap::new()), + pjsua_initialized: Arc::new(RwLock::new(false)), + } + } + + /// Get a receiver for SIP events (incoming calls, call ended, etc.) + pub fn events(&self) -> Receiver { + self.event_rx.clone() + } + + /// Get a sender for SIP commands (hangup, answer, send audio, etc.) + pub fn commands(&self) -> Sender { + self.command_tx.clone() + } + + /// Get a sender for SIP events (used to inject outbound call events) + pub fn event_sender(&self) -> Sender { + self.event_tx.clone() + } + + /// Start the SIP transport + pub async fn run(&self) -> Result<()> { + info!( + "Starting SIP server on {}:{}", + self.config.public_host, self.config.port + ); + + if let Some(ref tls) = self.tls_config { + info!("TLS enabled on port {}", tls.port); + } + + // Initialize pjsua in a blocking task since it's not async-safe + let config = self.config.clone(); + let tls_config = self.tls_config.clone(); + let calls = self.calls.clone(); + let event_tx = self.event_tx.clone(); + let initialized = self.pjsua_initialized.clone(); + let command_rx = self.command_rx.clone(); + + // Spawn pjsua event loop in a blocking thread + // IMPORTANT: All PJSUA calls must be made from this thread to avoid deadlocks + let pjsua_handle = tokio::task::spawn_blocking(move || { + if let Err(e) = + run_pjsua_loop(config, tls_config, calls, event_tx, initialized, command_rx) + { + error!("pjsua loop error: {}", e); + } + }); + + pjsua_handle.await?; + Ok(()) + } +} + +/// Run the pjsua event loop (blocking) +/// +/// IMPORTANT: All PJSUA calls (answer, hangup, etc.) must be made from this thread +/// to avoid deadlocks with PJSIP's internal worker threads. +fn run_pjsua_loop( + config: SipConfig, + tls_config: Option, + calls: Arc>, + event_tx: Sender, + initialized: Arc>, + command_rx: Receiver, +) -> Result<()> { + // Initialize pjsua with optional TLS + init_pjsua(&config, tls_config.as_ref())?; + *initialized.write() = true; + + // Register this thread with PJLIB so we can safely call PJSUA functions. + // This is required because tokio::task::spawn_blocking creates a new thread + // that isn't automatically registered with PJLIB. + if !register_thread_with_pjlib("pjsua_event_loop") { + tracing::warn!("Failed to register event loop thread with PJLIB"); + } + + // Note: Audio thread is started on-demand when first call becomes active + // (see on_call_media_state_cb in callbacks.rs) + + info!("pjsua initialized, waiting for calls..."); + + // Set up timeout event sender for RTP inactivity detection + set_timeout_event_sender(event_tx.clone()); + + // Set up callbacks + set_callbacks(CallbackHandlers { + on_incoming_call: Box::new({ + let calls = calls.clone(); + move |call_id, sip_username, extension, source_ip| { + debug!( + "Incoming call {} from {} to extension {} (IP: {:?})", + call_id, sip_username, extension, source_ip + ); + + // Track call (actual state is managed via events after authentication) + calls.insert(call_id, CallState); + } + }), + on_call_authenticated: Box::new({ + let event_tx = event_tx.clone(); + move |call_id, digest_auth, extension, source_ip| { + info!( + "Call {} authenticated: user={}", + call_id, digest_auth.username + ); + + let _ = event_tx.send(SipEvent::IncomingCall { + call_id, + digest_auth: Box::new(digest_auth), + extension, + source_ip, + }); + } + }), + on_dtmf: Box::new({ + move |call_id, digit| { + debug!( + "DTMF {} on call {} (ignored - using dialed number)", + digit, call_id + ); + } + }), + on_call_ended: Box::new({ + let calls = calls.clone(); + let event_tx = event_tx.clone(); + move |call_id| { + calls.remove(&call_id); + let _ = event_tx.send(SipEvent::CallEnded { call_id }); + } + }), + on_audio_frame: Box::new({ + move |channel_id, samples, sample_rate| { + // DIRECT PATH: Send audio directly to Discord, bypassing tokio entirely. + // This is called from the pjsua audio thread and sends directly to the + // crossbeam channel that feeds Songbird's StreamingAudioSource. + use std::sync::atomic::{AtomicU64, Ordering}; + static DIRECT_AUDIO_COUNT: AtomicU64 = AtomicU64::new(0); + let count = DIRECT_AUDIO_COUNT.fetch_add(1, Ordering::Relaxed); + + let sent = send_audio_to_discord_direct(channel_id, samples, sample_rate); + + if !sent && count.is_multiple_of(250) { + // No sender registered for this channel - bridge might not be ready yet + trace!( + "No Discord sender for channel {} (direct audio dropped, count={})", + channel_id, + count + ); + } + } + }), + }); + + // Run pjsua event loop + let mut loop_count: u64 = 0; + loop { + // Process any pending SIP commands (non-blocking) + // These must be processed in the PJSUA thread to avoid deadlocks + while let Ok(cmd) = command_rx.try_recv() { + process_sip_command(cmd, &calls); + } + + // Sleep briefly to allow PJSIP worker threads to process events + // Note: PJSIP has its own internal worker threads that handle the ioqueue + process_pjsua_events(10)?; + + loop_count += 1; + + // Every ~5 seconds (500 iterations at 10ms each), check for RTP inactivity + // This must be done from the PJSUA thread, not the audio thread + if loop_count.is_multiple_of(500) { + check_rtp_inactivity(); + } + + // Every ~30 seconds (3000 iterations at 10ms each), validate COUNTED_CALL_IDS + // This catches stale calls that weren't properly cleaned up by on_call_state_cb + if loop_count.is_multiple_of(3000) { + validate_counted_calls(); + } + + // Every ~60 seconds (6000 iterations at 10ms each), scan ALL pjsua call slots + // for zombie calls that are stuck (rejected calls where the SIP transaction + // never completed, or calls where handle_incoming_call panicked/hung) + if loop_count.is_multiple_of(6000) { + cleanup_zombie_pjsua_calls(); + } + } +} + +/// Process a SIP command in the PJSUA thread +/// +/// This must be called from the PJSUA event loop thread to avoid deadlocks. +fn process_sip_command(cmd: SipCommand, calls: &Arc>) { + match cmd { + SipCommand::PlayDirectToCall { call_id, samples } => { + // Play audio directly to a call (bypasses channel buffer) + if let Err(e) = play_audio_to_call_direct(call_id, &samples) { + tracing::error!("Failed to play direct audio to call {}: {}", call_id, e); + } + } + SipCommand::StartConnectingLoop { call_id, samples } => { + // Queue to audio thread to avoid race with pjmedia_port_get_frame + queue_pjsua_op(PendingPjsuaOp::StartLoop { call_id, samples }); + } + SipCommand::Hangup { call_id } => { + // Stop any looping audio first + stop_loop(call_id); + // Always try to hangup - PJSUA will handle if call doesn't exist + // Remove from our tracking if present + calls.remove(&call_id); + hangup_call(call_id); + } + SipCommand::Answer { call_id } => { + answer_call(call_id); + } + SipCommand::Send183 { call_id } => { + send_183_session_progress(call_id); + } + SipCommand::StartStreaming { call_id, path } => { + // Queue streaming to audio thread (handles timing and hangup detection) + queue_pjsua_op(PendingPjsuaOp::StartStreaming { + call_id, + path, + hangup_on_complete: true, // Easter egg calls hangup when done + }); + } + SipCommand::StartTestTone { call_id } => { + // Queue test tone to audio thread + queue_pjsua_op(PendingPjsuaOp::StartTestTone { call_id }); + } + SipCommand::Redirect { + call_id, + domain, + extension, + } => { + // Stop any connecting loop first + stop_loop(call_id); + // Send 302 from the PJSUA thread (safe - no deadlock with PJSIP internals) + unsafe { + callbacks::send_302_redirect(call_id, &domain, &extension); + } + calls.remove(&call_id); + } + SipCommand::MakeOutboundCall { + tracking_id, + sip_uri, + caller_display_name, + fork_total, + } => { + info!( + "Making outbound call: tracking_id={}, uri={}, caller={:?}, fork={}/{}", + tracking_id, sip_uri, caller_display_name, fork_total, fork_total + ); + match make_outbound_call(&sip_uri, caller_display_name.as_deref()) { + Ok(call_id) => { + // Store tracking_id -> call_id mapping + let outbound_calls = OUTBOUND_CALL_TRACKING.get_or_init(DashMap::new); + outbound_calls.insert(call_id, tracking_id.clone()); + // Register in fork group + fork_group::add_member(&tracking_id, call_id, fork_total); + info!( + "Outbound call started: tracking_id={}, call_id={}", + tracking_id, call_id + ); + calls.insert(call_id, CallState); + } + Err(e) => { + error!( + "Failed to make outbound call (tracking_id={}): {}", + tracking_id, e + ); + // Track the initial failure in fork group + fork_group::add_initial_failure(&tracking_id, fork_total); + } + } + } + SipCommand::RespondRegister { pending, auth_ok } => { + // Complete a deferred REGISTER response. Must run on the pjsua + // thread because pjsip_tsx_send_msg is not thread-safe. + unsafe { + use pjsua::*; + use std::os::raw::c_char; + + let tsx = pending.tsx.0; + let tdata = pending.tdata.0; + + if tsx.is_null() || tdata.is_null() { + tracing::warn!("RespondRegister: null tsx or tdata"); + return; + } + + if auth_ok { + // Add Expires header to the pre-built 200 OK + let expires_str = format!("{}", pending.expires); + let hdr_name = std::ffi::CString::new("Expires").unwrap(); + let hdr_value = std::ffi::CString::new(expires_str).unwrap(); + + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + let value = pj_str(hdr_value.as_ptr() as *mut c_char); + let hdr = pjsip_generic_string_hdr_create((*tdata).pool, &name, &value); + if !hdr.is_null() { + pj_list_insert_before( + &mut (*(*tdata).msg).hdr as *mut pjsip_hdr as *mut pj_list_type, + hdr as *mut pj_list_type, + ); + } + } else { + // Rewrite the pre-built 200 to a 403 Forbidden + (*(*tdata).msg).line.status.code = 403; + let reason = b"Forbidden\0"; + let ptr = pj_pool_alloc((*tdata).pool, reason.len()) as *mut u8; + std::ptr::copy_nonoverlapping(reason.as_ptr(), ptr, reason.len()); + (*(*tdata).msg).line.status.reason.ptr = ptr as *mut c_char; + (*(*tdata).msg).line.status.reason.slen = + (reason.len() - 1) as std::os::raw::c_long; + } + + let status = pjsip_tsx_send_msg(tsx, tdata); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!( + "Failed to send deferred REGISTER response ({}): {}", + if auth_ok { 200 } else { 403 }, + status + ); + } + } + } + } +} + +/// Tracking map for outbound calls: pjsua call_id -> tracking_id +static OUTBOUND_CALL_TRACKING: std::sync::OnceLock> = + std::sync::OnceLock::new(); + +/// Get the tracking ID for an outbound call (if any) +pub fn get_outbound_tracking_id(call_id: CallId) -> Option { + OUTBOUND_CALL_TRACKING + .get() + .and_then(|m| m.get(&call_id).map(|v| v.clone())) +} + +/// Remove and return the tracking ID for an outbound call +pub fn remove_outbound_tracking(call_id: CallId) -> Option { + OUTBOUND_CALL_TRACKING + .get() + .and_then(|m| m.remove(&call_id).map(|(_, v)| v)) +} + +/// Make an outbound SIP call using pjsua +/// +/// If `caller_display_name` is provided, it sets the From header display name +/// to show who initiated the call from Discord (e.g., "Discord: username"). +fn make_outbound_call(sip_uri: &str, caller_display_name: Option<&str>) -> Result { + unsafe { + let uri = std::ffi::CString::new(sip_uri).map_err(|e| e.to_string())?; + let mut call_id: ::pjsua::pjsua_call_id = -1; + + // Explicit call settings: audio only, no video, no T.140 text. + // The default txt_cnt=1 adds an m=text stream to the SDP, bloating + // the INVITE beyond the ~1300-byte UDP fragmentation threshold. + let mut opt = std::mem::MaybeUninit::<::pjsua::pjsua_call_setting>::uninit(); + ::pjsua::pjsua_call_setting_default(opt.as_mut_ptr()); + let opt_ptr = opt.assume_init_mut(); + opt_ptr.aud_cnt = 1; + opt_ptr.vid_cnt = 0; + opt_ptr.txt_cnt = 0; + + // Set up msg_data with custom From header if caller display name provided + let mut msg_data = std::mem::MaybeUninit::<::pjsua::pjsua_msg_data>::uninit(); + ::pjsua::pjsua_msg_data_init(msg_data.as_mut_ptr()); + let msg_data_ptr = msg_data.assume_init_mut(); + + // Build the From URI with display name: "name" + // The local_uri field overrides the From header in the outgoing INVITE + let from_uri_cstring; + if let Some(name) = caller_display_name { + // Get the account's SIP URI to use as the address part + let mut acc_info = std::mem::MaybeUninit::<::pjsua::pjsua_acc_info>::uninit(); + let acc_uri = if ::pjsua::pjsua_acc_get_info(0, acc_info.as_mut_ptr()) + == ::pjsua::pj_constants__PJ_SUCCESS as i32 + { + let ai = acc_info.assume_init(); + let uri_str = std::ffi::CStr::from_ptr(ai.acc_uri.ptr) + .to_string_lossy() + .into_owned(); + uri_str + } else { + "sip:sipcord@localhost".to_string() + }; + + // Sanitize display name: whitelist printable ASCII, strip control chars + // and characters that could break SIP header parsing or enable injection + let sanitized: String = name + .chars() + .filter(|c| *c >= ' ' && *c != '"' && *c != '<' && *c != '>' && *c != '\\') + .take(64) + .collect(); + let from_uri = format!("\"{}\" <{}>", sanitized, acc_uri); + from_uri_cstring = std::ffi::CString::new(from_uri).map_err(|e| e.to_string())?; + msg_data_ptr.local_uri = + ::pjsua::pj_str(from_uri_cstring.as_ptr() as *mut std::os::raw::c_char); + } + + let status = ::pjsua::pjsua_call_make_call( + 0, // default account + &::pjsua::pj_str(uri.as_ptr() as *mut std::os::raw::c_char), + opt_ptr, // call settings (no text stream) + std::ptr::null_mut(), // user data + msg_data_ptr, // msg_data with custom From header + &mut call_id, + ); + + if status != ::pjsua::pj_constants__PJ_SUCCESS as i32 { + return Err(format!("pjsua_call_make_call failed: {}", status)); + } + + Ok(CallId::new(call_id)) + } +} diff --git a/sipcord-bridge/src/transport/sip/nat.rs b/sipcord-bridge/src/transport/sip/nat.rs new file mode 100644 index 0000000..8be097e --- /dev/null +++ b/sipcord-bridge/src/transport/sip/nat.rs @@ -0,0 +1,909 @@ +//! NAT-related SIP rewriting for Contact headers and SDP bodies +//! +//! This module consolidates all NAT rewriting logic: +//! - Local-network rewriting (tx path): rewrites Contact + SDP in outgoing +//! requests/responses so that local-network clients use the local IP +//! - Far-end NAT fixup (rx path): rewrites private IPs in incoming responses +//! to the actual public source IP + +use super::ffi::types::*; +use super::ffi::utils::pj_str_to_string; +use pjsua::*; +use std::ffi::CString; +use std::net::Ipv4Addr; +use std::os::raw::c_char; +use std::ptr; + +// Private helpers + +/// Remove dynamic payload types (96+) from `m=` lines when they lack a corresponding +/// `a=rtpmap:` attribute in that media section. This prevents PJSIP's SDP validator +/// from rejecting the SDP with PJMEDIA_SDP_EMISSINGRTPMAP. +/// +/// Returns `Some(sanitized)` if any orphan dynamic PTs were stripped, `None` if no changes. +fn sanitize_sdp_missing_rtpmap(sdp: &str) -> Option { + // Split SDP into lines, grouping by media sections. + // Session-level lines come before the first m= line. + // Each m= line starts a new media section that includes all following a=/b=/c= lines + // until the next m= line or end of SDP. + + let lines: Vec<&str> = sdp.lines().collect(); + let mut result_lines: Vec = Vec::with_capacity(lines.len()); + let mut changed = false; + + // Find media section boundaries (indices of m= lines) + let mut section_starts: Vec = Vec::new(); + for (i, line) in lines.iter().enumerate() { + if line.starts_with("m=") { + section_starts.push(i); + } + } + + // Session-level lines (before first m= line) pass through unchanged + let first_m = section_starts.first().copied().unwrap_or(lines.len()); + for line in &lines[..first_m] { + result_lines.push(line.to_string()); + } + + // Process each media section + for (sec_idx, &start) in section_starts.iter().enumerate() { + let end = section_starts + .get(sec_idx + 1) + .copied() + .unwrap_or(lines.len()); + + let m_line = lines[start]; + let section_lines = &lines[start + 1..end]; + + // Parse m= line: m= ... + let parts: Vec<&str> = m_line.split_whitespace().collect(); + if parts.len() < 4 { + // Malformed m= line, pass through + for line in &lines[start..end] { + result_lines.push(line.to_string()); + } + continue; + } + + let transport = parts[2]; + + // Only sanitize RTP-based transports (not UDPTL for T.38, etc.) + if !transport.starts_with("RTP/") { + for line in &lines[start..end] { + result_lines.push(line.to_string()); + } + continue; + } + + // Collect rtpmap PTs declared in this section + let mut rtpmap_pts: std::collections::HashSet = std::collections::HashSet::new(); + for line in section_lines { + // a=rtpmap:96 opus/48000/2 + if let Some(rest) = line.strip_prefix("a=rtpmap:") { + if let Some(pt_str) = rest.split_whitespace().next() { + if let Ok(pt) = pt_str.parse::() { + rtpmap_pts.insert(pt); + } + } + } + } + + // Check which PTs in the m= line need stripping + let payload_types = &parts[3..]; + let mut kept_pts: Vec<&str> = Vec::new(); + let mut stripped_pts: Vec = Vec::new(); + + for pt_str in payload_types { + if let Ok(pt) = pt_str.parse::() { + if pt >= 96 && !rtpmap_pts.contains(&pt) { + stripped_pts.push(pt); + continue; + } + } + kept_pts.push(pt_str); + } + + if stripped_pts.is_empty() { + // No changes needed for this section + for line in &lines[start..end] { + result_lines.push(line.to_string()); + } + continue; + } + + // If stripping all PTs would leave none, leave the m= line unchanged + if kept_pts.is_empty() { + for line in &lines[start..end] { + result_lines.push(line.to_string()); + } + continue; + } + + changed = true; + + // Rebuild m= line with kept PTs only + let new_m_line = format!( + "{} {} {} {}", + parts[0], + parts[1], + parts[2], + kept_pts.join(" ") + ); + result_lines.push(new_m_line); + + // Copy section attribute lines, stripping a=fmtp: for removed PTs + let stripped_set: std::collections::HashSet = stripped_pts.into_iter().collect(); + for line in section_lines { + if let Some(rest) = line.strip_prefix("a=fmtp:") { + if let Some(pt_str) = rest.split_whitespace().next() { + if let Ok(pt) = pt_str.parse::() { + if stripped_set.contains(&pt) { + continue; // skip fmtp for stripped PT + } + } + } + } + result_lines.push(line.to_string()); + } + } + + if changed { + Some(result_lines.join("\r\n") + "\r\n") + } else { + None + } +} + +/// Check if an IPv4 address is in RFC 1918 private space +fn is_rfc1918(ip: Ipv4Addr) -> bool { + let o = ip.octets(); + (o[0] == 10) || (o[0] == 172 && (16..=31).contains(&o[1])) || (o[0] == 192 && o[1] == 168) +} + +/// Extract the destination IPv4 address from `pjsip_tx_data` transport info. +/// +/// Returns `None` if transport info is invalid or the address is not IPv4. +unsafe fn extract_dst_ipv4(tdata: *const pjsip_tx_data) -> Option { + if (*tdata).tp_info.transport.is_null() || (*tdata).tp_info.dst_addr_len <= 0 { + return None; + } + + let dst_addr = &(*tdata).tp_info.dst_addr; + // PJ_AF_INET is typically 2 (same as AF_INET on most systems) + if dst_addr.addr.sa_family == 2 { + let addr_in = &dst_addr.ipv4; + let ip_bytes = addr_in.sin_addr.s_addr.to_ne_bytes(); + Some(Ipv4Addr::new( + ip_bytes[0], + ip_bytes[1], + ip_bytes[2], + ip_bytes[3], + )) + } else { + None + } +} + +/// Rewrite the Contact header's host and port via pool allocation. +/// +/// Uses vtable-based URI unwrapping (`p_get_uri`) to safely handle both +/// bare `pjsip_sip_uri` and `pjsip_name_addr`-wrapped URIs. +/// Returns `true` if the rewrite succeeded. +unsafe fn rewrite_contact_host( + pool: *mut pj_pool_t, + msg: *mut pjsip_msg, + new_host: &str, + new_port: u16, +) -> bool { + let contact_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_CONTACT, ptr::null_mut()) + as *mut pjsip_contact_hdr; + if contact_hdr.is_null() { + return false; + } + + let uri = (*contact_hdr).uri; + if uri.is_null() { + return false; + } + + // Unwrap via vtable to handle pjsip_name_addr wrapping + let uri_vptr = (*(uri as *const pjsip_uri)).vptr; + if uri_vptr.is_null() { + return false; + } + let get_uri_fn = match (*uri_vptr).p_get_uri { + Some(f) => f, + None => return false, + }; + let sip_uri_raw = get_uri_fn(uri as *mut std::os::raw::c_void); + if sip_uri_raw.is_null() { + return false; + } + let sip_uri = sip_uri_raw as *mut pjsip_sip_uri; + if (*sip_uri).host.ptr.is_null() || (*sip_uri).host.slen <= 0 { + return false; + } + + let Ok(host_cstr) = CString::new(new_host) else { + return false; + }; + let host_len = new_host.len(); + let pool_str = pj_pool_alloc(pool, host_len + 1) as *mut c_char; + if pool_str.is_null() { + return false; + } + + ptr::copy_nonoverlapping(host_cstr.as_ptr(), pool_str, host_len + 1); + (*sip_uri).host.ptr = pool_str; + (*sip_uri).host.slen = host_len as i64; + (*sip_uri).port = new_port as i32; + true +} + +/// Replace `old_ip` with `new_ip` inside the SDP body of `msg`, allocating +/// the replacement string from `pool`. Only rewrites `c=` (connection) and +/// `o=` (origin) lines to avoid corrupting attribute values that may +/// coincidentally contain the same IP string. Returns `true` if a +/// substitution was made. +unsafe fn rewrite_sdp_body( + pool: *mut pj_pool_t, + msg: *mut pjsip_msg, + old_ip: &str, + new_ip: &str, +) -> bool { + let body = (*msg).body; + if body.is_null() || (*body).len == 0 || (*body).data.is_null() { + return false; + } + + let body_slice = std::slice::from_raw_parts((*body).data as *const u8, (*body).len as usize); + let Ok(sdp_str) = std::str::from_utf8(body_slice) else { + return false; + }; + + // Line-by-line replacement: only rewrite c= and o= lines + let mut changed = false; + let new_sdp: String = sdp_str + .lines() + .map(|line| { + if (line.starts_with("c=") || line.starts_with("o=")) && line.contains(old_ip) { + changed = true; + line.replace(old_ip, new_ip) + } else { + line.to_string() + } + }) + .collect::>() + .join("\r\n"); + + // Preserve trailing CRLF + let new_sdp = new_sdp + "\r\n"; + + if !changed { + return false; + } + + let new_len = new_sdp.len(); + let new_body_ptr = pj_pool_alloc(pool, new_len) as *mut u8; + if new_body_ptr.is_null() { + return false; + } + + ptr::copy_nonoverlapping(new_sdp.as_ptr(), new_body_ptr, new_len); + (*body).data = new_body_ptr as *mut _; + (*body).len = new_len as u32; + true +} + +/// Unified local-network rewriting for outgoing tx data. +/// +/// Checks `LOCAL_NET_CONFIG`, verifies the destination is in the configured +/// CIDR, and rewrites the Contact header + SDP body. +/// +/// `direction` is used only for log messages ("request" or "response"). +unsafe fn rewrite_local_network_tdata(tdata: *mut pjsip_tx_data, direction: &str) -> bool { + let Some(Some((local_host, local_cidr, port, rtp_public_ip))) = LOCAL_NET_CONFIG.get() else { + return false; + }; + + if tdata.is_null() { + return false; + } + + let Some(dst_ip) = extract_dst_ipv4(tdata) else { + return false; + }; + + if !local_cidr.contains(&dst_ip) { + return false; + } + + let msg = (*tdata).msg; + if msg.is_null() { + return false; + } + + let mut changed = false; + + // Rewrite Contact header + if rewrite_contact_host((*tdata).pool, msg, local_host, *port) { + tracing::debug!( + "Rewrote {} Contact header for local client {}: host -> {}:{}", + direction, + dst_ip, + local_host, + port + ); + changed = true; + } + + // Rewrite SDP body if we have an RTP public IP to replace + if let Some(public_ip) = rtp_public_ip { + if rewrite_sdp_body((*tdata).pool, msg, public_ip, local_host) { + tracing::debug!( + "Rewrote {} SDP for local client {}: {} -> {}", + direction, + dst_ip, + public_ip, + local_host + ); + changed = true; + } + } + + changed +} + +/// Rewrite private IPs in Contact headers for external (non-local) clients. +/// +/// pjsua derives the Contact URI from the TCP/UDP connection's local address, +/// which is the bridge's private IP (e.g. 10.0.1.7) when running behind NAT. +/// External clients need the public hostname (e.g. bridge-usw1.sipcord.net) so +/// they can route in-dialog requests like BYE back to us. Without this fix, +/// phones that try to send BYE to the private IP will silently fail. +unsafe fn rewrite_private_contact_for_external(tdata: *mut pjsip_tx_data, direction: &str) -> bool { + let Some(Some((public_host, port))) = PUBLIC_HOST_CONFIG.get() else { + return false; + }; + + if tdata.is_null() { + return false; + } + + let msg = (*tdata).msg; + if msg.is_null() { + return false; + } + + // Find Contact header + let contact_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_CONTACT, ptr::null_mut()) + as *mut pjsip_contact_hdr; + if contact_hdr.is_null() { + return false; + } + + let uri = (*contact_hdr).uri; + if uri.is_null() { + return false; + } + + // Unwrap via vtable to handle pjsip_name_addr wrapping + let uri_vptr = (*(uri as *const pjsip_uri)).vptr; + if uri_vptr.is_null() { + return false; + } + let get_uri_fn = match (*uri_vptr).p_get_uri { + Some(f) => f, + None => return false, + }; + let sip_uri_raw = get_uri_fn(uri as *mut std::os::raw::c_void); + if sip_uri_raw.is_null() { + return false; + } + let sip_uri = sip_uri_raw as *mut pjsip_sip_uri; + if (*sip_uri).host.ptr.is_null() || (*sip_uri).host.slen <= 0 { + return false; + } + + let host = pj_str_to_string(&(*sip_uri).host); + + // Only rewrite if Contact host is a private (RFC 1918) IP + let contact_ip: Ipv4Addr = match host.parse() { + Ok(ip) => ip, + Err(_) => return false, // Already a hostname, no rewrite needed + }; + + if !is_rfc1918(contact_ip) { + return false; // Public IP, no rewrite needed + } + + // Skip if destination is also private (local-network rewrite handles that) + if let Some(dst_ip) = extract_dst_ipv4(tdata) { + if is_rfc1918(dst_ip) { + return false; + } + } + + // Rewrite Contact to public host + if rewrite_contact_host((*tdata).pool, msg, public_host, *port) { + tracing::debug!( + "Rewrote {} Contact for external client: {} -> {}:{}", + direction, + host, + public_host, + port + ); + return true; + } + + false +} + +// Public callbacks + +/// Callback to rewrite Contact header and SDP body in outgoing responses. +/// +/// Two rewrites are applied in order: +/// 1. Local-network rewrite: for clients on the local CIDR, use the local IP +/// 2. Public-host rewrite: for external clients, replace private Contact IPs +/// with the public hostname so they can route BYE back to us +pub unsafe extern "C" fn on_tx_response_cb(tdata: *mut pjsip_tx_data) -> pj_status_t { + let local_rewrite = rewrite_local_network_tdata(tdata, "response"); + let public_rewrite = rewrite_private_contact_for_external(tdata, "response"); + + // If we modified headers, the buffer was already serialized by mod-msg-print + // (priority 8, before our module at priority 32). Invalidate and re-encode + // so the changes actually reach the wire. + if local_rewrite || public_rewrite { + pjsip_tx_data_invalidate_msg(tdata); + pjsip_tx_data_encode(tdata); + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Callback to rewrite Contact header and SDP body in outgoing requests. +/// Same dual-rewrite logic as the response path. +pub unsafe extern "C" fn on_tx_request_cb(tdata: *mut pjsip_tx_data) -> pj_status_t { + let local_rewrite = rewrite_local_network_tdata(tdata, "request"); + let public_rewrite = rewrite_private_contact_for_external(tdata, "request"); + + // If we modified headers, the buffer was already serialized by mod-msg-print + // (priority 8, before our module at priority 32). Invalidate and re-encode + // so the changes actually reach the wire. + if local_rewrite || public_rewrite { + pjsip_tx_data_invalidate_msg(tdata); + pjsip_tx_data_encode(tdata); + } + + pj_constants__PJ_SUCCESS as pj_status_t +} + +/// Callback to fix far-end NAT traversal in incoming SIP requests (INVITEs). +/// +/// When a phone behind NAT sends an INVITE, its SDP body contains private IPs: +/// - SDP `c=IN IP4 192.168.x.x` -> We'd send RTP to an unreachable private IP +/// +/// This callback detects the NAT condition (private SDP IP != packet source IP) +/// and rewrites the SDP before PJSIP's invite/dialog layer processes it, +/// so the media session uses the correct public address. +pub unsafe extern "C" fn on_rx_request_nat_fixup_cb(rdata: *mut pjsip_rx_data) -> pj_bool_t { + if rdata.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Only process requests (safety check) + if (*msg).type_ != pjsip_msg_type_e_PJSIP_REQUEST_MSG { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Only process INVITE and re-INVITE (they carry SDP with media addresses) + let method_id = (*msg).line.req.method.id; + if method_id != pjsip_method_e_PJSIP_INVITE_METHOD { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Check if there's a body (SDP) + let body = (*msg).body; + if body.is_null() || (*body).len == 0 || (*body).data.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Extract source IP from packet info + let src_name = &(*rdata).pkt_info.src_name; + let name_len = src_name + .iter() + .position(|&c| c == 0) + .unwrap_or(src_name.len()); + let src_ip_str = match std::str::from_utf8(std::slice::from_raw_parts( + src_name.as_ptr() as *const u8, + name_len, + )) { + Ok(s) => s, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, + }; + let src_ip: Ipv4Addr = match src_ip_str.parse() { + Ok(ip) => ip, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, + }; + + // Parse SDP to find c= line IP and check if it's a private address + let body_slice = std::slice::from_raw_parts((*body).data as *const u8, (*body).len as usize); + let sdp_str = match std::str::from_utf8(body_slice) { + Ok(s) => s, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, + }; + + // Find any connection address in the SDP that needs NAT fixup. + // Check ALL c= lines (session-level and per-media) — if any contain a + // private IP different from the packet source, rewrite the SDP. + let mut needs_rewrite = false; + let mut private_ip_str: Option<&str> = None; + for line in sdp_str.lines() { + if let Some(addr_str) = line.strip_prefix("c=IN IP4 ") { + let addr_str = addr_str.trim(); + if let Ok(sdp_ip) = addr_str.parse::() { + if is_rfc1918(sdp_ip) && sdp_ip != src_ip { + needs_rewrite = true; + private_ip_str = Some(addr_str); + break; + } + } + } + } + + if needs_rewrite { + if let Some(private_ip) = private_ip_str { + let pool = (*rdata).tp_info.pool; + if !pool.is_null() { + if rewrite_sdp_body(pool, msg, private_ip, src_ip_str) { + tracing::debug!( + "NAT fixup (INVITE): SDP rewritten {} -> {} (from {}:{})", + private_ip, + src_ip_str, + src_ip_str, + (*rdata).pkt_info.src_port + ); + } + } + } + } + + // Also rewrite Contact header if present and has private IP + let contact_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_CONTACT, ptr::null_mut()) + as *mut pjsip_contact_hdr; + if !contact_hdr.is_null() { + let uri = (*contact_hdr).uri; + if !uri.is_null() { + let uri_vptr = (*(uri as *const pjsip_uri)).vptr; + if !uri_vptr.is_null() { + if let Some(get_uri_fn) = (*uri_vptr).p_get_uri { + let sip_uri_raw = get_uri_fn(uri as *mut std::os::raw::c_void); + if !sip_uri_raw.is_null() { + let sip_uri = sip_uri_raw as *mut pjsip_sip_uri; + let contact_host = pj_str_to_string(&(*sip_uri).host); + if let Ok(contact_ip) = contact_host.parse::() { + if is_rfc1918(contact_ip) && contact_ip != src_ip { + let src_port = (*rdata).pkt_info.src_port as u16; + let pool = (*rdata).tp_info.pool; + if !pool.is_null() { + if let Ok(new_host_cstr) = CString::new(src_ip_str) { + let host_len = src_ip_str.len(); + let pool_str = + pj_pool_alloc(pool, host_len + 1) as *mut c_char; + if !pool_str.is_null() { + ptr::copy_nonoverlapping( + new_host_cstr.as_ptr(), + pool_str, + host_len + 1, + ); + (*sip_uri).host.ptr = pool_str; + (*sip_uri).host.slen = host_len as i64; + (*sip_uri).port = src_port as i32; + tracing::debug!( + "NAT fixup (INVITE): Contact rewritten {} -> {}:{}", + contact_host, + src_ip_str, + src_port + ); + } + } + } + } + } + } + } + } + } + } + + // Sanitize SDP: strip dynamic payload types (96+) that lack a=rtpmap attributes. + // Without this, PJSIP's SDP validator rejects these INVITEs with EMISSINGRTPMAP. + let body = (*msg).body; + if !body.is_null() && (*body).len > 0 && !(*body).data.is_null() { + let body_slice = + std::slice::from_raw_parts((*body).data as *const u8, (*body).len as usize); + if let Ok(sdp_str) = std::str::from_utf8(body_slice) { + if let Some(sanitized) = sanitize_sdp_missing_rtpmap(sdp_str) { + let pool = (*rdata).tp_info.pool; + if !pool.is_null() { + let new_len = sanitized.len(); + let new_body_ptr = pj_pool_alloc(pool, new_len) as *mut u8; + if !new_body_ptr.is_null() { + ptr::copy_nonoverlapping(sanitized.as_ptr(), new_body_ptr, new_len); + (*body).data = new_body_ptr as *mut _; + (*body).len = new_len as u32; + tracing::debug!( + "SDP sanitized: stripped orphan dynamic payload types (from {}:{})", + src_ip_str, + (*rdata).pkt_info.src_port + ); + } + } + } + } + } + + pj_constants__PJ_FALSE as pj_bool_t +} + +/// Callback to fix far-end NAT traversal in incoming SIP responses. +/// +/// When the remote party (phone) is behind NAT, their responses contain +/// private IPs in the Contact header and SDP body: +/// - Contact: `` -> PRACK/ACK routed to unreachable private IP +/// - SDP `c=IN IP4 192.168.x.x` -> RTP sent to unreachable private IP +/// +/// This callback detects NAT (private Contact IP != packet source IP) and +/// rewrites both to the actual public source IP before PJSIP processes the +/// response, so the dialog target and media address are correct. +/// +/// Registered at priority 28 (before dialog/invite layer at 32) to ensure +/// the dialog's remote target uses the corrected address. +pub unsafe extern "C" fn on_rx_response_nat_fixup_cb(rdata: *mut pjsip_rx_data) -> pj_bool_t { + if rdata.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Only process 1xx/2xx responses (provisional and success) + let status_code = (*msg).line.status.code; + if !(100..300).contains(&status_code) { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Extract source IP from pkt_info.src_name (null-terminated char array) + let src_name = &(*rdata).pkt_info.src_name; + let name_len = src_name + .iter() + .position(|&c| c == 0) + .unwrap_or(src_name.len()); + let src_ip_str = match std::str::from_utf8(std::slice::from_raw_parts( + src_name.as_ptr() as *const u8, + name_len, + )) { + Ok(s) => s, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, + }; + let src_ip: Ipv4Addr = match src_ip_str.parse() { + Ok(ip) => ip, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, // IPv6 or invalid + }; + let src_port = (*rdata).pkt_info.src_port as u16; + + // Find Contact header in the response + let contact_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_CONTACT, ptr::null_mut()) + as *mut pjsip_contact_hdr; + if contact_hdr.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Get the SIP URI from the Contact (unwrap name_addr via vtable). + // The rx path requires vtable-based URI unwrapping (p_get_uri) because + // the Contact URI may be wrapped in a pjsip_name_addr, unlike the tx + // path where we can cast directly. + let uri = (*contact_hdr).uri; + if uri.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + let uri_vptr = (*(uri as *const pjsip_uri)).vptr; + if uri_vptr.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + let get_uri_fn = match (*uri_vptr).p_get_uri { + Some(f) => f, + None => return pj_constants__PJ_FALSE as pj_bool_t, + }; + let sip_uri_raw = get_uri_fn(uri as *mut std::os::raw::c_void); + if sip_uri_raw.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + let sip_uri = sip_uri_raw as *mut pjsip_sip_uri; + + // Parse Contact host as IPv4 + let contact_host = pj_str_to_string(&(*sip_uri).host); + let contact_ip: Ipv4Addr = match contact_host.parse() { + Ok(ip) => ip, + Err(_) => return pj_constants__PJ_FALSE as pj_bool_t, // Hostname, skip + }; + + // Only rewrite if Contact has a private IP that differs from the source + if !is_rfc1918(contact_ip) || contact_ip == src_ip { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // NAT detected: Contact has private IP, packet came from different (public) IP + tracing::debug!( + "NAT fixup: rewriting Contact {} -> {}:{} (response {} from {}:{})", + contact_host, + src_ip, + src_port, + status_code, + src_ip, + src_port + ); + + // Rewrite Contact URI host to the public source IP + let pool = (*rdata).tp_info.pool; + if !pool.is_null() { + if let Ok(new_host_cstr) = CString::new(src_ip_str) { + let host_len = src_ip_str.len(); + let pool_str = pj_pool_alloc(pool, host_len + 1) as *mut c_char; + if !pool_str.is_null() { + ptr::copy_nonoverlapping(new_host_cstr.as_ptr(), pool_str, host_len + 1); + (*sip_uri).host.ptr = pool_str; + (*sip_uri).host.slen = host_len as i64; + (*sip_uri).port = src_port as i32; + } + } + } + + // Rewrite SDP body: replace private IP with public source IP. + // Parse the SDP c= line directly to get the actual media IP — it may differ + // from the Contact header IP (e.g., dual-homed phone or double NAT). + let body = (*msg).body; + if !body.is_null() && (*body).len > 0 && !(*body).data.is_null() { + let body_slice = + std::slice::from_raw_parts((*body).data as *const u8, (*body).len as usize); + if let Ok(sdp_str) = std::str::from_utf8(body_slice) { + for line in sdp_str.lines() { + if let Some(addr_str) = line.strip_prefix("c=IN IP4 ") { + let addr_str = addr_str.trim(); + if let Ok(sdp_ip) = addr_str.parse::() { + if is_rfc1918(sdp_ip) && sdp_ip != src_ip { + if rewrite_sdp_body(pool, msg, addr_str, src_ip_str) { + tracing::debug!( + "NAT fixup: SDP rewritten {} -> {}", + addr_str, + src_ip_str + ); + } + break; + } + } + } + } + } + } + + // Return FALSE to let other modules also process this response + pj_constants__PJ_FALSE as pj_bool_t +} + +#[cfg(test)] +mod tests { + use super::*; + + + #[test] + fn test_is_rfc1918_10_network() { + assert!(is_rfc1918(Ipv4Addr::new(10, 0, 0, 1))); + assert!(is_rfc1918(Ipv4Addr::new(10, 255, 255, 255))); + } + + #[test] + fn test_is_rfc1918_172_16_network() { + assert!(is_rfc1918(Ipv4Addr::new(172, 16, 0, 1))); + assert!(is_rfc1918(Ipv4Addr::new(172, 31, 255, 255))); + } + + #[test] + fn test_is_rfc1918_192_168_network() { + assert!(is_rfc1918(Ipv4Addr::new(192, 168, 1, 1))); + assert!(is_rfc1918(Ipv4Addr::new(192, 168, 0, 0))); + } + + #[test] + fn test_is_rfc1918_public_addresses() { + assert!(!is_rfc1918(Ipv4Addr::new(8, 8, 8, 8))); + assert!(!is_rfc1918(Ipv4Addr::new(172, 15, 0, 1))); + assert!(!is_rfc1918(Ipv4Addr::new(172, 32, 0, 1))); + assert!(!is_rfc1918(Ipv4Addr::new(192, 167, 1, 1))); + assert!(!is_rfc1918(Ipv4Addr::new(1, 1, 1, 1))); + } + + + #[test] + fn test_sanitize_sdp_orphan_dynamic_pt_stripped() { + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + c=IN IP4 10.0.0.1\r\n\ + m=audio 5000 RTP/AVP 0 8 96\r\n\ + a=rtpmap:0 PCMU/8000\r\n\ + a=rtpmap:8 PCMA/8000\r\n"; + // PT 96 has no rtpmap -> should be stripped + let result = sanitize_sdp_missing_rtpmap(sdp).unwrap(); + assert!(result.contains("m=audio 5000 RTP/AVP 0 8\r\n")); + assert!(!result.contains("96")); + } + + #[test] + fn test_sanitize_sdp_all_valid_pts_unchanged() { + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + m=audio 5000 RTP/AVP 0 96\r\n\ + a=rtpmap:0 PCMU/8000\r\n\ + a=rtpmap:96 opus/48000/2\r\n"; + assert!(sanitize_sdp_missing_rtpmap(sdp).is_none()); + } + + #[test] + fn test_sanitize_sdp_non_rtp_transport_skipped() { + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + m=image 5000 udptl t38\r\n\ + a=T38FaxVersion:0\r\n"; + assert!(sanitize_sdp_missing_rtpmap(sdp).is_none()); + } + + #[test] + fn test_sanitize_sdp_all_pts_orphaned_unchanged() { + // If stripping all dynamic PTs would leave none, m= line stays unchanged + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + m=audio 5000 RTP/AVP 96 97\r\n"; + // Both 96 and 97 are dynamic with no rtpmap, but stripping both would leave no PTs + assert!(sanitize_sdp_missing_rtpmap(sdp).is_none()); + } + + #[test] + fn test_sanitize_sdp_mixed_valid_and_orphan() { + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + m=audio 5000 RTP/AVP 0 96 97\r\n\ + a=rtpmap:0 PCMU/8000\r\n\ + a=rtpmap:96 opus/48000/2\r\n\ + a=fmtp:97 mode=20\r\n"; + // PT 97 has no rtpmap -> stripped, its fmtp line also removed + let result = sanitize_sdp_missing_rtpmap(sdp).unwrap(); + assert!(result.contains("m=audio 5000 RTP/AVP 0 96\r\n")); + assert!(!result.contains("97")); + assert!(!result.contains("fmtp:97")); + // fmtp for 96 would be kept if it existed; rtpmap:96 should still be there + assert!(result.contains("a=rtpmap:96 opus/48000/2")); + } + + #[test] + fn test_sanitize_sdp_malformed_m_line() { + let sdp = "v=0\r\n\ + o=- 0 0 IN IP4 0.0.0.0\r\n\ + s=-\r\n\ + m=audio 5000\r\n"; + // Malformed m= line (< 4 parts) -> passes through unchanged + assert!(sanitize_sdp_missing_rtpmap(sdp).is_none()); + } +} diff --git a/sipcord-bridge/src/transport/sip/register_handler.rs b/sipcord-bridge/src/transport/sip/register_handler.rs new file mode 100644 index 0000000..a0a7777 --- /dev/null +++ b/sipcord-bridge/src/transport/sip/register_handler.rs @@ -0,0 +1,585 @@ +//! PJSIP module for REGISTER request handling +//! +//! This module handles: +//! - REGISTER requests with 401 challenge / Digest auth verification +//! - Storing registrations in the Registrar for inbound call routing + +use super::callbacks::{ + extract_digest_auth_from_rdata, extract_source_ip, extract_user_agent, is_sipvicious_scanner, +}; +use super::ffi::types::*; +use super::ffi::utils::pj_str_to_string; +use pjsua::*; +use std::ffi::CString; +use std::net::SocketAddr; +use std::os::raw::c_char; +use std::ptr; +use std::sync::atomic::{AtomicPtr, Ordering}; + +// Sendable pointer wrappers for pjsip types (used to move tsx/tdata across +// threads via the SipCommand channel). These MUST only be dereferenced from +// the pjsua event-loop thread. + +pub struct SendableTsx(pub *mut pjsip_transaction); +unsafe impl Send for SendableTsx {} + +pub struct SendableTdata(pub *mut pjsip_tx_data); +unsafe impl Send for SendableTdata {} + +/// A REGISTER transaction awaiting async auth verification. +/// Created in the pjsip callback, consumed in `process_sip_command`. +pub struct PendingRegisterTsx { + pub tsx: SendableTsx, + pub tdata: SendableTdata, + pub expires: u32, +} + +impl std::fmt::Debug for PendingRegisterTsx { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("PendingRegisterTsx") + .field("expires", &self.expires) + .finish() + } +} + +// Globals + +/// Channel for sending register events to the async verification task. +static REGISTER_EVENT_TX: std::sync::OnceLock> = + std::sync::OnceLock::new(); + +/// Sender half of the SIP command channel (for deferred REGISTER responses). +static SIP_COMMAND_TX: std::sync::OnceLock> = + std::sync::OnceLock::new(); + +/// Pointer to the registered pjsip_module, needed for `pjsip_tsx_create_uas2`. +static REGISTER_MODULE_PTR: AtomicPtr = AtomicPtr::new(ptr::null_mut()); + +pub fn set_register_event_sender(tx: tokio::sync::mpsc::Sender) { + let _ = REGISTER_EVENT_TX.set(tx); +} + +pub fn set_sip_command_sender(tx: crossbeam_channel::Sender) { + let _ = SIP_COMMAND_TX.set(tx); +} + +pub fn set_register_module_ptr(ptr: *mut pjsip_module) { + REGISTER_MODULE_PTR.store(ptr, Ordering::Release); +} + +// Helpers + +/// Initialize a pjsip_hdr as a list head (equivalent to pj_list_init C macro). +#[inline] +unsafe fn pj_list_init_hdr(hdr: *mut pjsip_hdr) { + (*hdr).next = hdr as *mut _; + (*hdr).prev = hdr as *mut _; +} + +/// Send a simple stateless SIP response (no custom headers). +unsafe fn send_simple_response(rdata: *mut pjsip_rx_data, status_code: u16, reason: &str) { + let endpt = pjsua_get_pjsip_endpt(); + if !endpt.is_null() { + let reason_cstr = CString::new(reason).unwrap(); + let reason_pj = pj_str(reason_cstr.as_ptr() as *mut c_char); + pjsip_endpt_respond_stateless( + endpt, + rdata, + status_code.into(), + &reason_pj, + ptr::null(), + ptr::null(), + ); + } +} + +/// Send a stateless 200 OK with an Expires header. +unsafe fn send_register_ok(rdata: *mut pjsip_rx_data, expires: u32) { + let endpt = pjsua_get_pjsip_endpt(); + if endpt.is_null() { + return; + } + + let expires_str = format!("{}", expires); + let hdr_name = CString::new("Expires").unwrap(); + let hdr_value = CString::new(expires_str).unwrap(); + + let pool = pjsua_pool_create(c"register_ok".as_ptr(), 512, 512); + if !pool.is_null() { + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + let value = pj_str(hdr_value.as_ptr() as *mut c_char); + let hdr = pjsip_generic_string_hdr_create(pool, &name, &value); + + if !hdr.is_null() { + let hdr_list = pj_pool_alloc(pool, std::mem::size_of::()) as *mut pjsip_hdr; + if !hdr_list.is_null() { + pj_list_init_hdr(hdr_list); + pj_list_insert_before(hdr_list as *mut pj_list_type, hdr as *mut pj_list_type); + + let status = pjsip_endpt_respond_stateless( + endpt, + rdata, + 200, + ptr::null(), + hdr_list, + ptr::null(), + ); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to respond 200 OK to REGISTER: {}", status); + } + // Release pool — pjsip_endpt_respond_stateless clones what it + // needs into rdata's pool, so our header pool can be freed now. + pj_pool_release(pool); + return; + } + } + // Header creation failed — release the pool before falling through + pj_pool_release(pool); + } + + // Fallback: respond without Expires header + let status = + pjsip_endpt_respond_stateless(endpt, rdata, 200, ptr::null(), ptr::null(), ptr::null()); + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to respond 200 OK to REGISTER: {}", status); + } +} + +/// Detect transport type (UDP/TCP/TLS) from the incoming request. +unsafe fn detect_transport(rdata: *mut pjsip_rx_data) -> crate::services::registrar::SipTransport { + if !(*rdata).tp_info.transport.is_null() { + let tp_type = (*(*rdata).tp_info.transport).key.type_ as u32; + if tp_type == pjsip_transport_type_e_PJSIP_TRANSPORT_TLS { + crate::services::registrar::SipTransport::Tls + } else if tp_type == pjsip_transport_type_e_PJSIP_TRANSPORT_TCP { + crate::services::registrar::SipTransport::Tcp + } else { + crate::services::registrar::SipTransport::Udp + } + } else { + crate::services::registrar::SipTransport::Udp + } +} + +/// Create a UAS transaction + pre-built response tdata for deferred REGISTER +/// responses. Returns `None` if transaction creation fails (caller should fall +/// back to stateless response). +unsafe fn create_register_tsx( + rdata: *mut pjsip_rx_data, + expires: u32, +) -> Option { + let endpt = pjsua_get_pjsip_endpt(); + let module_ptr = REGISTER_MODULE_PTR.load(Ordering::Acquire); + + if endpt.is_null() || module_ptr.is_null() { + return None; + } + + // Create UAS transaction + let mut tsx: *mut pjsip_transaction = ptr::null_mut(); + let status = pjsip_tsx_create_uas2(module_ptr, rdata, ptr::null_mut(), &mut tsx); + if status != pj_constants__PJ_SUCCESS as i32 || tsx.is_null() { + return None; + } + + // Feed the request to the transaction (starts Timer F, stores headers) + pjsip_tsx_recv_msg(tsx, rdata); + + // Pre-build a 200 OK response while rdata is still valid. + // The status code / reason will be modified before sending if auth fails. + let mut tdata: *mut pjsip_tx_data = ptr::null_mut(); + let status = pjsip_endpt_create_response(endpt, rdata, 200, ptr::null(), &mut tdata); + if status != pj_constants__PJ_SUCCESS as i32 || tdata.is_null() { + pjsip_tsx_terminate(tsx, 500); + return None; + } + + Some(PendingRegisterTsx { + tsx: SendableTsx(tsx), + tdata: SendableTdata(tdata), + expires, + }) +} + +// Main callback + +/// Callback to handle incoming SIP requests (for REGISTER support) +/// +/// SIP clients send REGISTER requests to register with the server. pjsua's high-level +/// API doesn't handle REGISTER since it's designed as a client library. We intercept +/// REGISTER requests here. +/// +/// Flow: +/// 1. REGISTER without Authorization header -> 401 with WWW-Authenticate challenge +/// 2. REGISTER with Authorization header: +/// a. Cache hit + verified -> immediate 200 OK (stateless) +/// b. Cache hit + mismatch -> immediate 403 Forbidden (stateless) +/// c. Cache miss -> defer via UAS transaction, verify via API, respond later +pub unsafe extern "C" fn on_rx_request_cb(rdata: *mut pjsip_rx_data) -> pj_bool_t { + if rdata.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Check if this is a REGISTER request + let method_id = (*msg).line.req.method.id; + if method_id != pjsip_method_e_PJSIP_REGISTER_METHOD { + // Not REGISTER, let other modules handle it + return pj_constants__PJ_FALSE as pj_bool_t; + } + + // Extract source IP for logging and ban checking + let source_ip = extract_source_ip(rdata); + let ip_str = source_ip + .map(|ip| ip.to_string()) + .unwrap_or_else(|| "unknown".to_string()); + + // Extract source port + let source_port = (*rdata).pkt_info.src_port as u16; + + // Ban checks: skip if banning disabled or IP is whitelisted + if let Some(ip) = source_ip { + if let Some(ban_mgr) = crate::services::ban::global() { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + // Check if IP is banned + let result = ban_mgr.check_banned(&ip); + if result.is_banned { + tracing::debug!("Rejecting REGISTER from banned IP {}", ip); + send_simple_response(rdata, 403, "Forbidden"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + } + } + } + + // Check User-Agent for SIPVicious scanners - instant permaban + if let Some(user_agent) = extract_user_agent(rdata) { + if is_sipvicious_scanner(&user_agent) { + if let Some(ip) = source_ip { + if let Some(ban_mgr) = crate::services::ban::global() { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) { + let result = + ban_mgr.record_permanent_ban(ip, "sipvicious_scanner_register"); + if result.should_log { + tracing::warn!( + "PERMABAN IP {} - SIPVicious scanner detected in REGISTER: User-Agent='{}'", + ip, user_agent + ); + } + } + } + } else { + tracing::warn!( + "SIPVicious scanner detected in REGISTER but no IP available: User-Agent='{}'", + user_agent + ); + } + send_simple_response(rdata, 403, "Forbidden"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + } + + // Rate limit REGISTER requests + if let Some(ip) = source_ip { + if let Some(ban_mgr) = crate::services::ban::global() { + if ban_mgr.is_enabled() && !ban_mgr.is_whitelisted(&ip) && ban_mgr.record_register(ip) { + tracing::debug!("Rejecting REGISTER from {} - rate limit exceeded", ip); + send_simple_response(rdata, 429, "Too Many Requests"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + } + } + + // Try to extract Digest auth params from Authorization header + let digest_params = extract_digest_auth_from_rdata(rdata); + + if let Some(mut params) = digest_params { + // Has auth - fill in REGISTER method + params.method = "REGISTER".to_string(); + + // Check auth failure cooldown before processing + if let Some(cache) = crate::services::auth_cache::AuthCache::global() { + if cache.is_in_cooldown(¶ms.username) { + tracing::debug!( + "Rejecting REGISTER from {} (user={}) - auth cooldown active", + ip_str, + params.username + ); + send_simple_response(rdata, 429, "Too Many Requests"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + } + + // Extract fields needed for all code paths + let contact_uri = extract_contact_uri(rdata); + let expires = extract_expires(rdata); + let source_addr = source_ip.map(|ip| SocketAddr::new(ip, source_port)); + let transport = detect_transport(rdata); + + // Auth cache verification + if let Some(cache) = crate::services::auth_cache::AuthCache::global() { + use crate::services::auth_cache::VerifyResult; + match cache.check(¶ms) { + VerifyResult::Verified => { + // Cache hit, auth OK — fast-path 200 OK + tracing::debug!( + "REGISTER auth OK (cached): user={} from {}", + params.username, + ip_str + ); + send_register_ok(rdata, expires); + // Send to async handler for registrar update + if let Some(tx) = REGISTER_EVENT_TX.get() { + let _ = tx.try_send(RegisterRequest { + digest_auth: params, + contact_uri: contact_uri.unwrap_or_default(), + source_addr, + transport, + expires, + pending_tsx: None, + }); + } + return pj_constants__PJ_TRUE as pj_bool_t; + } + VerifyResult::Mismatch => { + // Wrong password (cached HA1 didn't match) — 403 + tracing::debug!( + "REGISTER auth mismatch (cached): user={} from {}", + params.username, + ip_str + ); + send_simple_response(rdata, 403, "Forbidden"); + // Send to async so API can re-verify (cache may be stale + // after a password change) and update failure counts + if let Some(tx) = REGISTER_EVENT_TX.get() { + let _ = tx.try_send(RegisterRequest { + digest_auth: params, + contact_uri: contact_uri.unwrap_or_default(), + source_addr, + transport, + expires, + pending_tsx: None, + }); + } + return pj_constants__PJ_TRUE as pj_bool_t; + } + VerifyResult::Miss => { + // No cached HA1 — need API round-trip. + // Create a UAS transaction so we can respond after the + // async handler completes, without blocking pjsip. + tracing::debug!( + "REGISTER cache miss: user={} from {}, deferring to API", + params.username, + ip_str + ); + if let Some(pending) = create_register_tsx(rdata, expires) { + if let Some(tx) = REGISTER_EVENT_TX.get() { + let _ = tx.try_send(RegisterRequest { + digest_auth: params, + contact_uri: contact_uri.unwrap_or_default(), + source_addr, + transport, + expires, + pending_tsx: Some(pending), + }); + } + return pj_constants__PJ_TRUE as pj_bool_t; + } + // Transaction creation failed — fall through to stateless + // 200 OK below (same behaviour as before this change). + tracing::warn!( + "Failed to create tsx for deferred REGISTER, falling back to stateless 200" + ); + } + } + } + + // Default path: stateless 200 OK + async verification + // (non-sipcord builds, auth cache unavailable, or tsx creation failed) + tracing::debug!( + "REGISTER with auth from {} (user={}), responding 200 OK (stateless)", + ip_str, + params.username + ); + if let Some(tx) = REGISTER_EVENT_TX.get() { + let _ = tx.try_send(RegisterRequest { + digest_auth: params, + contact_uri: contact_uri.unwrap_or_default(), + source_addr, + transport, + expires, + pending_tsx: None, + }); + } + send_register_ok(rdata, expires); + } else { + // No Authorization header - send 401 challenge + tracing::debug!( + "REGISTER without auth from {}, sending 401 challenge", + ip_str + ); + + let endpt = pjsua_get_pjsip_endpt(); + if endpt.is_null() { + tracing::error!("Failed to get PJSIP endpoint for REGISTER 401 response"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + + // Generate a cryptographically random nonce + let nonce = { + let bytes: [u8; 16] = rand::random(); + bytes + .iter() + .map(|b| format!("{:02x}", b)) + .collect::() + }; + + let www_auth = format!( + "Digest realm=\"{}\", nonce=\"{}\", algorithm=MD5, qop=\"auth\"", + SIP_REALM, nonce + ); + + // Create WWW-Authenticate header + let hdr_name = CString::new("WWW-Authenticate").unwrap(); + let hdr_value = CString::new(www_auth).unwrap(); + + let pool = pjsua_pool_create(c"register_401".as_ptr(), 512, 512); + if pool.is_null() { + tracing::error!("Failed to create pool for REGISTER 401 response"); + return pj_constants__PJ_TRUE as pj_bool_t; + } + + let name = pj_str(hdr_name.as_ptr() as *mut c_char); + let value = pj_str(hdr_value.as_ptr() as *mut c_char); + let hdr = pjsip_generic_string_hdr_create(pool, &name, &value); + + if !hdr.is_null() { + let hdr_list = pj_pool_alloc(pool, std::mem::size_of::()) as *mut pjsip_hdr; + if !hdr_list.is_null() { + pj_list_init_hdr(hdr_list); + pj_list_insert_before(hdr_list as *mut pj_list_type, hdr as *mut pj_list_type); + + let status = pjsip_endpt_respond_stateless( + endpt, + rdata, + 401, + ptr::null(), + hdr_list, + ptr::null(), + ); + + if status != pj_constants__PJ_SUCCESS as i32 { + tracing::warn!("Failed to respond 401 to REGISTER: {}", status); + } + } + } + // Release pool — pjsip_endpt_respond_stateless clones headers internally + pj_pool_release(pool); + } + + // Return TRUE to indicate we handled this request + pj_constants__PJ_TRUE as pj_bool_t +} + +// Extraction helpers + +/// Extract Contact URI from REGISTER request +unsafe fn extract_contact_uri(rdata: *mut pjsip_rx_data) -> Option { + if rdata.is_null() { + return None; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return None; + } + + let contact_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_CONTACT, ptr::null_mut()) + as *const pjsip_contact_hdr; + + if contact_hdr.is_null() { + return None; + } + + let uri = (*contact_hdr).uri; + if uri.is_null() { + return None; + } + + // The Contact header URI is typically a pjsip_name_addr wrapping a pjsip_sip_uri. + // We must unwrap it via the vtable's p_get_uri (equivalent to pjsip_uri_get_uri() + // which is an inline C function not available through FFI). + let uri_vptr = (*(uri as *const pjsip_uri)).vptr; + if uri_vptr.is_null() { + return None; + } + let get_uri_fn = (*uri_vptr).p_get_uri?; + let sip_uri_raw = get_uri_fn(uri as *mut std::os::raw::c_void); + if sip_uri_raw.is_null() { + return None; + } + let sip_uri = sip_uri_raw as *const pjsip_sip_uri; + if (*sip_uri).host.ptr.is_null() || (*sip_uri).host.slen <= 0 { + return None; + } + + let host = pj_str_to_string(&(*sip_uri).host); + let port = (*sip_uri).port; + let user = if !(*sip_uri).user.ptr.is_null() && (*sip_uri).user.slen > 0 { + Some(pj_str_to_string(&(*sip_uri).user)) + } else { + None + }; + + let uri_str = match (user, port) { + (Some(u), p) if p > 0 => format!("sip:{}@{}:{}", u, host, p), + (Some(u), _) => format!("sip:{}@{}", u, host), + (None, p) if p > 0 => format!("sip:{}:{}", host, p), + (None, _) => format!("sip:{}", host), + }; + + Some(uri_str) +} + +/// Extract Expires value from REGISTER request (header or Contact param) +unsafe fn extract_expires(rdata: *mut pjsip_rx_data) -> u32 { + if rdata.is_null() { + return 3600; + } + + let msg = (*rdata).msg_info.msg; + if msg.is_null() { + return 3600; + } + + // Try Expires header first + let expires_hdr = pjsip_msg_find_hdr(msg, pjsip_hdr_e_PJSIP_H_EXPIRES, ptr::null_mut()) + as *const pjsip_expires_hdr; + + if !expires_hdr.is_null() { + return (*expires_hdr).ivalue as u32; + } + + // Default + 3600 +} + +// Types + +/// Data passed to the async register verification task +#[derive(Debug)] +pub struct RegisterRequest { + pub digest_auth: DigestAuthParams, + pub contact_uri: String, + pub source_addr: Option, + pub transport: crate::services::registrar::SipTransport, + pub expires: u32, + /// When set, the async handler must send the auth result back via + /// `SipCommand::RespondRegister` so the pjsip thread can complete + /// the UAS transaction. + pub pending_tsx: Option, +} diff --git a/wav/JoonaKouvolalainen.flac b/wav/JoonaKouvolalainen.flac new file mode 100644 index 0000000000000000000000000000000000000000..bdb07883caa840d6090378cd74fea4e0b6c21f81 GIT binary patch literal 5705708 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%0D>O#ZxJij#xYAo~+{2#Yg|{PV2I_ny9sv!J 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

1JXV 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�|L7jOZDy+p)0!h6+AUNdba|9m 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�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¨26LPfuCKHA*pYq8ksrxo5X}i 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

_-8#u>1>+;DImk%}GJ+3kngCRsrgc)3qY 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

nQd+5Z5RH5I#g;4`Xi&@ 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

ITM&$=8+aS!E}_}RZl)e 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�E(%EIaAr^!vlQgC+)DW^z|ga|%R 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

?WH!v?)J{I`eP+P-nukxJlxpMsSzfj2mQXAJ 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 z

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�c#@+$mmA}R4Y?TmFPqce4 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

{6IjqG)i0CMVFuZhh`V&m>v`@7O@)GT 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%0AQCdM!;BXRRAq3c2l%Y`zQ9DW&0|HBs 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

6j#EuV_N8JGFJE#Q1vr& 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%0AU8EIvQ4oEfm~A);1@ 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%0D4#x+QJbS4zuE7R7`tvL{i1eS8HK)b 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 efr717|v{D7m|w2W%3w1 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