Revision fc19f8a0 nbd.c

b/nbd.c
102 102
            len = send(fd, buffer + offset, size - offset, 0);
103 103
        }
104 104

  
105
        if (len == -1)
105
        if (len < 0) {
106 106
            errno = socket_error();
107 107

  
108
        /* recoverable error */
109
        if (len == -1 && (errno == EAGAIN || errno == EINTR)) {
110
            continue;
108
            /* recoverable error */
109
            if (errno == EINTR || errno == EAGAIN) {
110
                continue;
111
            }
112

  
113
            /* unrecoverable error */
114
            return 0;
111 115
        }
112 116

  
113 117
        /* eof */
......
115 119
            break;
116 120
        }
117 121

  
118
        /* unrecoverable error */
119
        if (len == -1) {
120
            return 0;
121
        }
122

  
123 122
        offset += len;
124 123
    }
125 124

  
......
364 363
{
365 364
    TRACE("Setting NBD socket");
366 365

  
367
    if (ioctl(fd, NBD_SET_SOCK, csock) == -1) {
366
    if (ioctl(fd, NBD_SET_SOCK, csock) < 0) {
368 367
        int serrno = errno;
369 368
        LOG("Failed to set NBD socket");
370 369
        errno = serrno;
......
373 372

  
374 373
    TRACE("Setting block size to %lu", (unsigned long)blocksize);
375 374

  
376
    if (ioctl(fd, NBD_SET_BLKSIZE, blocksize) == -1) {
375
    if (ioctl(fd, NBD_SET_BLKSIZE, blocksize) < 0) {
377 376
        int serrno = errno;
378 377
        LOG("Failed setting NBD block size");
379 378
        errno = serrno;
......
382 381

  
383 382
        TRACE("Setting size to %zd block(s)", (size_t)(size / blocksize));
384 383

  
385
    if (ioctl(fd, NBD_SET_SIZE_BLOCKS, size / blocksize) == -1) {
384
    if (ioctl(fd, NBD_SET_SIZE_BLOCKS, size / blocksize) < 0) {
386 385
        int serrno = errno;
387 386
        LOG("Failed setting size (in blocks)");
388 387
        errno = serrno;
......
430 429
    TRACE("Doing NBD loop");
431 430

  
432 431
    ret = ioctl(fd, NBD_DO_IT);
433
    if (ret == -1 && errno == EPIPE) {
432
    if (ret < 0 && errno == EPIPE) {
434 433
        /* NBD_DO_IT normally returns EPIPE when someone has disconnected
435 434
         * the socket via NBD_DISCONNECT.  We do not want to return 1 in
436 435
         * that case.
......
714 713

  
715 714
    if (!len) {
716 715
        rc = nbd_send_reply(csock, reply);
717
        if (rc == -1) {
716
        if (rc < 0) {
718 717
            rc = -errno;
719 718
        }
720 719
    } else {
721 720
        socket_set_cork(csock, 1);
722 721
        rc = nbd_send_reply(csock, reply);
723
        if (rc != -1) {
722
        if (rc >= 0) {
724 723
            ret = qemu_co_send(csock, req->data, len);
725 724
            if (ret != len) {
726 725
                errno = EIO;
727 726
                rc = -1;
728 727
            }
729 728
        }
730
        if (rc == -1) {
729
        if (rc < 0) {
731 730
            rc = -errno;
732 731
        }
733 732
        socket_set_cork(csock, 0);
......
746 745
    ssize_t rc;
747 746

  
748 747
    client->recv_coroutine = qemu_coroutine_self();
749
    if (nbd_receive_request(csock, request) == -1) {
748
    if (nbd_receive_request(csock, request) < 0) {
750 749
        rc = -EIO;
751 750
        goto out;
752 751
    }
......
860 859
            }
861 860
        }
862 861

  
863
        if (nbd_co_send_reply(req, &reply, 0) < 0)
862
        if (nbd_co_send_reply(req, &reply, 0) < 0) {
864 863
            goto out;
864
        }
865 865
        break;
866 866
    case NBD_CMD_DISC:
867 867
        TRACE("Request type is DISCONNECT");
......
875 875
            LOG("flush failed");
876 876
            reply.error = -ret;
877 877
        }
878

  
879
        if (nbd_co_send_reply(req, &reply, 0) < 0)
878
        if (nbd_co_send_reply(req, &reply, 0) < 0) {
880 879
            goto out;
880
        }
881 881
        break;
882 882
    case NBD_CMD_TRIM:
883 883
        TRACE("Request type is TRIM");
......
887 887
            LOG("discard failed");
888 888
            reply.error = -ret;
889 889
        }
890
        if (nbd_co_send_reply(req, &reply, 0) < 0)
890
        if (nbd_co_send_reply(req, &reply, 0) < 0) {
891 891
            goto out;
892
        }
892 893
        break;
893 894
    default:
894 895
        LOG("invalid request type (%u) received", request.type);
895 896
    invalid_request:
896 897
        reply.error = -EINVAL;
897 898
    error_reply:
898
        if (nbd_co_send_reply(req, &reply, 0) == -1)
899
        if (nbd_co_send_reply(req, &reply, 0) < 0) {
899 900
            goto out;
901
        }
900 902
        break;
901 903
    }
902 904

  
......
939 941
                          void (*close)(NBDClient *))
940 942
{
941 943
    NBDClient *client;
942
    if (nbd_send_negotiate(csock, exp->size, exp->nbdflags) == -1) {
944
    if (nbd_send_negotiate(csock, exp->size, exp->nbdflags) < 0) {
943 945
        return NULL;
944 946
    }
945 947
    client = g_malloc0(sizeof(NBDClient));

Also available in: Unified diff