fix: use-after-free in tcp_conn_destroy + throttle consumer_ack

tcp_conn_destroy: set read/write queue callbacks to NULL before
queue_free to stop deferred autofetch (drain_cb on freed rc).

write_on_get_cb: throttle consumer_ack to every 8th write_queue
dequeue instead of every single one (was 30+ ACK/sec).

ack_batch field in tcp_proxy_server_conn.
This commit is contained in:
Evgeny committed 2026-06-03 22:47:23 +03:00
1 parent 0449a5fd9d
commit d784b2bfbe
3 files changed
+11 -4

No files matched your search

+2
View File
@@ -105,6 +105,8 @@ void tcp_conn_destroy(struct tcp_conn* tc) {
}
queue_waiter_cancel(tc->read_queue, &tc->read_waiter);
queue_set_empty_callback(tc->read_queue, NULL, NULL);
queue_set_callback(tc->read_queue, NULL, NULL);
queue_set_callback(tc->write_queue, NULL, NULL);
struct ll_entry* e;
while ((e = queue_data_get(tc->read_queue)) != NULL) {