version 1.30.2.6, 2024/02/26 13:30:59
|
version 1.30.2.7, 2024/02/26 16:56:22
|
Line 302 execCall(sched_task_t *task)
|
Line 302 execCall(sched_task_t *task)
|
taskExit(task, NULL); |
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, NULL, 0); |
|
} |
|
|
|
return rpc->call_argc; |
|
} |
|
|
static void * |
static void * |
rxPacket(sched_task_t *task) |
rxPacket(sched_task_t *task) |
{ |
{ |
Line 323 rxPacket(sched_task_t *task)
|
Line 338 rxPacket(sched_task_t *task)
|
|
|
/* prepare rx */ |
/* prepare rx */ |
len = recv(TASK_FD(task), &b, sizeof b, MSG_PEEK); |
len = recv(TASK_FD(task), &b, sizeof b, MSG_PEEK); |
if (len == sizeof b) | if (len < 1) { |
| /* close connection */ |
| schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], |
| TASK_ARG(task), 0, NULL, 0); |
| taskExit(task, NULL); |
| } else if (len == sizeof b) |
rlen = ntohl(b.call_len); |
rlen = ntohl(b.call_len); |
|
else |
|
goto end; |
|
|
rlen = recv(TASK_FD(task), buf, rlen, 0); |
rlen = recv(TASK_FD(task), buf, rlen, 0); |
if (rlen == -1) { |
if (rlen == -1) { |
Line 390 err:
|
Line 412 err:
|
if (!noreply && (rpc->call_io & RPC_REQ)) |
if (!noreply && (rpc->call_io & RPC_REQ)) |
schedWrite(TASK_ROOT(task), cbProto[s->srv_proto][CB_TXPACKET], |
schedWrite(TASK_ROOT(task), cbProto[s->srv_proto][CB_TXPACKET], |
TASK_ARG(task), TASK_FD(task), rpc, len); |
TASK_ARG(task), TASK_FD(task), rpc, len); |
| end: |
/* lets get next packet */ |
/* lets get next packet */ |
schedReadSelf(task); |
schedReadSelf(task); |
taskExit(task, NULL); |
taskExit(task, NULL); |