evgeny
adc8b2a670
logging: describe STCP state and endpoint on timeout and close
2026-10-07 21:10:29 +02:00
evgeny
a069d11ef9
Protect REALITY STCP traffic with authenticated TLS-like records
2026-10-07 12:30:45 +02:00
evgeny
a49cf5434e
Add randomized ETCP padding and isolate STCP CTR streams per connection
2026-10-07 10:45:42 +02:00
evgeny
f67f090b2a
Synchronize signed group avatars in bounded 4 KiB blocks
2026-10-06 13:41:29 +02:00
evgeny
78a655bb05
Add asynchronous member file storage and desktop browser
2026-10-05 18:44:58 +02:00
evgeny
0dbdd47130
Fix Windows IPv6 socket option and const link address
2026-10-05 12:00:10 +02:00
evgeny
a97e8bcc1f
docs: update file inventory and module header contracts
...
Refresh both AGENTS guides and clarify module purpose, usage, ownership, threading, return values and wire formats in headers. Remove the unused timeout_heap freed_count field and unimplemented getter.
2026-10-04 13:10:01 +02:00
evgeny
d7fb0c83f9
Fix bounds and unsigned decoding in ETCP packet dumps
2026-10-02 02:52:32 +03:00
evgeny
ac45554439
Fix ETCP INIT collision scope and backpressure regression tests
2026-10-02 02:25:40 +03:00
evgeny
3d0ab35efe
Register file transfer and DM media services in the common core
2026-10-01 15:22:10 +03:00
evgeny
a65ef30d78
conn_mgr: resume recovery when local sockets change
2026-10-01 00:51:17 +03:00
evgeny
9e3a417059
Synchronize standby transitions and immediate keepalive phase announcements
2026-09-30 20:42:40 +03:00
evgeny
2d21c53b4b
Improve call buffering, CM handle lifecycle and radio PTT controls
2026-09-30 17:31:53 +03:00
evgeny
4503bdfa7e
diagnostics: explain and rate-limit rejected ETCP session data
2026-09-28 13:16: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
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
26e6c05313
Apply fresh BGP addresses to shared NCD connections
2026-09-27 19:18:40 +03:00
evgeny
3e25bcef02
Refactor Merkle sync into bounded bidirectional rounds with atomic member updates
2026-09-27 14:44:39 +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
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
evgeny
cc2d2b5f78
etcp: фикс UAF teardown (двойное закрытие линка) + вытеснение down-линка при коллизии адреса
...
- tcp_link_close_cb (серверная ветка): убрать преждевременный огонь link_status/on_link_down,
etcp_link_close сам снимает линк из списка и стреляет коллбэки в безопасном порядке
(устраняет двойное закрытие линка — UAF из callring 45502)
- etcp_connection_close: при callbacks_running откладывать закрытие через uasync_call_soon
вместо *(int*)0=0
- callbacks_running: uint8_t-флаг -> int-счётчик вложенности (++/--)
- etcp_fire_conn_status / etcp_fire_link_status_cbk: поднимать callbacks_running вокруг огня
- insert_link_queue: при коллизии адреса с чужим conn — ERROR при одинаковом pubkey,
отказ при up-линке, вытеснение (etcp_link_close) при down-линке
Попутно: доки/комментарии в etcp_router, ACK-интервал 100мс->10мс (ROUTER_ACK_INTERVAL_TB).
2026-09-26 13:40:33 +03:00
evgeny
3a4daf6e77
etcp: строгая последовательность коллбэков при закрытии (NEW→UP↔DOWN→DELETE)
...
- close: финальный per-connection DOWN только если был UP, до state=2
- etcp_cbk_fire / etcp_fire_conn_status / etcp_link_ready_callback / etcp_on_up: guard state==2
- документация контракта в etcp_api.h / etcp.h
2026-09-25 19:13:38 +03:00
evgeny
08e8b2f1cc
route_connectivity: фикс UAF при удалении узла с влётными пробами; отмена TCP-пингов при teardown
...
- topo_nodeq_remove_node: единый хелпер удаления nq (cancel проб + free paths/subnets + remove + free), заменяет все free-сайты
- route_connectivity_cancel_all: итерация по всем группам + зануление ctx->nq + отмена standby-defer
- etcp_send_tcp_ping: out_cli — хендл stcp_client для досрочной отмены; conn_probe_ctx.tcp_cli
- conn_mgr: cand_tcp_pings[] — отмена влётных candidate TCP-пингов в conn_mgr_destroy
2026-09-25 16:01:19 +03:00
evgeny
3f7b4351cd
stcp: фикс UAF log_dump, дренаж очередей при закрытии, защита pre-closed серверной ветки, логирование тихих сбросов rx
2026-09-25 13:49:43 +03:00
evgeny
fb4343fca6
transport: reality-релей idle-timeout (конфиг, дефолт 5с) + warn при >64 релеях; убрать лимит FD_SETSIZE; проверка socket_id в stcp_server
2026-09-24 12:08:45 +03:00
evgeny
d237dfec7c
diag: кольцевой трейс вызовов teardown + дамп при SIGSEGV (размотка UAF link close)
2026-09-22 20:52:02 +03:00
evgeny
93becd36e6
keepalive: TCP-линки без ретраев/ACK; не пинговать спящих пиров, bg-ping цикл ≤ 1/мин
2026-09-22 03:47:50 +03:00
evgeny
a3e890b711
keepalive: раздельный sleep-код (announce+ACK-ретраи в окне, dead-link) + без flagless в спячке
2026-09-22 03:29:42 +03:00
evgeny
a3df1720b4
keepalive: симметричный sleep-протокол (без is_server) + отдельный ACK-бит
2026-09-22 02:41:15 +03:00
evgeny
331c7849f0
keepalive: убрать периодический keepalive в standby (обе стороны молчат, только фазовые анонсы + один ack)
2026-09-22 02:19:28 +03:00
evgeny
945c6a82b0
keepalive: гвард нулевого тайминга фазы (busy-loop) + разделение echo/announce на сервере
2026-09-22 01:35:25 +03:00
evgeny
9f89fd0f7a
transport: keepalive duty-cycle тайминг (active_remaining+sleep_duration) + серверная фаза троттлинга
2026-09-22 01:20:26 +03:00
evgeny
e4e9fca243
transport: per-peer sleep callback (peer_sleep_cbk) fired from keepalive protocol
2026-09-22 00:40:32 +03:00
evgeny
5628138d16
etcp: keepalive sleep-протокол на флагах (KA_FLAG_SLEEP + sleep_time, announce-retry, ack/echo)
2026-09-21 23:30:39 +03:00
evgeny
8a9d8d0097
fix: утечки памяти в router-сервисах и при shutdown
...
- conn_mgr_router_recv_handler / md_etcp_recv не освобождали entry (рантайм-утечка на каждое сообщение)
- reality_relay: registry + shutdown hook (отложенный free не отрабатывал при остановке)
- etcp_router: uasync_drain_immediate после destroy (router_close_finalize)
- мелкие callback-списки: activity_cbks, node_cbks, props_cbks/apply_cbks
2026-09-21 21:55:11 +03:00
evgeny
2f3001458f
android: standby keepalive sync + rx logging during sleep
2026-09-21 21:17:35 +03:00
evgeny
ba1c2d85d3
reality_relay: async DNS вместо getaddrinfo + AGC-компрессор по умолчанию (-12 dBFS)
2026-09-20 15:28:46 +03:00
evgeny
27e66f1092
log: move socket diagnostics SYS->SOCKET and conn lifecycle ETCP->CONNECTION (avoid poll() flood)
2026-09-20 01:51:40 +03:00
evgeny
1bde2eca35
diag: log conn add/remove/free pointers to pinpoint BGP senders_list UAF
2026-09-20 01:42:05 +03:00
evgeny
16237b0df8
etcp_send: fix contract (caller owns entry on error) + fix 7 leak sites
2026-09-20 01:35:30 +03:00
evgeny
b33caa56b8
uasync: pass socket name to all add_socket call sites
2026-09-20 01:13:38 +03:00
evgeny
688785fc6e
etcp: фикс зависшего reinit_pending после реинита готового соединения
...
etcp_conn_queue_set_ready() делает ранний выход по state!=0, поэтому при
реините уже готового соединения (peer restart / duplicate INIT / collision)
reinit_pending оставался в 1 навсегда. Добавленные в 841b3042 guard'ы
etcp_conn_input/etcp_output_try_assembly дропали все входящие пакеты.
Снятие reinit_pending + REINIT перенесено в etcp_conn_ready.
2026-09-19 23:13:04 +03:00
evgeny
841b3042cf
etcp: фикс double-free буферов паковщика и повторных free после неудачного queue_data_put
...
- pn_send_to_etcp/pn_unpacker_cb: занулять pn->data/pn->recvpart ДО queue_data_put
(ре-энтрантный close/reinit в синхронной цепочке освобождал буфер повторно)
- etcp_output_try_assembly: гард state==2/reinit_pending + убрать re-put освобождённого entry
- etcp_conn_input: гард ре-энтрантного reinit/close в цикле секций, локальный etcp вместо pkt->link
- убраны повторные free после queue_data_put (он сам освобождает entry+dgram) в 6 местах
- диагностика: obj=%p в DOUBLE FREE, логи free dgram в pn_deinit/ack_recv
2026-09-19 21:17:33 +03:00
evgeny
b96ed8bd00
radio: PTT-радио в каналах (src/radio + chatgui + chatgui-android)
...
Новый модуль src/radio (radio/radio_audio/radio_headless) — push-to-talk
радио поверх topo-групп, доставка аудио в канал, headless-режим и тесты.
Интеграция в chatgui (ptt_hotkey_manager, radio_audio_engine, радионастройки,
вызовы) и chatgui-android (RadioAudioEngine, RadioOverlayService, UI).
2026-09-19 17:09:00 +03:00