Record ETCP and STCP header audit findings
This commit is contained in:
1 parent
03f4cd7939
commit
91bb95a981
1 file changed
+35
@@ -4,6 +4,41 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **ETCP: etcp_connect выдаёт готовность индексированного DOWN/reset-соединения** — воспроизведено 22.10.2026:
|
||||
Ветка conn && !ctx в etcp_connect.c:281 проверяет только state==0; state==1 принимается за готовность.
|
||||
Стенд на реальных очередях/реестре вызывает EARLY и LATE при links_up=0, initialized=1;
|
||||
также при links_up=1, initialized=0, reinit_pending=1, session_required=1. Возврат 0 в обоих случаях.
|
||||
Это противоречит контракту готовности в etcp_connect.h/etcp_api.h; state отражает индексирование, не UP сессии.
|
||||
Проверить реальные вызывающие NCD/CM, определить условие готовности и ожидание восстановления/подтверждения;
|
||||
отдельно учесть close_requested и повторную подписку после уже выданного EARLY. Комментариями проблему не маскировать.
|
||||
Стенд вне репозитория /tmp/protocol-header-audit.c; лог /tmp/protocol-header-audit.log.
|
||||
|
||||
[ ] **ETCP: проверить распределение cwnd/inflight между линками** — воспроизведено 22.10.2026:
|
||||
etcp_loadbalancer.h обещает учёт cwnd/inflight в select_link; реализация фильтрует initialized/link_status/shaper
|
||||
и выбирает минимум inflight_bytes, но inflight_lim_bytes не проверяет. Стенд выбирает линк с 10000 байт при лимите 1.
|
||||
Вызов etcp_request_pkt после выбора добавляет inflight выбранному линку; общий допуск данных ограничивается отдельно.
|
||||
Определить границы ответственности общего окна/BBR/выбора линка, отдельно ACK/control/retrans/burst;
|
||||
проверить, где требуется ограничение отдельного линка, и согласовать реализацию и контракт. Не добавлять слепой запрет,
|
||||
способный заблокировать ACK или retrans. Стенд/лог: /tmp/protocol-header-audit.c, /tmp/protocol-header-audit.log.
|
||||
|
||||
[ ] **Аудит .h ETCP/STCP: исправить подтверждённые расхождения контрактов** — проверено 22.10.2026, исходники не менялись:
|
||||
stcp.h: do_close уже очищает оба sc_stream и планирует free для allocated/free_on_close; комментарий утверждает обратное.
|
||||
Разделить контракты finish (drain/запрет новых данных/до 1с) и do_close (немедленное закрытие/потеря очередей/callback).
|
||||
Описать владение внешними rx_queue/tx_queue, преусловия размера frame и callback/reentrancy/lifetime.
|
||||
stcp_client.h: ping автоматически освобождается после завершения; NULL на ошибке запуска не вызывает ping callback.
|
||||
RTT пинга — uint16_t в 0.1мс, от отправки STCP handshake, без TCP/SOCKS/REALITY dial; явно описать срок out_cli/handle.
|
||||
inst также нужен для NTP-времени и профиля REALITY, а не только padding автономного STCP.
|
||||
stcp_link.h/stcp_server.h: дополнить параметры, возвраты, время жизни callbacks/inst и различие handles
|
||||
серверного адаптера stcp_server_listen и базового stcp_server_create (одно имя opaque-типа, разные реализации).
|
||||
etcp.h: ref_count удерживает объект/phase-2, но close уже освобождает normalizer и линки в phase-1;
|
||||
reset_done не блокирует reinit (в реализации только запись/диагностика); last_rx_id не обновляется при RX.
|
||||
etcp_connection_ready объявлена без реализации/вызовов; рабочая функция — etcp_conn_ready.
|
||||
etcp_loadbalancer.h ссылается на отсутствующее packet_request_fn; фактически вызывается link_ready_for_send_fn.
|
||||
etcp_connections.h проверен частично: у data_len исключены все 3 байта timestamp/flag, не только timestamp;
|
||||
send_hook уступает SOCKS UDP; etcp_send_tcp_ping при отказе запуска возвращает отрицательный код без callback.
|
||||
etcp_session.h и etcp_padding.h сверены с реализацией без подтверждённых смысловых расхождений.
|
||||
Подробности: /tmp/protocol-header-audit.txt. Продолжить протоколы перед routing/BGP; media/file_transfer отложен.
|
||||
|
||||
[+] **Android: приём рации через SCO после отпускания PTT** — исправлено 22.10.2026:
|
||||
Общий MediaAudioController сохраняет разговорный тракт для SCO-only выхода, даже без подписчиков микрофона.
|
||||
AudioTrack рации снова использует USAGE_VOICE_COMMUNICATION: Android учитывает playback как разговорную активность.
|
||||
|
||||
Reference in new issue
Block a user