Compare commits

..

2 Commits

Author SHA1 Message Date
YuQing 848077797b upgrade version to 1.2.11 2025-11-16 17:01:06 +08:00
YuQing d22f9da49c bugfixed: MUST call sf_hold_task in sf_nio_notify for rare case 2025-11-16 15:29:38 +08:00
2 changed files with 6 additions and 3 deletions

View File

@ -2,7 +2,7 @@
%define CommitVersion %(echo $COMMIT_VERSION) %define CommitVersion %(echo $COMMIT_VERSION)
Name: libserverframe Name: libserverframe
Version: 1.2.10 Version: 1.2.11
Release: 1%{?dist} Release: 1%{?dist}
Summary: network framework library Summary: network framework library
License: AGPL v3.0 License: AGPL v3.0
@ -12,9 +12,9 @@ Source: http://github.com/happyfish100/libserverframe/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libfastcommon-devel >= 1.0.82 BuildRequires: libfastcommon-devel >= 1.0.83
Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id
Requires: libfastcommon >= 1.0.82 Requires: libfastcommon >= 1.0.83
%description %description
common framework library common framework library

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); PTHREAD_MUTEX_LOCK(&task->thread_data->waiting_queue.lock);
task->notify_next = NULL; task->notify_next = NULL;
if (task->thread_data->waiting_queue.tail == 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, __sync_bool_compare_and_swap(&task->nio_stages.notify,
stage, SF_NIO_STAGE_NONE); 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, if (SF_CTX->callbacks.send_done(task,
length, &next_stage) != 0) length, &next_stage) != 0)
{ {
ioevent_add_to_deleted_list(task);
return -1; return -1;
} }