Fix session bug.

This commit is contained in:
TXuian 2024-05-24 13:45:27 +08:00
parent dd0c6c66ed
commit ba54936940
2 changed files with 3 additions and 3 deletions

View File

@ -223,7 +223,7 @@ void ipc_server_loop(struct IpcNode* ipc_node)
if (ipc_node->interfaces[ipc_server_loop_cur_msg->header.opcode]) { 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); 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. // 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; ipc_server_loop_cur_msg->header.delayed = 1;
has_delayed = true; has_delayed = true;
break; break;

View File

@ -46,7 +46,7 @@ int free_session(struct Session* session)
void* session_alloc_buf(struct Session* session, int len) 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; return NULL;
} }
void* buf = (void*)((uintptr_t)session->buf + session->tail); 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) 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; return false;
} }
assert(session_forward_head(session, len) != -1); assert(session_forward_head(session, len) != -1);