diff options
author | Richard Jones <rjones@redhat.com> | 2009-11-30 13:55:04 +0000 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2009-12-04 15:06:23 +0000 |
commit | 50c239c045675c7480d88bf10857f3e85c3385d3 (patch) | |
tree | a4924a0f0ac0f495003fe960abfdd2297d57422a | |
parent | f02acc3d307f210d418a0177f374d02a4f8ccb5a (diff) | |
download | libguestfs-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.
-rw-r--r-- | daemon/proto.c | 17 |
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. */ |