fix: set tc->sock=SOCKET_INVALID before on_error in handle_error

В одном epoll_wait batch три события для fd: EPOLLERR (освобождает tc),
EPOLLIN (read_cb), EPOLLOUT (write_cb). read_cb/write_cb guard проверяет
tc->sock==SOCKET_INVALID, но sock обнулялся ПОСЛЕ on_error.
Перенос sock=SOCKET_INVALID до on_error защищает от use-after-free.

Доказано: без фикса segfault на tcp_io.c:374 (write_cb → tc->connected).
С фиксом тест работает без крашей.
This commit is contained in:
Evgeny committed 2026-07-02 00:43:37 +03:00
1 parent aff3b2d00f
commit a97a38d867
3 files changed
+627 -622

No files matched your search

+621 -617
View File
File diff suppressed because it is too large. Load diff