summaryrefslogtreecommitdiffstats
path: root/daemon/proto.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-11-30 13:55:04 +0000
committerRichard Jones <rjones@redhat.com>2009-12-04 15:06:23 +0000
commit50c239c045675c7480d88bf10857f3e85c3385d3 (patch)
treea4924a0f0ac0f495003fe960abfdd2297d57422a /daemon/proto.c
parentf02acc3d307f210d418a0177f374d02a4f8ccb5a (diff)
downloadlibguestfs-50c239c045675c7480d88bf10857f3e85c3385d3.tar.gz
libguestfs-50c239c045675c7480d88bf10857f3e85c3385d3.tar.xz
libguestfs-50c239c045675c7480d88bf10857f3e85c3385d3.zip
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.
Diffstat (limited to 'daemon/proto.c')
-rw-r--r--daemon/proto.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/daemon/proto.c b/daemon/proto.c
index 2231037b..e3ff9e9d 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. */