X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fbase64.c;h=8aca5b714b27317530b2008be31023b8233fb730;hp=89bf4379d884535f5c755e178fdffc0463f54ef2;hb=7f16c346bbeba2f2fe3c31ccb85158178a284d84;hpb=c3a68961859a617f7c574c528d0f8ac1fdbb53e1 diff --git a/daemon/base64.c b/daemon/base64.c index 89bf437..8aca5b7 100644 --- a/daemon/base64.c +++ b/daemon/base64.c @@ -23,7 +23,7 @@ #include #include -#include "../src/guestfs_protocol.h" +#include "guestfs_protocol.h" #include "daemon.h" #include "actions.h" @@ -42,7 +42,7 @@ do_base64_in (const char *file) FILE *fp; char *cmd; - if (asprintf_nowarn (&cmd, "base64 -d > %R", file) == -1) { + if (asprintf_nowarn (&cmd, "base64 -d -i > %R", file) == -1) { err = errno; cancel_receive (); errno = err; @@ -77,14 +77,15 @@ do_base64_in (const char *file) 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"); pclose (fp); - /* Do NOT send any error. */ return -1; } if (pclose (fp) != 0) { - if (r == -1) /* if r == 0, file transfer ended already */ - cancel_receive (); reply_with_error ("base64 subcommand failed on file: %s", file); return -1; }