--- libaitrpc/src/aitrpc.c 2015/06/28 21:40:45 1.18.2.1 +++ libaitrpc/src/aitrpc.c 2015/07/22 20:01:46 1.20 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitrpc.c,v 1.18.2.1 2015/06/28 21:40:45 misho Exp $ +* $Id: aitrpc.c,v 1.20 2015/07/22 20:01:46 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -51,25 +51,6 @@ SUCH DAMAGE. int rpc_Errno; char rpc_Error[STRSIZ]; -inline int -rpc_funcs_cmp(struct tagRPCFunc *a, struct tagRPCFunc *b) -{ - int ret; - - assert(a && b); - - ret = AIT_KEY(&a->func_name) - AIT_KEY(&b->func_name); - - if (ret < 0) - return -1; - else if (ret > 0) - return 1; - - return ret; -} - -AVL_GENERATE(tagRPCFuncs, tagRPCFunc, func_node, rpc_funcs_cmp); - #pragma GCC visibility pop // rpc_GetErrno() Get error code of last operation @@ -170,7 +151,7 @@ try2read: pfd.events = POLLIN | POLLPRI; memset(buf, 0, blen); memset(&sa2, 0, sizeof sa2); - salen = sa2.ss.ss_len = sizeof(sockaddr_t); + salen = sa2.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff); if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { if (ret) @@ -377,4 +358,16 @@ rpc_Write(int sock, int type, int flags, sockaddr_t * } return ret; +} + +/* + * rpc_pktFreeSpace() - Get free space for payload into RPC packet + * + * @c = RPC client + * return: remains free bytes from packet + */ +size_t +rpc_pktFreeSpace(rpc_cli_t * __restrict c) +{ + return (sizeof(struct tagRPCCall) + ait_resideVars(RPC_RETVARS(c))); }