|
|
|
|
@ -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); |
|
|
|
|
|