X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fupload.c;h=a1a37aee85fd7d10141c4c18b89d32904ae790b1;hb=168fd4ad5d1e5da93e11388095d41aaa8f804ceb;hp=e28bf961c78add1cd5f47f6d2ee7c83c47bf3cf0;hpb=8022d46e5e2d9c3ab664ace6c9f185976e34dc20;p=libguestfs.git diff --git a/daemon/upload.c b/daemon/upload.c index e28bf96..a1a37ae 100644 --- a/daemon/upload.c +++ b/daemon/upload.c @@ -70,7 +70,7 @@ upload (const char *filename, int flags, int64_t offset) err = errno; r = cancel_receive (); errno = err; - if (r != -2) reply_with_perror ("%s", filename); + reply_with_perror ("%s", filename); return -1; } @@ -79,7 +79,7 @@ upload (const char *filename, int flags, int64_t offset) err = errno; r = cancel_receive (); errno = err; - if (r != -2) reply_with_perror ("lseek: %s", filename); + reply_with_perror ("lseek: %s", filename); return -1; } } @@ -89,23 +89,21 @@ upload (const char *filename, int flags, int64_t offset) err = errno; r = cancel_receive (); errno = err; - if (r != -2) reply_with_error ("write error: %s", filename); + reply_with_error ("write error: %s", filename); close (data.fd); return -1; } if (r == -2) { /* cancellation from library */ + /* This error is ignored by the library since it initiated the + * cancel. Nevertheless we must send an error reply here. + */ + reply_with_error ("file upload cancelled"); close (data.fd); - /* Do NOT send any error. */ return -1; } if (close (data.fd) == -1) { - err = errno; - if (r == -1) /* if r == 0, file transfer ended already */ - r = cancel_receive (); - errno = err; - if (r != -2) - reply_with_perror ("close: %s", filename); + reply_with_perror ("close: %s", filename); return -1; }