tcp_io: save read_queue to local var before queue_data_put, add NULL guard after

This commit is contained in:
Evgeny committed 2026-07-02 16:38:31 +03:00
1 parent e66156eb49
commit 1f541d6432
1 file changed
+4 -2
+4 -2
View File
@@ -209,8 +209,10 @@ static void read_cb(socket_t sock, void* arg) {
if (n > 0) {
e->dgram = buf;
e->len = (uint16_t)n;
queue_data_put(tc->read_queue, e);
if (tc->read_queue->count >= tc->read_high_water && !tc->read_paused) {
struct ll_queue* rq = tc->read_queue;
queue_data_put(rq, e);
// tc мог быть уничтожен через callback chain — read_queue обнулён
if (rq && tc->read_queue && tc->read_queue->count >= tc->read_high_water && !tc->read_paused) {
uasync_set_socket_read(tc->ua, tc->socket_id, 0);
tc->read_paused = 1;
queue_waiter_wait(tc->read_queue, &tc->read_waiter, resume_read_cb, tc);