|
|
| version 1.18.2.2, 2013/08/23 13:34:52 | version 1.20.4.1, 2013/11/13 12:18:14 |
|---|---|
| Line 271 execCall(sched_task_t *task) | Line 271 execCall(sched_task_t *task) |
| argc = RPC_CHK_NOREPLY(rpc); | argc = RPC_CHK_NOREPLY(rpc); |
| rpc->call_rep.ret = RPC_ERROR(rpc_srv_execCall(c, rpc, f->func_name, arr)); | rpc->call_rep.ret = RPC_ERROR(rpc_srv_execCall(c, rpc, f->func_name, arr)); |
| if (rpc->call_rep.ret == htonl(-1)) { | if (rpc->call_rep.ret == htonl(-1)) { |
| rpc->call_rep.eno = RPC_ERROR(errno); | if (!rpc->call_rep.eno) { |
| LOGERR; | |
| rpc->call_rep.eno = RPC_ERROR(rpc_Errno); | |
| } | |
| rpc->call_argc ^= rpc->call_argc; | rpc->call_argc ^= rpc->call_argc; |
| } else { | } else { |
| rpc->call_rep.eno ^= rpc->call_rep.eno; | rpc->call_rep.eno ^= rpc->call_rep.eno; |
| Line 383 acceptClients(sched_task_t *task) | Line 386 acceptClients(sched_task_t *task) |
| rpc_srv_t *srv = TASK_ARG(task); | rpc_srv_t *srv = TASK_ARG(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; | |
| c = _allocClient(srv, NULL); | c = _allocClient(srv, NULL); |
| if (!c) | if (!c) { |
| EVERBOSE(1, "RPC client quota exceeded! Connection will be shutdown!\n"); | |
| if ((sock = accept(TASK_FD(task), NULL, NULL)) != -1) { | |
| shutdown(sock, SHUT_RDWR); | |
| close(sock); | |
| } | |
| goto end; | goto end; |
| } | |
| /* accept client */ | /* accept client */ |
| c->cli_sock = accept(TASK_FD(task), &c->cli_sa.sa, &salen); | c->cli_sock = accept(TASK_FD(task), &c->cli_sa.sa, &salen); |
| Line 709 acceptBLOBClients(sched_task_t *task) | Line 719 acceptBLOBClients(sched_task_t *task) |
| rpc_cli_t *c = NULL; | rpc_cli_t *c = NULL; |
| register int i; | register int i; |
| socklen_t salen = sizeof(sockaddr_t); | socklen_t salen = sizeof(sockaddr_t); |
| int sock; | |
| #ifdef TCP_NOPUSH | #ifdef TCP_NOPUSH |
| int n = 1; | int n = 1; |
| #endif | #endif |
| Line 716 acceptBLOBClients(sched_task_t *task) | Line 727 acceptBLOBClients(sched_task_t *task) |
| /* check free slots for connect */ | /* check free slots for connect */ |
| for (i = 0; i < array_Size(srv->srv_blob.clients) && | for (i = 0; i < array_Size(srv->srv_blob.clients) && |
| (c = array(srv->srv_blob.clients, i, rpc_cli_t*)); i++); | (c = array(srv->srv_blob.clients, i, rpc_cli_t*)); i++); |
| if (c) /* no more free slots! */ | if (c) { /* no more free slots! */ |
| EVERBOSE(1, "RPC client quota exceeded! Connection will be shutdown!\n"); | |
| if ((sock = accept(TASK_FD(task), NULL, NULL)) != -1) { | |
| shutdown(sock, SHUT_RDWR); | |
| close(sock); | |
| } | |
| goto end; | goto end; |
| } | |
| c = e_malloc(sizeof(rpc_cli_t)); | c = e_malloc(sizeof(rpc_cli_t)); |
| if (!c) { | if (!c) { |
| LOGERR; | LOGERR; |