X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fproto.c;h=238ee88c6b72595c397bbb2387c7036a35cfb055;hb=631faad97171d7c1238b2e413c663cf61476f440;hp=6b7a1877c3517089dc762c3bfd4cd2d198994376;hpb=40f7323134e058c0920caa18c667ea99a4c8b3e8;p=libguestfs.git diff --git a/daemon/proto.c b/daemon/proto.c index 6b7a187..238ee88 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 @@ -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);