--- libaitrpc/src/srv.c 2024/02/26 18:07:32 1.30.2.9 +++ libaitrpc/src/srv.c 2024/02/26 18:25:32 1.30.2.10 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.30.2.9 2024/02/26 18:07:32 misho Exp $ +* $Id: srv.c,v 1.30.2.10 2024/02/26 18:25:32 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -303,21 +303,6 @@ execCall(sched_task_t *task) taskExit(task, NULL); } -int -rpc_srv_Return(sched_root_task_t *root, rpc_cli_t *c) -{ - rpc_srv_t *s = c->cli_parent; - u_char *buf = AIT_GET_BUF(&c->cli_buf); - struct tagRPCCall *rpc = (struct tagRPCCall*) buf; - - if (!RPC_CHK_NOREPLY(rpc)) { - rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); - schedWrite(root, cbProto[s->srv_proto][CB_TXPACKET], c, c->cli_sock, rpc, 0); - } - - return rpc->call_argc; -} - static void * rxPacket(sched_task_t *task) { @@ -1981,4 +1966,26 @@ rpc_srv_initServerExt(u_char InstID, int netBuf, int f rpc_register_srvPing(srv); return srv; +} + +/* + * rpc_srv_Return() - Prepare IPC return answer to RPC client + * + * @c = RPC client + * return: number of arguments in response + */ +int +rpc_srv_Return(rpc_cli_t *c) +{ + rpc_srv_t *s = c->cli_parent; + u_char *buf = AIT_GET_BUF(&c->cli_buf); + struct tagRPCCall *rpc = (struct tagRPCCall*) buf; + + if (!RPC_CHK_NOREPLY(rpc)) { + rpc->call_argc = (u_char) array_Size(RPC_RETVARS(c)); + schedWrite(s->srv_root, cbProto[s->srv_proto][CB_TXPACKET], c, c->cli_sock, rpc, 0); + } else + rpc->call_argc ^= rpc->call_argc; + + return rpc->call_argc; }