version 1.20.4.2, 2013/11/13 12:18:43
|
version 1.20.4.3, 2013/11/14 13:37:08
|
Line 165 txPacket(sched_task_t *task)
|
Line 165 txPacket(sched_task_t *task)
|
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
int ret, estlen, wlen = sizeof(struct tagRPCCall); |
int ret, estlen, wlen = sizeof(struct tagRPCCall); |
struct pollfd pfd; |
struct pollfd pfd; |
|
#ifdef TCP_SESSION_TIMEOUT |
|
struct timespec ts = { DEF_RPC_TIMEOUT, 0 }; |
|
|
|
schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, TASK_ARG(task), NULL); |
|
schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], |
|
TASK_ARG(task), ts, TASK_ARG(task), 0); |
|
#endif |
|
|
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 305 rxPacket(sched_task_t *task)
|
Line 312 rxPacket(sched_task_t *task)
|
u_char *buf = AIT_GET_BUF(&c->cli_buf); |
u_char *buf = AIT_GET_BUF(&c->cli_buf); |
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
struct tagRPCCall *rpc = (struct tagRPCCall*) buf; |
struct pollfd pfd; |
struct pollfd pfd; |
|
#ifdef TCP_SESSION_TIMEOUT |
|
struct timespec ts = { DEF_RPC_TIMEOUT, 0 }; |
|
|
|
schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, TASK_ARG(task), NULL); |
|
schedTimer(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], |
|
TASK_ARG(task), ts, TASK_ARG(task), 0); |
|
#endif |
|
|
memset(buf, 0, sizeof(struct tagRPCCall)); |
memset(buf, 0, sizeof(struct tagRPCCall)); |
rlen = recv(TASK_FD(task), rpc, sizeof(struct tagRPCCall), MSG_PEEK); |
rlen = recv(TASK_FD(task), rpc, sizeof(struct tagRPCCall), MSG_PEEK); |
if (rlen < sizeof(struct tagRPCCall)) { |
if (rlen < sizeof(struct tagRPCCall)) { |
Line 387 acceptClients(sched_task_t *task)
|
Line 401 acceptClients(sched_task_t *task)
|
rpc_cli_t *c = NULL; |
rpc_cli_t *c = NULL; |
socklen_t salen = sizeof(sockaddr_t); |
socklen_t salen = sizeof(sockaddr_t); |
int sock; |
int sock; |
|
#ifdef TCP_SESSION_TIMEOUT |
|
struct timespec ts = { DEF_RPC_TIMEOUT, 0 }; |
|
#endif |
|
|
c = _allocClient(srv, NULL); |
c = _allocClient(srv, NULL); |
if (!c) { |
if (!c) { |
Line 408 acceptClients(sched_task_t *task)
|
Line 425 acceptClients(sched_task_t *task)
|
} else |
} else |
fcntl(c->cli_sock, F_SETFL, fcntl(c->cli_sock, F_GETFL) | O_NONBLOCK); |
fcntl(c->cli_sock, F_SETFL, fcntl(c->cli_sock, F_GETFL) | O_NONBLOCK); |
|
|
|
#ifdef TCP_SESSION_TIMEOUT |
|
/* armed timer for close stateless connection */ |
|
schedCancelby(TASK_ROOT(task), taskTIMER, CRITERIA_DATA, c, NULL); |
|
schedTimer(TASK_ROOT(task), cbProto[srv->srv_proto][CB_CLOSECLIENT], c, |
|
ts, c, 0); |
|
#endif |
schedRead(TASK_ROOT(task), cbProto[srv->srv_proto][CB_RXPACKET], c, |
schedRead(TASK_ROOT(task), cbProto[srv->srv_proto][CB_RXPACKET], c, |
c->cli_sock, NULL, 0); |
c->cli_sock, NULL, 0); |
end: |
end: |