X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fproto.c;h=bbba2054e948010997c081c87c1f0bd76fdf0e3a;hp=6b7a1877c3517089dc762c3bfd4cd2d198994376;hb=HEAD;hpb=40f7323134e058c0920caa18c667ea99a4c8b3e8 diff --git a/daemon/proto.c b/daemon/proto.c index 6b7a187..bbba205 100644 --- a/daemon/proto.c +++ b/daemon/proto.c @@ -1,5 +1,5 @@ /* libguestfs - the guestfsd daemon - * Copyright (C) 2009 Red Hat Inc. + * Copyright (C) 2009-2011 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -88,12 +88,6 @@ main_loop (int _sock) sock = _sock; for (;;) { - /* Most common errors are leaked memory and leaked file descriptors, - * so run this between each command: - */ - if (verbose && 0) - ignore_value (system ("ls -l /proc/self/fd")); - /* Read the length word. */ if (xread (sock, lenbuf, 4) == -1) exit (EXIT_FAILURE); @@ -107,6 +101,12 @@ main_loop (int _sock) "guestfsd: main_loop: new request, len 0x%" PRIx32 "\n", len); + /* Cancellation sent from the library and received after the + * previous request has finished processing. Just ignore it. + */ + if (len == GUESTFS_CANCEL_FLAG) + continue; + if (len > GUESTFS_MESSAGE_MAX) { fprintf (stderr, "guestfsd: incoming message is too long (%u bytes)\n", len);