Diff for /libaitrpc/src/srv.c between versions 1.26.2.6 and 1.26.2.7

version 1.26.2.6, 2015/06/28 21:40:46 version 1.26.2.7, 2015/06/29 17:05:27
Line 183  txPacket(sched_task_t *task) Line 183  txPacket(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;
         int ret, estlen, wlen = sizeof(struct tagRPCCall);          int ret, estlen, wlen = sizeof(struct tagRPCCall);
         struct pollfd pfd;  
 #ifdef TCP_SESSION_TIMEOUT  #ifdef TCP_SESSION_TIMEOUT
         struct timespec ts = { DEF_RPC_TIMEOUT, 0 };          struct timespec ts = { DEF_RPC_TIMEOUT, 0 };
   
Line 236  txPacket(sched_task_t *task) Line 235  txPacket(sched_task_t *task)
 #endif  #endif
   
         /* send reply */          /* send reply */
        pfd.fd = TASK_FD(task);        ret = send(TASK_FD(task), buf, MIN(wlen, s->srv_netbuf), MSG_NOSIGNAL);
        pfd.events = POLLOUT;        if (ret == -1) {
        for (; wlen > 0; wlen -= ret, buf += ret) {                /* close connection */
                if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 ||                 schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT], 
                                pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) {                                TASK_ARG(task), 0, NULL, 0);
                        if (ret)                return NULL;
                                LOGERR; 
                        else 
                                rpc_SetErr(ETIMEDOUT, "Timeout reached! Client not respond"); 
                        /* close connection */ 
                        schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],  
                                        TASK_ARG(task), 0, NULL, 0); 
                        return NULL; 
                } 
                ret = send(TASK_FD(task), buf, MIN(wlen, s->srv_netbuf), MSG_NOSIGNAL); 
                if (ret == -1) { 
                        /* close connection */ 
                        schedEvent(TASK_ROOT(task), cbProto[s->srv_proto][CB_CLOSECLIENT],  
                                        TASK_ARG(task), 0, NULL, 0); 
                        return NULL; 
                } 
         }          }
   
         return NULL;          return NULL;

Removed from v.1.26.2.6  
changed lines
  Added in v.1.26.2.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>