bugfixed: MUST call sf_hold_task in sf_nio_notify for rare case

master
YuQing 2025-11-16 15:29:38 +08:00
parent 5495455fa7
commit d22f9da49c
1 changed files with 3 additions and 0 deletions

View File

@ -544,6 +544,7 @@ int sf_nio_notify(struct fast_task_info *task, const int stage)
}
}
sf_hold_task(task); //since 1.2.11
PTHREAD_MUTEX_LOCK(&task->thread_data->waiting_queue.lock);
task->notify_next = NULL;
if (task->thread_data->waiting_queue.tail == NULL) {
@ -633,6 +634,7 @@ void sf_recv_notify_read(int fd, const int event, void *arg)
__sync_bool_compare_and_swap(&task->nio_stages.notify,
stage, SF_NIO_STAGE_NONE);
}
sf_release_task(task); //since 1.2.11
}
}
@ -1299,6 +1301,7 @@ static int sock_write_done(struct fast_task_info *task,
if (SF_CTX->callbacks.send_done(task,
length, &next_stage) != 0)
{
ioevent_add_to_deleted_list(task);
return -1;
}