X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Ftar.c;h=bb0e4830820f346991b10231b7e1ecbcd90f49f4;hp=03dc5121cf083e3e4cf4a48ca772c9bd77f9041b;hb=07f4b20ae959069fca41756b0dc103ec5fa99754;hpb=84fc760439e82e6b3616abd0d1f9bd7d7eb01ec0 diff --git a/daemon/tar.c b/daemon/tar.c index 03dc512..bb0e483 100644 --- a/daemon/tar.c +++ b/daemon/tar.c @@ -44,7 +44,7 @@ do_tar_in (const char *dir) if (!root_mounted || dir[0] != '/') { cancel_receive (); - reply_with_error ("tar-in: root must be mounted and path must be absolute"); + reply_with_error ("root must be mounted and path must be absolute"); return -1; } @@ -88,7 +88,8 @@ do_tar_in (const char *dir) if (pclose (fp) != 0) { err = errno; - cancel_receive (); + if (r == -1) /* if r == 0, file transfer ended already */ + cancel_receive (); errno = err; reply_with_perror ("pclose: %s", dir); return -1; @@ -149,7 +150,9 @@ do_tar_out (const char *dir) return -1; } - send_file_end (0); /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ + return -1; + return 0; } @@ -163,7 +166,7 @@ do_tgz_in (const char *dir) if (!root_mounted || dir[0] != '/') { cancel_receive (); - reply_with_error ("tar-in: root must be mounted and path must be absolute"); + reply_with_error ("root must be mounted and path must be absolute"); return -1; } @@ -207,7 +210,8 @@ do_tgz_in (const char *dir) if (pclose (fp) != 0) { err = errno; - cancel_receive (); + if (r == -1) /* if r == 0, file transfer ended already */ + cancel_receive (); errno = err; reply_with_perror ("pclose: %s", dir); return -1; @@ -268,6 +272,8 @@ do_tgz_out (const char *dir) return -1; } - send_file_end (0); /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ + return -1; + return 0; }