evgeny
556b0bc7b7
call/radio: mic AGC compressor + selectable input device; proximity lock
2026-09-29 19:34:23 +03:00
evgeny
f12f61d7ee
call: add SpeexDSP AEC (acoustic echo cancellation) for desktop + Android
2026-09-29 17:01:30 +03:00
evgeny
1176411b79
radio: Silero VAD + auto-PTT; chatgui/android: app icon and background
2026-09-29 16:19:25 +03:00
evgeny
74ca98b38f
proxy: rename pcb guard, dedupe abort; tasks: FIN_WAIT_2 leak
2026-09-29 13:52:35 +03:00
evgeny
961a234d7d
proxy: detach lwIP pcb on local close, guard abort against freed pcb
...
При half-close (exit закрылся первым, браузер держит соединение) pcb уходил в
TIME_WAIT, а conn_finish ждал flow.fin_sent (доставку FIN в exit) — при backpressure
это не наступало, pc->pcb оставался висячим. Таймер TIME_WAIT освобождал pcb без
err_cb, и CLOSE_ALL давал double free. Теперь pcb отсоединяется по завершении
локальной стороны, а tcp_abort/tcp_close защищены проверкой memory_pool_is_freed.
2026-09-29 13:37:00 +03:00
evgeny
a73ae13df4
lwip/proxy: trace PCB lifetime in debug category, drop old noisy debug
2026-09-29 13:18:18 +03:00
evgeny
d8cbe2e589
Add proxy bug list and lightsout game (desktop + Android)
2026-09-29 12:19:23 +03:00
evgeny
e1946b208d
Preserve proxy TCP streams across connect, backpressure and FIN
2026-09-29 04:00:34 +03:00
evgeny
09bc8c35c5
Release TUN proxy connections when lwIP aborts their PCB
2026-09-29 03:59:30 +03:00
evgeny
f19ff11b36
Scope TCP proxy streams and restart messages to their peer
2026-09-29 03:58:53 +03:00
evgeny
268243feeb
Isolate datagram proxy state and replies between instances and peers
2026-09-29 03:58:14 +03:00
evgeny
4be1e62251
Parse IPv4 options and reject malformed TUN proxy packets
2026-09-29 03:57:37 +03:00
evgeny
10b66e2ad0
Validate SOCKS5 authentication and destination addresses
2026-09-29 03:57:21 +03:00
evgeny
7a41fcf512
Notify TCP writers when the final synchronous send drains
2026-09-29 03:57:15 +03:00
evgeny
518df33b0e
Fix UDP and ICMP packet construction at the TUN boundary
2026-09-29 03:56:55 +03:00
evgeny
fdec5b65c5
Add independent radio compressor and Android audio controls
2026-09-29 03:37:47 +03:00
evgeny
ce1f23fe46
Radio: stereo capture/playback with mono fallback; CAMCORDER source; bump RADIO_MAX_OPUS
...
- stereo capture: Android AudioRecord stereo (CAMCORDER source for stereo,
voice sources fall back to CAMCORDER) + desktop separate miniaudio
capture/playback devices (no asymmetric duplex)
- Opus stereo encode/decode, voice_jitter stereo (per-channel frame_size,
slot-based SoundTouch)
- radio_audio_start takes explicit capture_channels (stereo->mono fallback)
- RADIO_MAX_OPUS 256->512 (128kbps stereo frames up to 320B)
- radio_capture_stereo setting + desktop radio settings UI (opus mode/bitrate,
capture stereo)
- radio_send_to send stats logging (etcp_send ok/fail per second)
2026-09-29 02:31:41 +03:00
evgeny
331970a121
Radio: Opus mode/bitrate + mic source + PTT release tail; drop online status from member JSON
2026-09-29 00:40:10 +03:00
evgeny
e3caf15f32
Guard routing loops and reconcile blocked transit against current paths
...
Track visited nodes outside the signed body for all routed packet types. Recheck queued transit routes without losing FIFO priority, reject unknown-group transit, and suppress BGP announcements caused only by RTT jitter.
Document routing rules and wire format. Validate graph churn, REINIT, encrypted transit, malformed paths, loop drops and queue cleanup; full suite: 106 passed, 1 skipped, plus proxy integration and sanitizer checks.
2026-09-28 15:36:47 +03:00
evgeny
fa9e102271
Preserve config string terminator when preparing key updates
2026-09-28 15:16:57 +03:00
evgeny
39ce249361
Prune unconfirmed BGP paths and restart stalled exchanges
2026-09-28 14:58:13 +03:00
evgeny
b76e6553bc
Reconcile BGP paths and advertise selected routes per neighbor
2026-09-28 14:37:44 +03:00
evgeny
546e0c185d
Fix WITHDRAW removing nodes with surviving paths
2026-09-28 14:20:55 +03:00
evgeny
4503bdfa7e
diagnostics: explain and rate-limit rejected ETCP session data
2026-09-28 13:16:39 +03:00
evgeny
c63e93715f
fix: accept invite public keys with a leading zero byte
2026-09-28 12:26:13 +03:00
evgeny
904a9fbda1
docs: refresh development guides for current architecture
2026-09-28 12:10:39 +03:00
evgeny
01fcefdec5
docs: clarify core, group and chat header contracts
2026-09-28 12:01:08 +03:00
evgeny
72fee9e245
Separate core, UTUN and chat lifecycles with owned asynchronous work
2026-09-28 11:39:08 +03:00
evgeny
5838e63cde
Use shared group requests for config and chat connection planners
2026-09-28 11:07:25 +03:00
evgeny
0756a6e020
Serialize group topology lazily through a cancellable backpressure sender
2026-09-28 02:45:00 +03:00
evgeny
792776a1f6
Negotiate group sessions and scope topology messages to peer epochs
2026-09-28 02:15:54 +03:00
evgeny
52ef7a4b3c
Own recovery attempts in group sessions and require restored routes
2026-09-27 23:06:48 +03:00
evgeny
66c59501fc
Track topology exchange readiness per group and peer
2026-09-27 22:14:03 +03:00
evgeny
bce17d9cfc
Route UTUN configuration and group ownership through NCD
2026-09-27 21:59:32 +03:00
evgeny
9745a987ac
Define join contract and require committed CHAT membership for BGP
2026-09-27 20:34:24 +03:00
evgeny
1a8072e9b2
Release group NCD ownership when destroying peers
2026-09-27 20:08:17 +03:00
evgeny
26e6c05313
Apply fresh BGP addresses to shared NCD connections
2026-09-27 19:18:40 +03:00
evgeny
ec51b2d61f
Version signed node snapshots with persistent timestamps
2026-09-27 19:11:11 +03:00
evgeny
7374d1648c
Support 8 KiB member owner tags without signature or serialization truncation
2026-09-27 17:12:13 +03:00
evgeny
de714f5023
Add bounded Merkle pull lifecycle and terminal error handoff
2026-09-27 16:17:04 +03:00
evgeny
3e25bcef02
Refactor Merkle sync into bounded bidirectional rounds with atomic member updates
2026-09-27 14:44:39 +03:00
evgeny
1b92b4885b
Restrict dynamic auto socket test to Linux
2026-09-27 12:48:40 +03:00
evgeny
10d3ecfda4
Record final root transport and full suite validation
2026-09-27 12:19:52 +03:00
evgeny
03f71fd94e
Bound ETCP receive window and fix timestamp and allocator UB
2026-09-27 12:16:15 +03:00
evgeny
59f4802904
Fix autosocket ownership and exercise interface churn under load
2026-09-27 11:57:29 +03:00
evgeny
3131dcbb7c
Fix ETCP session recovery and router lifecycle; confirm chat invites before publishing
2026-09-27 02:51:47 +03:00
evgeny
018c8e795d
android: фикс UAF AudioTrack при переключении группы рации (start → releaseLocked)
2026-09-26 19:18:42 +03:00
evgeny
0209bcf5d3
android: рация — единый режим per-канал, не гаснет при выходе/заходе в группу
2026-09-26 19:12:07 +03:00
evgeny
44d4265084
ll_queue: queue_waiter_cancel отменяет отложенный call_soon при internal==NULL (фикс UAF waiter_defer)
2026-09-26 18:58:27 +03:00
evgeny
f6e6e2c73f
stcp: write-error закрывает conn отложенно (фикс UAF keepalive/etcp_tcp_send)
...
Синхронный send-путь (stcp_link_send → queue_data_put → tx_queue_cb →
flush_pending → try_send) при ошибке сокета вызывал stcp_conn_do_close →
on_close → tcp_link_close_cb → etcp_link_close внутри стека вызывающего,
освобождая ETCP_LINK под keepalive_timer_cb/etcp_tcp_send (use-after-free,
SIGSEGV в keepalive_timer_cb:210).
Теперь write-error планирует отложенный close (uasync_call_soon) с отменой
handle в stcp_conn_do_close; первый err сохраняется; flush_pending не работает
вне STCP_STATE_DATA. Мёртвый hook on_write_error удалён.
2026-09-26 16:42:51 +03:00