From ba54936940cf201d4e17126cf9074a5568619980 Mon Sep 17 00:00:00 2001 From: TXuian <1163589503@qq.com> Date: Fri, 24 May 2024 13:45:27 +0800 Subject: [PATCH] Fix session bug. --- Ubiquitous/XiZi_AIoT/services/lib/ipc/libipc.c | 2 +- Ubiquitous/XiZi_AIoT/services/lib/ipc/session.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/lib/ipc/libipc.c b/Ubiquitous/XiZi_AIoT/services/lib/ipc/libipc.c index e17229523..83a6e2cfe 100644 --- a/Ubiquitous/XiZi_AIoT/services/lib/ipc/libipc.c +++ b/Ubiquitous/XiZi_AIoT/services/lib/ipc/libipc.c @@ -223,7 +223,7 @@ void ipc_server_loop(struct IpcNode* ipc_node) if (ipc_node->interfaces[ipc_server_loop_cur_msg->header.opcode]) { ipc_node->interfaces[ipc_server_loop_cur_msg->header.opcode](ipc_server_loop_cur_msg); // check if this session is delayed by op handler, all messages after the delayed message in current session is blocked. - if (is_cur_session_delayed()) { + if (ipc_server_loop_cur_msg->header.done == 0) { ipc_server_loop_cur_msg->header.delayed = 1; has_delayed = true; break; diff --git a/Ubiquitous/XiZi_AIoT/services/lib/ipc/session.c b/Ubiquitous/XiZi_AIoT/services/lib/ipc/session.c index 4cdbc143d..ac30efb53 100644 --- a/Ubiquitous/XiZi_AIoT/services/lib/ipc/session.c +++ b/Ubiquitous/XiZi_AIoT/services/lib/ipc/session.c @@ -46,7 +46,7 @@ int free_session(struct Session* session) void* session_alloc_buf(struct Session* session, int len) { - if (len > session_remain_capacity(session)) { + if (len < 0 || len > session_remain_capacity(session)) { return NULL; } void* buf = (void*)((uintptr_t)session->buf + session->tail); @@ -58,7 +58,7 @@ void* session_alloc_buf(struct Session* session, int len) bool session_free_buf(struct Session* session, int len) { - if (len > session_used_size(session)) { + if (len < 0 || len > session_used_size(session)) { return false; } assert(session_forward_head(session, len) != -1);