Diff for /libaitrpc/src/aitrpc.c between versions 1.12 and 1.12.4.1

version 1.12, 2013/11/11 22:48:53 version 1.12.4.1, 2013/11/14 22:29:31
Line 223  rpc_Write(int sock, int type, int flags, sockaddr_t *  Line 223  rpc_Write(int sock, int type, int flags, sockaddr_t * 
   
         pfd.fd = sock;          pfd.fd = sock;
         pfd.events = POLLOUT;          pfd.events = POLLOUT;
        for (len = blen; len > 0; len -= ret, buf += ret) {
        if (type == SOCK_STREAM) {                if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || 
                for (len = blen; len > 0; len -= ret, buf += ret) {                                pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) {
                        if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 ||                         if (!ret)
                                        pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) {                                continue;
                                if (!ret)                        if (ret > 0)
                                        continue;                                rpc_SetErr(EPIPE, "Disconnected RPC session\n");
                                if (ret > 0)                        else
                                        rpc_SetErr(EPIPE, "Disconnected RPC session\n"); 
                                else 
                                        LOGERR; 
                                return -1; 
                        } else 
                                ret = send(sock, buf, len, flags); 
                        if (ret == -1) { 
                                 LOGERR;                                  LOGERR;
                                return -1;                        return -1;
                        } 
                 }                  }
                if (ret > -1)                if (type == SOCK_STREAM)
                        ret = blen - len;                        ret = send(sock, buf, len, flags);
        } else if (sa) {                else if (sa)
                do {                        ret = sendto(sock, buf, len, flags, &sa->sa, sa->sa.sa_len);
                        if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 ||                 else {
                                        pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) {                        rpc_SetErr(EINVAL, "Invalid argument(s)!");
                                if (!ret)                        return -1;
                                        continue;                }
                                if (ret > 0)                if (ret == -1) {
                                        rpc_SetErr(EPIPE, "Disconnected RPC session\n");                        LOGERR;
                                else                        return -1;
                                        LOGERR;                }
                                return -1; 
                        } else 
                                ret = sendto(sock, buf, blen, flags, &sa->sa, sa->sa.sa_len); 
                } while (0); 
        } else { 
                rpc_SetErr(EINVAL, "Invalid argument(s)!"); 
                return -1; 
         }          }
        if (ret == -1) {        ret = blen - len;
                LOGERR;        if (ret != blen) {
                return -1; 
        } else if (ret != blen) { 
                 rpc_SetErr(EPROCUNAVAIL, "RPC request, should be send %d bytes, "                  rpc_SetErr(EPROCUNAVAIL, "RPC request, should be send %d bytes, "
                                 "really sended %d bytes", len, ret);                                  "really sended %d bytes", len, ret);
                 return -1;                  return -1;

Removed from v.1.12  
changed lines
  Added in v.1.12.4.1


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