version 1.17.6.3, 2013/08/22 13:09:53
|
version 1.17.6.4, 2013/08/22 13:13:16
|
Line 380 txUDPPacket(sched_task_t *task)
|
Line 380 txUDPPacket(sched_task_t *task)
|
rpc_cli_t *c = TASK_ARG(task); |
rpc_cli_t *c = TASK_ARG(task); |
rpc_srv_t *s = c->cli_parent; |
rpc_srv_t *s = c->cli_parent; |
rpc_func_t *f = NULL; |
rpc_func_t *f = NULL; |
u_char buf[USHRT_MAX] = { 0 }; | u_char *buf = AIT_GET_BUF(&c->cli_buf); |
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
int ret, wlen = sizeof(struct tagRPCCall); |
int ret, wlen = sizeof(struct tagRPCCall); |
struct timespec ts = { DEF_RPC_TIMEOUT, 0 }; |
struct timespec ts = { DEF_RPC_TIMEOUT, 0 }; |
Line 389 txUDPPacket(sched_task_t *task)
|
Line 389 txUDPPacket(sched_task_t *task)
|
schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], |
schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], |
TASK_ARG(task), ts, TASK_ARG(task), 0); |
TASK_ARG(task), ts, TASK_ARG(task), 0); |
|
|
/* copy RPC header */ |
|
memcpy(buf, TASK_DATA(task), wlen); |
|
|
|
if (rpc->call_argc) { |
if (rpc->call_argc) { |
f = rpc_srv_getCall(s, ntohs(rpc->call_tag)); |
f = rpc_srv_getCall(s, ntohs(rpc->call_tag)); |
if (!f) { |
if (!f) { |
Line 402 txUDPPacket(sched_task_t *task)
|
Line 399 txUDPPacket(sched_task_t *task)
|
} else { |
} else { |
rpc->call_argc = htons(array_Size(RPC_RETVARS(c))); |
rpc->call_argc = htons(array_Size(RPC_RETVARS(c))); |
/* Go Encapsulate variables */ |
/* Go Encapsulate variables */ |
ret = ait_vars2buffer(buf + wlen, sizeof buf - wlen, RPC_RETVARS(c)); | ret = ait_vars2buffer(buf + wlen, AIT_LEN(&c->cli_buf) - wlen, |
| RPC_RETVARS(c)); |
/* Free return values */ |
/* Free return values */ |
ait_freeVars(&c->cli_vars); |
ait_freeVars(&c->cli_vars); |
if (ret == -1) { |
if (ret == -1) { |