[Libguestfs] [PATCH 1/5] daemon error handling: Clear errno before calling stub functions.

Richard W.M. Jones rjones at redhat.com
Mon Nov 30 14:42:30 UTC 2009


-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw
-------------- next part --------------
>From bad45d57b816c3734bcbf5f92a707fc1ff112c1c Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones at redhat.com>
Date: Mon, 30 Nov 2009 13:55:04 +0000
Subject: [PATCH 1/5] daemon error handling: Clear errno before calling stub functions.

This just ensures that we accurately report errors, even if our
error path code doesn't set errno.  We won't end up with a bogus
errno left over from a previous call.
---
 daemon/proto.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/daemon/proto.c b/daemon/proto.c
index 2231037..e3ff9e9 100644
--- a/daemon/proto.c
+++ b/daemon/proto.c
@@ -29,6 +29,10 @@
 #include <rpc/types.h>
 #include <rpc/xdr.h>
 
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
 #include "c-ctype.h"
 #include "ignore-value.h"
 
@@ -137,9 +141,20 @@ main_loop (int _sock)
       goto cont;
     }
 
-    /* Now start to process this message. */
     proc_nr = hdr.proc;
     serial = hdr.serial;
+
+    /* Clear errors before we call the stub functions.  This is just
+     * to ensure that we can accurately report errors in cases where
+     * error handling paths don't set errno correctly.
+     */
+    errno = 0;
+#ifdef WIN32
+    SetLastError (0);
+    WSASetLastError (0);
+#endif
+
+    /* Now start to process this message. */
     dispatch_incoming_message (&xdr);
     /* Note that dispatch_incoming_message will also send a reply. */
 
-- 
1.6.5.2



More information about the Libguestfs mailing list