Correct STCP close contracts and sanitizer issues in its test

This commit is contained in:
evgeny committed 2026-10-23 22:01:48 +02:00
1 parent 477d8f995b
commit bf5a128a05
2 files changed
+12 -4

No files matched your search

+5 -1
View File
@@ -194,8 +194,12 @@ void stcp_recv_set(struct stcp_conn *c, size_t need, int streaming,
// try to process buffered data according to recv_need/streaming/on_chunk
void stcp_recv_try(struct stcp_conn *c);
// unified close: closes socket, frees buffers, calls on_close. does NOT clean streams (stcp_conn_free does)
/* Мягкое закрытие: запрещает RX, досылает накопленный TX и REALITY close_notify.
* Завершение или таймаут 1 с вызывают do_close. Не освобождает внешние RX/TX очереди. */
void stcp_conn_finish(struct stcp_conn *c);
/* Немедленно закрывает сокет, отменяет таймеры, освобождает wire/recv/send буферы и потоки шифрования.
* on_close вызывается один раз; повторное закрытие игнорируется. Внешние RX/TX очереди остаются у владельца.
* Серверный allocated conn и free_on_close освобождаются отложенно; клиентский conn встроен в client handle. */
void stcp_conn_do_close(struct stcp_conn *c, int err);
// снимает принятый коннект из списка владеющего сервера (реализация в stcp_server.c)