- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll - stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close - utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP), add deferred drain in both Phase J and L - stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39, exchange ed25519_pubkey in both handshake directions - etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb - chat_sync.c: fix lk->conn NULL dereference for TCP links - test_stcp.c: update stcp_server_create/stcp_client_connect callsites - tools/chat_tcp_test: change transport udp→tcp
1.9 KiB
ETCP Packet Section Dump (etcp_debug)
1. Назначение
Вывод в лог человекочитаемой сводки по ETCP-пакету: направление (SEND/RECV), timestamp, и содержимое каждой секции — ACK (last_delivered, count, rx_dup), CH_TS (возвращаемый и принимаемый channel timestamp), PAYLOAD (размер и seq). Используется для отладки трафика на уровне отдельных пакетов.
2. Как пользоваться
#include "etcp_debug.h"
// В обработчике отправки/приёма пакета:
etcp_dump_pkt_sections(pkt, link, 1); // is_send=1 — отправка
etcp_dump_pkt_sections(pkt, link, 0); // is_send=0 — приём
Вывод идёт через DEBUG_INFO(DEBUG_CATEGORY_DUMP, ...). Для включения:
debug = dump=info
Вспомогательная функция
IP_STR ip = ip_to_string(0x0A000001);
// ip.a == "10.0.0.1"
3. API
IP_STR ip_to_string(uint32_t ip) — конвертирует IP (network byte order) в строку a.b.c.d. Возвращает структуру с буфером 16 байт.
void etcp_dump_pkt_sections(struct ETCP_DGRAM* pkt, struct ETCP_LINK* link, int is_send) — парсит pkt->data побайтово и выводит сводку секций: ETCP_SECTION_ACK (last_delivered, count, rx_dup_count), ETCP_SECTION_TIMESTAMP (ret_ts/recv_ts), ETCP_SECTION_PAYLOAD (size, seq). Неизвестные секции прерывают парсинг. Формат вывода:
ETCP PKT: SEND ts=12345 ack=100/5 dup=0 ch_ts=200/150 payload=1200(seq=101)
Зависимости
etcp_connections.h—struct ETCP_DGRAM,struct ETCP_LINKetcp.h— константыETCP_SECTION_*lib/debug_config.h—DEBUG_INFO(DEBUG_CATEGORY_DUMP, ...)