X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fproto.c;h=431f219a4cb9b854740cadcc6891fbee791518f8;hp=709f978fe1e59114e3bc2277da13bd58c03abf67;hb=5ccae24e06c52977f8b71d00c19f1100c1fa9c4c;hpb=2f1a50d81671810256dce0852e6b1e0810ac44af diff --git a/daemon/proto.c b/daemon/proto.c index 709f978..431f219 100644 --- a/daemon/proto.c +++ b/daemon/proto.c @@ -45,7 +45,7 @@ main_loop (int _sock) XDR xdr; char *buf; char lenbuf[4]; - unsigned len; + uint32_t len; struct guestfs_message_header hdr; struct timeval start_t, end_t; int64_t start_us, end_us, elapsed_us; @@ -288,7 +288,7 @@ reply (xdrproc_t xdrp, char *ret) fprintf (stderr, "xwrite failed\n"); exit (1); } - if (xwrite (sock, buf, len) == len) { + if (xwrite (sock, buf, len) == -1) { fprintf (stderr, "xwrite failed\n"); exit (1); } @@ -462,7 +462,7 @@ check_for_library_cancellation (void) return 1; } -void +int send_file_end (int cancel) { guestfs_chunk chunk; @@ -470,7 +470,7 @@ send_file_end (int cancel) chunk.cancel = cancel; chunk.data.data_len = 0; chunk.data.data_val = NULL; - send_chunk (&chunk); + return send_chunk (&chunk); } static int @@ -495,8 +495,12 @@ send_chunk (const guestfs_chunk *chunk) xdr_uint32_t (&xdr, &len); xdr_destroy (&xdr); - (void) xwrite (sock, lenbuf, 4); - (void) xwrite (sock, buf, len); + int err = (xwrite (sock, lenbuf, 4) == 0 + && xwrite (sock, buf, len) == 0 ? 0 : -1); + if (err) { + fprintf (stderr, "send_chunk: write failed\n"); + exit (1); + } - return 0; + return err; }