docs(proxy): record teardown findings and refine counters

This commit is contained in:
evgeny committed 2026-10-24 12:39:09 +02:00
1 parent 5e80a9cc6c
commit ec1fc52da1
3 files changed
+13 -2

No files matched your search

+11
View File
@@ -4,6 +4,17 @@
## Текущие задачи
[ ] **Proxy: проверить ошибки teardown и убрать неверный ключ в тестовых конфигах** — обнаружено при аудите документации 24.10.2026.
Девять профильных тестов PASS, но в test_socks_http_proxy после ответов встречаются EPIPE (32)
в tcp_io error_cb и ENOTCONN (107) при shutdown write; причина и корректность cleanup отдельно не установлены.
Побайтовая проверка всех 16 загрузок проходит. Начать с информативного лога FIN/close/socket events
(proxy/socket), сопоставить обе половины и очереди; поведение по одному PASS не считать проверенным.
test_udp_proxy, test_icmp_proxy и test_socks_http_proxy также используют [tcp_proxy_server] enabled=yes:
парсер логирует Unknown option, но включает сервер при обработке любого параметра этой секции.
В тестах использовать поддержанный параметр, например connect_timeout=2000, либо отдельно согласовать API конфига.
ICMP здесь проверен через fallback без raw socket (нет прав); реальный raw ping не подтверждён.
Логи: /tmp/proxy-doc-audit-network-logs/test_socks_http_proxy.log, test_udp_proxy.log и test_icmp_proxy.log в том же каталоге.
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — общая задача открыта.
24.10.2026: тесты отдельно проверяют обработку RTO (опоздание<=20мс), ожидание готового повтора (<=100мс)
и доставку сверх заданной задержки канала (<=100мс). TX учитывается после принятия send.
+1 -1
View File
@@ -53,7 +53,7 @@ struct tcp_proxy_client_conn {
struct ll_queue* tx_queue; // буфер lwIP→ETCP при backpressure (аналог server read_queue)
struct queue_waiter_handle tx_waiter; // waiter на send_q (etcp_router_on_send_ready)
void* tx_retry_timer; // retry safety-net (force=1), аналог server retry_timer
void* tx_retry_timer; // safety-net 500 мс, повтор DATA с force=1 (окно proxy сохраняется)
uint32_t bytes_to_exit; // байт принято router для exit (из lwIP/TUN)
uint32_t bytes_from_exit; // байт получено от exit (в lwIP/TUN)
+1 -1
View File
@@ -45,7 +45,7 @@ struct tcp_proxy_server_conn {
void* retry_timer; // fallback 500 мс: возобновить read_queue, DATA отправляется с force=0
uint32_t bytes_sent; // сумма входящих DATA, учитывается до проверки/записи в TCP
uint32_t bytes_relayed; // байт принято router для клиента
uint32_t drain_count; // счётчик вызовов read_queue_drain_cb
uint32_t drain_count; // число успешно отправленных DATA из read_queue
uint32_t data_count; // счётчик входящих DATA от клиента
struct UASYNC* ua; // заимствованный loop для таймеров и отложенного free
};