--- libaitrpc/src/cli.c 2020/06/25 19:11:00 1.28 +++ libaitrpc/src/cli.c 2024/03/20 17:32:31 1.29 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: cli.c,v 1.28 2020/06/25 19:11:00 misho Exp $ +* $Id: cli.c,v 1.29 2024/03/20 17:32:31 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2019 +Copyright 2004 - 2024 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -417,7 +417,7 @@ rpc_pkt_Receive(int sock, int type, sockaddr_t * __res * @sess = RPC session info * @tag = Function tag for execution * @vars = Function argument array of values, may be NULL - * @noreply = We not want RPC reply + * @noreply = >0 We not want RPC reply, -1 IPC request with reply * @nocrc = Without CRC calculation * @seq = Sign packet with seq.no * return: -1 error or != -1 prepared bytes into packet @@ -453,7 +453,7 @@ rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_sess_t rpc->call_argc = (u_char) array_Size(vars); /* set reply */ - rpc->call_req.flags = (uint64_t) htonl(noreply ? RPC_NOREPLY : RPC_REPLY); + rpc->call_req.flags = (uint64_t) htonl((noreply > 0) ? RPC_NOREPLY : RPC_REPLY); if (array_Size(vars)) { /* marshaling variables */ @@ -467,7 +467,7 @@ rpc_pkt_Request(ait_val_t * __restrict pkt, rpc_sess_t /* total packet length */ rpc->call_len = htonl(len); - rpc->call_io = RPC_REQ; + rpc->call_io = (noreply == -1) ? RPC_IPC : RPC_REQ; /* sign packet */ rpc->call_seq = htonl(seq); @@ -564,7 +564,7 @@ rpc_pkt_Replay(ait_val_t * __restrict pkt, rpc_sess_t * rpc_cli_execCall() - Execute RPC call * * @cli = RPC Client session - * @noreply = We not want RPC reply + * @noreply = >0 We not want RPC reply, -1 IPC request with reply * @tag = Function tag for execution * @in_vars = IN function argument array of values, may be NULL * @out_vars = OUT returned array of rpc values, if !=NULL must be free after use with ait_freeVars() @@ -596,10 +596,10 @@ rpc_cli_execCall(rpc_cli_t *cli, int noreply, u_short if ((wlen = rpc_pkt_Send(cli->cli_sock, cli->cli_id, &cli->cli_sa, &cli->cli_buf, wlen)) == -1) return -1; - if (!wlen) /* closed rpc connection */ + if (!wlen) /* closed rpc connection */ return 1; - if (noreply) /* we not want reply */ + if (noreply > 0) /* we not want reply */ return 0; if ((wlen = rpc_pkt_Receive(cli->cli_sock, cli->cli_id, &cli->cli_sa,