|
|
| version 1.2.2.2, 2011/07/14 01:25:11 | version 1.3, 2011/08/18 15:08:03 |
|---|---|
| Line 52 rpc_srv_dispatchCall(void *arg) | Line 52 rpc_srv_dispatchCall(void *arg) |
| rpc_cli_t *c = arg; | rpc_cli_t *c = arg; |
| rpc_srv_t *s; | rpc_srv_t *s; |
| rpc_val_t *vals = NULL, *v = NULL; | rpc_val_t *vals = NULL, *v = NULL; |
| rpc_func_t *f; | rpc_func_t *f = NULL; |
| struct tagRPCCall *rpc; | struct tagRPCCall *rpc; |
| struct tagRPCRet *rrpc; | struct tagRPCRet *rrpc; |
| rpc_sess_t ses = { 0 }; | |
| fd_set fds; | fd_set fds; |
| u_char buf[BUFSIZ], *data; | u_char buf[BUFSIZ], *data; |
| int ret, argc = 0, Limit = 0; | int ret, argc = 0, Limit = 0; |
| Line 147 rpc_srv_dispatchCall(void *arg) | Line 148 rpc_srv_dispatchCall(void *arg) |
| argc = 0; | argc = 0; |
| vals = NULL; | vals = NULL; |
| memcpy(&ses, &rpc->call_session, sizeof ses); | |
| if (!(f = rpc_srv_getCall(s, rpc->call_tag, rpc->call_hash))) { | if (!(f = rpc_srv_getCall(s, rpc->call_tag, rpc->call_hash))) { |
| rpc_SetErr(EINVAL, "Error:: call not found into RPC server ...\n"); | rpc_SetErr(EINVAL, "Error:: call not found into RPC server ...\n"); |
| ret = -6; | ret = -6; |
| Line 155 rpc_srv_dispatchCall(void *arg) | Line 157 rpc_srv_dispatchCall(void *arg) |
| ret = -9; | ret = -9; |
| else | else |
| argc = rpc_srv_getValsCall(f, &vals); | argc = rpc_srv_getValsCall(f, &vals); |
| makeReply: | makeReply: |
| memset(buf, 0, BUFSIZ); | memset(buf, 0, BUFSIZ); |
| rrpc = (struct tagRPCRet*) buf; | rrpc = (struct tagRPCRet*) buf; |
| Limit = sizeof(struct tagRPCRet); | Limit = sizeof(struct tagRPCRet); |
| memcpy(&rrpc->ret_session, &rpc->call_session, sizeof rrpc->ret_session); | memcpy(&rrpc->ret_session, &ses, sizeof(rpc_sess_t)); |
| rrpc->ret_tag = rpc->call_tag; | rrpc->ret_tag = rpc->call_tag; |
| rrpc->ret_hash = rpc->call_hash; | rrpc->ret_hash = rpc->call_hash; |
| rrpc->ret_errno = rpc_Errno; | rrpc->ret_errno = rpc_Errno; |
| Line 173 makeReply: | Line 174 makeReply: |
| if (argc * sizeof(rpc_val_t) > BUFSIZ - Limit) { | if (argc * sizeof(rpc_val_t) > BUFSIZ - Limit) { |
| for (i = 0; i < argc; i++) | for (i = 0; i < argc; i++) |
| RPC_FREE_VAL(&vals[i]); | RPC_FREE_VAL(&vals[i]); |
| free(vals); | rpc_srv_freeValsCall(f); |
| vals = NULL; | vals = NULL; |
| argc = 0; | argc = 0; |
| ret = -7; | ret = -7; |
| Line 221 makeReply: | Line 222 makeReply: |
| } | } |
| RPC_FREE_VAL(&vals[i]); | RPC_FREE_VAL(&vals[i]); |
| free(vals); | |
| vals = NULL; | |
| } | } |
| rpc_srv_freeValsCall(f); | |
| vals = NULL; | |
| argc = 0; | |
| } | } |
| if ((ret = send(c->cli_sock, buf, Limit, 0)) == -1) { | if ((ret = send(c->cli_sock, buf, Limit, 0)) == -1) { |